在通过正常的 apt 更新将内核树更新至 5.11.0-1014-raspi 或 5.11.0-1015-raspi 后,我的两个 RPi4B 安装(Xubuntu,64 位)现在处于无法启动的状态。大约一周前,当我的第一个 RPi4B 版本启动到彩虹之死时,我对此进行了第一次错误报告,我警告开发人员这存在问题。我以为在运行相同操作系统的另一个 RPi4B 上进行更新是安全的,但现在它启动到末日的下划线。
我该如何修复引导加载程序?如果可以的话,我将不胜感激。我完全不知道整个 uboot 段等内容是什么,而且我当然不想从头开始重新安装整个操作系统。
第一个无法启动的单元在 /var/log/ 中显示没有任何错误,以下是该单元的最后一条日志:https://paste.ubuntu.com/p/SXnzTTsNtS/
我的主要问题是:我能以某种方式让引导加载程序恢复运行吗,因为这似乎是这里的问题所在?当第一个单元因为 apt-update 而停止工作时,我确实从当时仍在工作的一个单元复制了引导分区数据,并尝试 rsync 数据,但无济于事。
Ubuntu 的 Uboot 如何在 RPi4B 上运行,没有任何文档,至少我还没有找到。如果有人能指点我树莓派 4BU-boot 文档,我非常乐意阅读它。现在我运气不佳,有两个无法正常工作的操作系统版本,在常规内核更新之前它们运行得很好。
请提供建议。谢谢。
更新 1:我拿到了一个新的 USB 棒,用它为 RPi4B 刷入了 Ubuntu Server 64 位,rpi-imager
然后启动了一个新系统。运行 apt 更新和升级后,它也更新到了 -1015-raspi,之后我重新启动,它就变成了“死亡彩虹”,连续闪烁了四次(这表明没有找到引导加载程序)。
所以,又一个失败了。我原本希望通过这种方式也许能够得到一个可以工作的引导加载程序,但是没有那么幸运。
更新2:现在有一个错误报告https://bugs.launchpad.net/ubuntu/+source/linux-meta-raspi/+bug/1937924
更新 3:已解决我自己解决了这个问题,无需重新安装,只需等待内核包上的新的 apt 更新,然后将启动分区数据从新安装复制到损坏的操作系统即可。(请参阅下面的答案。)
答案1
Ubuntu 从 SD 卡的 fat32 分区启动。在刷新新内核期间,旧内核的文件将以.bak
扩展名保存。因此,只需使用另一个 Linux 重命名它们即可。
- 挂载你的启动分区(
/dev/sda1
就我而言)
sudo mount /dev/sda1 /mnt
- 重命名所有带
.bak
后缀的文件。
sudo rename -f -v 's/.bak//g' /mnt/*.bak
sudo rename -f -v 's/.bak//g' /mnt/overlays/*.bak
完毕!
UPD:如果您的问题的原因是启动分区太小,则此方法可能对您没有帮助。
答案2
我自己解决了这个问题,只需等待 RPi4B 上的 64 位 Ubuntu 推出新的内核更新即可。我将最新的 Ubuntu Server 64 位映像写入 USB 记忆棒,然后在其上运行 RPi4B 上的初始设置。然后,我在所有可用的/软件包rpi-imager
上运行了安装,并确保在这些更新之后它可以无问题地启动。apt update
apt upgrade
然后,我将所有boot
-分区的文件从健康的新 Ubuntu 服务器复制到损坏的操作系统boot
分区,但不包括meta-data
、network-config
和user-data
文件以及cmdline.txt
和config.txt
。
插上电源,祈祷,在四点(. . . .
)Ubuntu 屏幕上运行了一段时间后,两个操作系统都恢复了活力!我现在非常高兴。
是的,正如我所想,这是一个引导加载程序问题。我只想提个建议,要时刻注意这个潜在的陷阱,以免在出现与内核相关的问题后陷入同样的困境apt update
。经常备份!:o)