![新的内核更新无法再启动](https://linux22.com/image/951272/%E6%96%B0%E7%9A%84%E5%86%85%E6%A0%B8%E6%9B%B4%E6%96%B0%E6%97%A0%E6%B3%95%E5%86%8D%E5%90%AF%E5%8A%A8.png)
我在 XPS13 上使用 Kubuntu 多年,没有遇到任何问题,但内核更新到 5.15.0-60 后,它就无法启动了。我今天更新到内核 5.15.0-67,但仍然无法启动……我只能在之前的 5.15.0-58 版本上启动。
我的电脑是戴尔 XPS13 9380,Kubuntu 22.04。在新内核上启动时,选择 grub 后,屏幕变黑。
journalctl -b -1 只能显示 5.15.0-58 上的启动:使用此命令不会显示 5.15.0-60 或 5.15.0-67 上的任何尝试。
我不得不说,在我遇到内存问题后不久,这个问题就开始了:我的 / 分区已满,在我重新启动以进行更新安装后,我收到一条消息“erreur mémoire épuisée”,这在法语中意味着“错误内存耗尽”或类似的东西。所以我不得不启动一个实时 USB 驱动器,释放一些空间并运行“启动修复”,它成功了,但它将在另一个分区上检测到的 ubuntu 20.04 设置为默认值(奇怪)。无论如何,我仍然可以启动 22.04,但只能使用 5.15.0-58 内核。
我不知道问题是否出在 grub(因为似乎没有发生启动)还是出在最新的内核。
感谢您提出任何建议,以找出阻止新内核启动的原因!Marc
答案1
最后我解决了这个问题,据我所知,这个问题更多的是 grub 的问题,而不是内核的问题。
我尝试重新安装 grub(update-grub 和 grub-install),然后无法在 kubuntu 22.04 上再启动,并且在任何内核上都会出现“内存耗尽”这样的异常消息……
我跑了一个 启动修复再次在实时 kubuntu 上,发现默认启动 kubuntu 22 的选项。启动修复后,使用最新内核 (5.15.0-67) 的 kubuntu 22 运行良好。
玩得开心!马克
答案2
更新到内核 5.15.0-67 后,我遇到了同样的问题,我暂时忽略了这个问题,因为我仍然可以使用 5.15.0-60 启动,但是当我获得另一个安装了 5.15.0-69 的内核更新时,由于某种原因 5.15.0-60 也无法启动,所以我的笔记本电脑坏了,我不得不从 Ubuntu Live USB 棒上修复它。不幸的是,启动修复对我不起作用,当我从 Ubuntu Live USB 棒运行它时,它没有任何“建议修复”。
从阅读此错误跟踪器评论,我相信这是“内存不足”错误的解释:
Grub 尝试将 initrd 读入太小的内存位置。
此问题是由多种因素共同造成的:
- Grub 没有在内存中为 initrd 留出足够的空间,并且空间位置也不正确,
- 由于保存了更多模块和更多固件,initrd 的大小有所增大。nvidia 专有驱动程序尤其如此。
- 典型的屏幕分辨率及其相关的内存缓冲区已经增加。
请注意,上面链接的评论也提供了一些解决方法。我将提供修复此问题的步骤的完整摘要,希望这对其他人有用。
通过拼凑每个步骤中引用的其他几个 Stack Overflow 答案,找到了解决方案。
系统设置
我有一台运行 Ubuntu 22.04.2 的 Dell XPS 13 9380 笔记本电脑(从 2020 年某个时候最初安装的 20.04 升级而来)。
这些步骤假设你的设置与我的类似,即:
- 您的硬盘通过NVM Express端口,因此分区被命名为
nvme0n1p1
、nvme0n1p2
、nvme0n1p3
- 您正在使用 LUKS 磁盘加密
修复步骤
挂载加密的 LUKS 分区
sudo cryptsetup luksOpen /dev/nvme0n1p3 nvme0n1p3_crypt
在 /mnt 和 chroot 中挂载东西
这是必要的准备步骤,以便可以将更改应用于磁盘上的系统,而不是 Live 启动系统。
sudo mount /dev/ubuntu-vg/root /mnt/
sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount /dev/nvme0n1p2 /mnt/boot
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
sudo chroot /mnt
看
更改 initramfs.conf 和 update-initramfs/grub
编辑/etc/initramfs-tools/initramfs.conf
并设置这两个选项(或仅其中的一个,有关更多信息请参阅下文):
MODULES=dep
COMPRESS=xz
然后运行以下命令:
sudo update-initramfs -c -k all
sudo update-grub
哪个 initramfs.conf 更改实际上可以修复该问题?
在Ubuntu 错误跟踪器,#1970402,记者提到:
升级到 22.04 后,系统无法启动,因为加载初始 ramdisk 时出现“内存不足”错误。我可以通过编辑
/etc/initramfs-tools/initramfs.conf
和更改配置来修复它:MODULES=dep COMPRESS=xz RUNSIZE=15%
不确定哪一个有帮助,但如果需要的话我可以测试它。
好吧,我进行了测试,以下是我得到的结果:
- 设置
MODULES=dep
(而不是默认MODULES=most
)可以解决问题 - 设置
COMPRESS=xz
(而不是默认COMPRESS=zstd
)可以解决问题 - 设置两者
MODULES=dep
并COMPRESS=xz
解决问题 - 设置
RUNSIZE=20%
(而不是默认RUNSIZE=10%
)不能解决问题