升级后停止从 SSD 在 Raspberry Pi 4 上启动 ubuntu 20.04

升级后停止从 SSD 在 Raspberry Pi 4 上启动 ubuntu 20.04

我在 raspberry pi 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,但是在我的支持电脑上,
启动分区是不是已安装
,因此我的更改是在 rpi 启动时隐藏。

我必须使用启动分区解压kermel并恢复正确的config.txt。这使得子 SSD 再次启动

我不知道为什么没有安装启动分区的 /boot/firmware 不是空的!这帮助我纠正了我的错误。

现在在新的 Ubuntu 20.04.2 上不再需要内核解压:
在 config.txt 上您可以 kernel=vmlinuz
直接使用而无需解压它。

致以最诚挚的问候,
莱昂纳多

答案1

您只需将其恢复为旧的 /boot,即可恢复到以前的状态。这就是这些机器使用其中包含的所有文件进行启动的方式,它是您的整个启动配置。它们通过固件查找某些命名的文件以将其加载到内存中,然后继续执行下一个需要的操作……直到最后加载内核,该内核的行包含分区 ID 或标签以加载 /,然后您就启动了。

您可能只需编辑新 /boot 上的文件即可使其再次运行,即控制引导的文本文件。在我的Buster安装中,它们是/boot/firmware/cmdline.txt/boot/firmware/config.txt。第一个告诉它要加载的分区,第二个告诉它内核和 intramfs。

相关内容