..
OrangePi5 使用 btrfs 文件系统将 armbian 安装到 sata 硬盘
OrangePi5 可以从 TF 卡启动,也可以从 USB 启动,但是没有办法从 sata 扩展卡上面的硬盘启动。因为在 u-boot 中是没有相关扩展卡的驱动。但是 linux 的内核通常都是有相关驱动的。
之前尝试过从 mtd 引导至 ipxe 或者 grub 来试图避免使用 TF 卡来加载内核。但是都遇到了一些问题。不过在树莓派上面的尝试都是成功的。
所以只能退而求其次使用 TF 卡来加载 kernel,然后挂载 sata 硬盘上面的 rootfs。
准备硬件
- OrangePi5
- TF 卡(容量 256M 以上)
- jmb585 M.2 sata 硬盘拓展卡
- sata 接口硬盘
操作系统
- 任意 linux 发行版
操作流程
格式化准备的硬盘,这里我们不分区,直接格式化整个设备
root@ubuntu:~$ mkfs.btrfs /dev/sdb
挂载硬盘,并且创建一个 @rootfs 卷作为 / 根目录使用
root@ubuntu:~$ mount -o noatime /dev/sdb /mnt/disk
root@ubuntu:~$ btrfs subvol create /mnt/disk/@rootfs
root@ubuntu:~$ mount -o noatime,subvol=@rootfs /dev/sdb /mnt/rootfs
从 armbian 官网下载镜像
root@ubuntu:~$ Armbian_24.2.1_Orangepi5_jammy_legacy_5.10.160_minimal.img.xz
解压镜像
root@ubuntu:~$ xz -d -k -T0 Armbian_24.2.1_Orangepi5_jammy_legacy_5.10.160_minimal.img.xz
挂载镜像,并且复制根目录所有数据到硬盘
root@ubuntu:~$ losetup -f -P Armbian_24.2.1_Orangepi5_jammy_legacy_5.10.160_minimal.img
root@ubuntu:~$ mount /dev/loop0p1 /mnt/pi
root@ubuntu:~$ rsync -avhS /mnt/pi/ /mnt/rootfs/
将镜像烧录至 TF 卡中。其实我们只需要镜像中的 boot 分区的内容和第一个分区之前 16M 的 u-boot 数据。如果 TF 卡容量小于镜像容量,可以手动建立 boot 分区,将数据复制过来,也将 u-boot 复制过来。这里我们的 TF 卡容量足够,所以直接操作就可以了。
root@ubuntu:~$ dd if=Armbian_24.2.1_Orangepi5_jammy_legacy_5.10.160_minimal.img of=/dev/sdc conv=notrunc
挂载 boot 分区,并且查询分区的 UUID。
root@ubuntu:~$ mount /dev/sdc1 /mnt/boot
root@ubuntu:~$ lsblk -o +UUID
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS UUID
sda 8:0 0 1.8T 0 disk / 8774090a-e24f-4766-9d63-4c2fedba47a0
sdb 8:0 0 7.3T 0 disk /mnt/disk 61fa911d-15b7-42c6-84dd-a8195beb31b4
/mnt/rootfs
sdc 8:0 0 1.9G 0 disk
└─sdc1 8:1 0 256M 0 part /boot 57E4-A400
root@ubuntu:~$
修改 boot 分区中的 rootfs 信息。 将下面的内容加入并替换掉 /mnt/boot/armbianEnv.txt
里面的相关内容。
rootdev=UUID=61fa911d-15b7-42c6-84dd-a8195beb31b4
rootfstype=btrfs
extraargs=rootflags=subvol=@rootfs
最后在修改 rootfs 分区中 /mnt/rootfs/etc/fstab
文件的内容。
UUID=61fa911d-15b7-42c6-84dd-a8195beb31b4 / btrfs defaults,noatime,subvol=@rootfs 0 0
UUID=57E4-A400 /boot/ vfat defaults 0 2
tmpfs /tmp tmpfs defaults,nosuid 0 0
至此相关操作全部完成,umount
掉之前挂在的所有目录。将 TF 卡插入 Pi5 中,并插好 sata 硬盘。上电开机即可。
其它
虽然 TF 卡只做引导使用。但每次启动还是需要依赖这个 TF 卡。有空后面研究一下从 mtd 或者网络来直接引导 sata 硬盘。