Contents

在香橙派中安装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接口

方案准备

总共有三种方案

  1. 在本地计算机中进行烧录SD卡,根据树莓派的开发教程,从头制作,然后插入开发板中。此方案难度最大,同时也作为必作方案。即使其他方案成功,也要对该方案进行完善直到成功。

  2. 最简单的一种,直接烧录其他镜像,然后通过更改镜像文件,完成系统安装。这种方法应该是最简洁的,但是缺失了很多乐趣,暂不实行。

  3. 使用Gentoo提供的启动镜像进行启动,然后按照Gentoo的安装方式,根据方案1中的相关知识,进行修改完善。这种方式最Gentoo,也是我最想尝试的一种方式。与方案1相比,这种方式也可能会减少交叉编译的步骤。可能对于我来说更好理解。

之所以先进行方案1,是因为本地计算机的性能更强,运行、编译速度更快。

物品准备

硬件

  1. tf卡
  2. U盘(制作方案3中的Gentoo启动工具)
  3. 开发板

软件

  1. 对于方案1:

    • Orangepizero3_1.0.2_debian_bookworm_server_linux6.1.31.img
    • stage3-arm64-openrc-20231112T233159Z.tar.xz
    • portage-latest.tar.xz
  2. 对于方案2: 与方案1一致,只是更加简单。

  3. 对于方案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中。具体如下:

  1. Debian镜像烧录到sd卡(dev/sda)。
sudo dd if=./Orangepizero3_1.0.2_debian_bookworm_server_linux6.1.31.img of=/dev/sda

进行验证,用户名密码都为orangepi

  1. 删除所有非/boot目录

  2. 挂载sd卡,将Gentoo的stage3文件和最新的portage镜像分别解压到其//usr

    1. sudo tar xfa stage3 /mnt/sd/
    2. sudo tar xfa portage /mnt/sd/usr/
  3. 将debian的modules复制到sd卡的lib中

    1. sudo cp -a /mnt/debian_img/usr/lib/modules /mnt/sd/lib/
  4. 1-4复制完毕后,基本完成了文件的下载和安装。下面将sd卡放回zero3,继续根据amd64 handbook进行相关步骤。

    1. 修改make.conf,主要更改COMMON_FLAGS,最好不要增加太多内容,后续编译容易出现奇怪bug,进行缩减后,我的是COMMON_FLAGS="-march=armv8-a -mtune=cortex-a53 -O2 -pipe"。其他的MAKEOPTS, GENTOO_MIRRORS, ACCEPT_LICENSE等根据handbook进行手动更改。
    2. 日期、locale,cpuflags, useflag等自行更改。
    3. 注意:bootloader, firmware, kernel等不必更改,直接跳过。
    4. 修改fstab,这个使用原始image的fsta就可以。
    5. passwd更改:sed -i "s|root:\*|root:$(openssl passwd -1)|" /mnt/opipc/etc/shadow
  5. 以上完成应该就差不多了,重新启动一下应该就可以用了。

方案3.失败

原因:经过尝试,似乎无法从开发板中进行liveCD的启动,只能从tf卡槽中启动,但是dd了liveCD到sd卡中,仍旧无法启动。可能删除SPI内容会改变其引导顺序,但是也可能不支持usb启动。因此宣告失败。

问题、教训、经验汇总

  1. DOS格式与GPT格式 不知为何,非Gentoo系统的img都默认是dos格式。让人很不舒服。暂时没有修改。
  2. 文档 很多文档都有点过期了,需要仔细对比分析。看看安装思路和主要文件。
  3. 虽然用了其他镜像的uboot和modules,但是主要的Gentoo安装思路并没有变化。
  4. qemu还挺坑的,glibc涉及的依赖太多了。
  5. LiveCD几乎不能用,以后有机会再尝试吧。
  6. date。日期问题挺严重的,检查了好久才找到了这个问题。

未来改进方向

  1. 文档再写全面点,主要是思路。
  2. 尝试LiveCD模式,编译uboot,抄抄debian内核内核作业。
  3. 文件格式改成GPT

参考

辅助工具

  1. google
  2. chatgpt