NanoPi R4S 将 Armbian rootfs 移动到外部存储

R4S 的性能并不比树莓派差,但它相比于树莓派只能从 MicroSD 启动系统,这导致 IO 性能非常拉跨,数据安全也无法保准。于是便想试试能否将系统安装到外部设备上。R4S 虽没有 emmc ,但有 2 个 USB 3.0 接口,正好可以外接 U 盘或移动硬盘。

硬件条件有了,之后便开始尝试系统的迁移。我一开始使用 DietPi 系统,很可惜这个系统并不支持在 R4S 上从外部启动,之后便瞄向了 Armbian 。

初次见 Armbian 的时候,就被他支持的设备数惊到了,没想到,能同时支持 78 款设备,还同时提供了最新版本的 Ubuntu 和 Debian,更高兴的是,他支持将系统的 rootfs 转移至外部存储,虽无法完全摆脱 MicroSD ,但也很接近将系统安装至外部的体验了。

Armbian 安装到 MicroSD 后,进入系统插上外部存储,使用 nand-sata-install 根据指示一步步来便能完成所有步骤,最后重启 ok

nand-sata-install 带有 GUI ,使用起来也很方便,但之后若是需要频繁重装系统,每次都这样略显繁琐(嗯,一般情况下是不会有频繁重装系统的需求的)又或是需要更换外部存储,甚至是 MicroSD ,并把当前数据也直接拷贝过去,此时 nand-sata-install 便无法满足需求了

于是,不借助 nand-sata-install 尝试手动操作

  1. 将 Armbian 镜像写入到 MicroSD ,记录下 MicroSD 分区的 UUID
  2. 准备外部存储,使用 GPT 分区表,建立分区,文件系统可以使用 ext2/3/4、btrfs 记录分区的 UUID
  3. 编辑 /boot/armbianEnv.txt ,设置 rootdev= 为外部存储分区的 UUID,rootfstype= 为外部存储分区的文件系统类型
  4. 编辑 /etc/fstab ,添加
UUID=MicroSD分区UUID /media/mmcboot ext4 defaults,noatime,commit=600,errors=remount-ro 0 1

/media/mmcboot/boot /boot none bind 0 0

UUID=外部存储分区UUID / 外部存储分区文件系统类型 defaults,noatime,commit=600,compress=lzo,x-gvfs-hide 0 2
  1. 将整个 MicroSD 分区的文件复制到外部存储的分区(推荐 rsync -a)
  2. R4S 插入 MicroSD 和外部存储,通电

如果外部存储是移动固态硬盘,最好禁用 UASP ,否则可能会造成系统无响应