第一次发帖。我也是菜鸟。我想从 USB 3.0 SSD 驱动器启动我的 RPI4,并且不让 RPI4 继续读取 SD 卡。我按照以下帖子的其中一个答案中的说明进行操作:
我可以从 USB SSD 在 Raspberry Pi 4 上启动 Ubuntu Server 19.10 吗?
答案是使用 ubuntu 映像对 SD 卡和 SSD 进行映像。我这样做了,并且能够启动。我在命令行上进行了验证:
ubuntu@ubuntu:~$ findmnt -n -o SOURCE /
结果显示我的 dev/sda1 是源。
我重新启动并再次验证,但这次它显示了我的 SD 卡的驱动器路径。我很困惑,因为在此之前,它要求我更改密码,就像第一次启动时一样。
所以我反复重启,每次重启时,它都会交替启动(或使用“findmnt -n -o SOURCE /”的结果)。有趣的是:不再需要更改密码;ssh 的 ip 地址也一直在路由器网络中的相同两个地址之间交替。sudo apt-get 和所有其他命令似乎都有效。
我如何让它始终从 SSD 启动?这就是 RPI 基金会声称固件不支持它的原因吗?我在某处读到 rpi4 的固件不支持从外部驱动器启动,但这种方法似乎有效,至少在交替启动位置时有效。
我不确定我是否应该尝试在 RPI 上使用 Ubuntu 而不是坚持使用 Raspbian,但我非常感谢能够解决我的问题。
我也欢迎其他方面的资源。我对 Raspberry Pi、Linux 世界、计算机编程等非常陌生。我的计算机知识有限,就像从 MS Dos 时代到 2014 年组装我的第一台计算机的游戏玩家一样。
答案1
在 RPi 上,如果查看文件 /boot/firmware/cmdline.txt,您将看到 20.04 的根文件系统定义如下:
root=LABEL=writable rootfstype=ext4
这意味着根文件系统由名为“可写”的分区标签标识。
如果运行以下命令:
lsblk -o +LABEL
您可能会看到两个磁盘块设备:sda(USB SSD)和 mmcblk0(SD 卡)。您还可能会看到每个设备都有两个分区,一个带有标签“可写”,另一个带有标签“系统启动”。因此您有两个名为“可写”的分区。
如果是这样,那么您需要更改 SD 卡上的标签,以便引导加载程序可以确定引导需要哪个“可写”根文件系统(即使用 USB SSD)。
我猜测有问题的分区是 /dev/mmcblk0p2(SD 卡上的第二个分区)。您可以像这样更改标签:
sudo e2label /dev/mmcblk0p2 NEWNAME
然后重新运行上述“lsblk”命令以确保更改已完成。然后多次重启 RPi,并确保根分区 (/) 始终安装在 sda 块设备上(再次使用“lsblk”命令)。