我有 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。