如何从 SD 卡启动但将系统的其余部分留在 NVMe 驱动器上?

如何从 SD 卡启动但将系统的其余部分留在 NVMe 驱动器上?

我有 RockPro64 主板和 NVMe 驱动器。此主板不支持从 NVMe 启动,因此我需要有单独的启动分区。这是我的 /etc/fstab 文件(在 NVMe 文件系统上):

UUID=645f4a77-3e04-48da-ab41-0de8a81c1c13   /boot   ext4    defaults,noatime,nodiratime,commit=600,errors=remount-ro    0 1
UUID=c94a693a-74df-4e63-a466-2107a287f26a   /       ext4    defaults,noatime,nodiratime,commit=600,errors=remount-ro    0 1
tmpfs                                       /tmp    tmpfs   defaults,nosuid                                             0 0

我认为它不应该起作用,因为如果 /etc/fstab 位于不同的分区上,如何挂载它?但我听说存储在 /boot 上的 initramfs 将包含挂载根文件系统所需的驱动程序和信息。一旦挂载了根文件系统,就可以访问其上的 /etc 并处理 fstab。

以下是我的 SD 卡(UUID=645f4a77-3e04-48da-ab41-0de8a81c1c13)的内容(之前位于 /boot 目录中):

armbianEnv.txt                  boot.bmp  boot.scr                  dtb                    Image                         System.map-5.8.17-rockchip64  uInitrd-5.8.17-rockchip64
armbian_first_run.txt.template  boot.cmd  config-5.8.17-rockchip64  dtb-5.8.17-rockchip64  initrd.img-5.8.17-rockchip64  uInitrd                       vmlinuz-5.8.17-rockchip64

这是我的 NVMe 驱动器(UUID=c94a693a-74df-4e63-a466-2107a287f26a)的内容(这是之前在 /boot 之外的内容,在 /boot /dev/mmcblk1p1 中已安装):

bin  boot  dev  etc  home  lib  media  mnt  opt  proc  root  run  sbin  selinux  srv  sys  tmp  usr  var

我能够通过从 USB 启动,然后在 /mnt 中安装 /dev/nvm0n1 并在 /mnt/boot 中安装 /dev/mmcblk1p1,最后运行 systemd-nspawn -b -D /mnt 来收集此信息。USB 在启动顺序中排在第 4 位(在 SPI、eMMC 和 SD 卡之后),当我将其插入主板时,它成功启动,因此闪存到我的 SPI 的 u-boot 不知道我的 SD 卡(在启动顺序中排在 USB 之前)包含可启动数据。当这些数据位于同一张卡上的 /boot 目录中时,它能够启动我的系统,但现在无法启动。为什么?

或者也许它正在启动而我推断错了……

编辑:

电脑正在启动但随后就卡住了。甚至风扇也不转了。

答案1

好的。我解决了这个问题。我不得不修改 u-boot 配置文件 /boot/armbianEnv.txt。如果您使用的是 grub,您可能需要修改 /boot/grub/grub.cfg。

相关内容