在香橙派中安装Gentoo
序
对于树莓派那种开发板,总有一种技痒难耐的感觉。但是自己又不需要进行开发,也不需要做什么硬件驱动搭建项目。但是对于他的简洁和低功耗,还是有点心动。以下是尝试安装Gentoo系统的记录,包括了安装步骤以及结果。
作为入门,购入了国产平替,香橙派zero3版本。硬件信息如下:
CPU | 全志H618高性能四核Cortex-A53处理器 1.5GHz |
---|---|
GPU | • Mali G31 MP2 • 支持OpenGL ES 1.0/2.0/3.2,OpenCL 2.0,Vulkan 1.1 |
内存 | 1GB/1.5GB/2GB/4GB LPDDR4 |
板载存储 | 16MB SPI Flash |
电源管理 | AXP313A |
板载WiFi+蓝牙 | 支持WiFi5和蓝牙5.0 |
网络 | 10M/100M/1000M以太网接口 |
音频输入、输出 | 13Pin扩展端口支持2路输出1路输入 |
视频输出 | • Micro HDMI支持4K@60fps |
• TV-Out:13Pin支持1路TV CVBS 输出 | |
UART | 3Pin Debug UART |
USB | USB 2.0 x 3(其中两个从扩展板引出) |
SD卡接口 | Micro SD卡接口 |
扩展接口 | • 26Pin GPIO接口 • 13Pin GPIO接口 |
电源输入 5V3A,Type-c接口 |
方案准备
总共有三种方案
-
在本地计算机中进行烧录SD卡,根据树莓派的开发教程,从头制作,然后插入开发板中。此方案难度最大,同时也作为必作方案。即使其他方案成功,也要对该方案进行完善直到成功。
-
最简单的一种,直接烧录其他镜像,然后通过更改镜像文件,完成系统安装。这种方法应该是最简洁的,但是缺失了很多乐趣,暂不实行。
-
使用Gentoo提供的启动镜像进行启动,然后按照Gentoo的安装方式,根据方案1中的相关知识,进行修改完善。这种方式最Gentoo,也是我最想尝试的一种方式。与方案1相比,这种方式也可能会减少
交叉编译
的步骤。可能对于我来说更好理解。
之所以先进行方案1,是因为本地计算机的性能更强,运行、编译速度更快。
物品准备
硬件
- tf卡
- U盘(制作方案3中的Gentoo启动工具)
- 开发板
软件
-
对于方案1:
Orangepizero3_1.0.2_debian_bookworm_server_linux6.1.31.img
stage3-arm64-openrc-20231112T233159Z.tar.xz
portage-latest.tar.xz
-
对于方案2: 与方案1一致,只是更加简单。
-
对于方案3:
install-arm64-minimal-20231112T233159Z.iso
- 其他文件将会从网络中获取
安装记录
验证系统
首先查看是否可用。先烧录基础系统进入到tf卡中,查看开发板是否能用。
sudo dd if=./Orangepizero3_1.0.2_debian_bookworm_server_linux6.1.31.img of=/dev/sdb
用户名和密码分别为orangepi/root
, orangepi
没有问题。
方案1.失败
原因比较简单,完全是因为自己的技术不够硬,需要安装qemu,但是整个电脑陷入了复杂的软件依赖中。宣告失败,从其他主机进行交叉编译暂时失败。
方案2.成功
虽然成功,但是中间的教训比较多。在问题汇总中进行简要记录。
基本思路是将debian镜像烧录到sd卡中,验证能够正常开启后,再放回读卡器,保留boot目录,删除所有其他目录和文件。将Gentoo文件和debian原镜像中的modules文件放到sd中。具体如下:
- Debian镜像烧录到sd卡(dev/sda)。
sudo dd if=./Orangepizero3_1.0.2_debian_bookworm_server_linux6.1.31.img of=/dev/sda
进行验证,用户名密码都为orangepi
-
删除所有非
/boot
目录 -
挂载sd卡,将Gentoo的stage3文件和最新的portage镜像分别解压到其
/
和/usr
sudo tar xfa stage3 /mnt/sd/
sudo tar xfa portage /mnt/sd/usr/
-
将debian的modules复制到sd卡的lib中
sudo cp -a /mnt/debian_img/usr/lib/modules /mnt/sd/lib/
-
1-4复制完毕后,基本完成了文件的下载和安装。下面将sd卡放回zero3,继续根据amd64 handbook进行相关步骤。
- 修改make.conf,主要更改
COMMON_FLAGS
,最好不要增加太多内容,后续编译容易出现奇怪bug,进行缩减后,我的是COMMON_FLAGS="-march=armv8-a -mtune=cortex-a53 -O2 -pipe"
。其他的MAKEOPTS
,GENTOO_MIRRORS
,ACCEPT_LICENSE
等根据handbook进行手动更改。 - 日期、locale,cpuflags, useflag等自行更改。
- 注意:bootloader, firmware, kernel等不必更改,直接跳过。
- 修改fstab,这个使用原始image的fsta就可以。
- passwd更改:
sed -i "s|root:\*|root:$(openssl passwd -1)|" /mnt/opipc/etc/shadow
- 修改make.conf,主要更改
-
以上完成应该就差不多了,重新启动一下应该就可以用了。
方案3.失败
原因:经过尝试,似乎无法从开发板中进行liveCD的启动,只能从tf卡槽中启动,但是dd了liveCD到sd卡中,仍旧无法启动。可能删除SPI内容会改变其引导顺序,但是也可能不支持usb启动。因此宣告失败。
问题、教训、经验汇总
- DOS格式与GPT格式 不知为何,非Gentoo系统的img都默认是dos格式。让人很不舒服。暂时没有修改。
- 文档 很多文档都有点过期了,需要仔细对比分析。看看安装思路和主要文件。
- 虽然用了其他镜像的uboot和modules,但是主要的Gentoo安装思路并没有变化。
- qemu还挺坑的,glibc涉及的依赖太多了。
- LiveCD几乎不能用,以后有机会再尝试吧。
- date。日期问题挺严重的,检查了好久才找到了这个问题。
未来改进方向
- 文档再写全面点,主要是思路。
- 尝试LiveCD模式,编译uboot,抄抄debian内核内核作业。
- 文件格式改成GPT
参考
- 香橙派zero3官方文档
- Amd64 Handbook
- yangmame大神提供的树莓派交叉编译
- Orange pi zero quick install
- Orange Pi PC/Quick Start
- 树莓派快速安装
辅助工具
- chatgpt