我在树莓派 4 上有一个 ubuntu 桌面 20.04.2 64 位,
我已经在 USB ssd 上没有 sd 卡的情况下启动了很多时间。
内核 vmlinuz-5.4.0-1028-raspi 是我最后一次启动。
当我更新到 vmlinuz-5.4.0-1029-raspi 时,我用来解压内核的实用程序失败了。
所以我将ssd安装在其他电脑上并手动解压它,但不起作用。
我在 /boot 和 /boot/firmware 中查看并没有找到相同的配置:config.txt 有一个新结构。在更新 config.txt 之前,现在不再喜欢 user.txt 等等。
cmdline.txt 由 LABEL 引导,但新的完全不同。
我有 /boot 的备份
我是否要恢复所有 /boot 文件而不关心 /boot 上的现有文件?
有人有同样的灾难吗?
最好的问候,莱昂纳多
更新
@HappyTux 的答案是正确的。
我犯了一个错误:
在我的解压内核脚本中,我使用的是 extract-vmlinux,之前我使用的是 zcat -qf
extract-vmlinux 可能会在没有退出代码 <> 0 的情况下失败,并且确实如此。
# check_vmlinux
...
readelf -h $1 > /dev/null 2>&1 || return 1
cat $1
exit 0
...
此功能位由以下人员调用:
...
# Finally check for uncompressed images or objects:
check_vmlinux $img
# Bail out:
echo "$me: Cannot find vmlinux." >&2
并且rerurn 1
不使用。
所以我将我的usb ssd安装在其他电脑上并通过zcat解压缩。
我的错误是不记得 /boot/firmware 是可引导分区的挂载点:
我使用此路径解压缩 /boot/firmware 但是,在我的支持 PC 上,未挂载
引导分区,
因此我的更改在 rpi 的引导时隐藏.
我必须使用引导分区解压缩 kermel 并恢复正确的 config.txt。这使得sub ssd 再次启动。
不知道为什么没有挂载引导分区的/boot/firmware不为空!这有助于我犯错误。
现在在新的 Ubuntu 20.04.2 上不再需要内核解压:
在 config.txt 上,您可以直接使用
kernel=vmlinuz
而无需解压。
最好的问候,
莱昂纳多
您只需要它来恢复旧的 /boot 并恢复到以前的状态。这就是这些机器使用其中包含的所有文件启动的方式,它是您的整个启动配置。他们通过固件查找某些命名文件以加载到内存中,然后继续执行下一个需要的文件……直到最后它加载内核,其中包含要加载 / 的分区 ID 或标签的行并启动。
您可能只需编辑新 /boot 上的文件以使其再次运行,即控制引导的文本文件。在我的
Buster
安装中,它们是/boot/firmware/cmdline.txt
和/boot/firmware/config.txt
. 第一个告诉它要加载第二个内核和inramfs 的分区。