新的内核更新无法再启动

新的内核更新无法再启动

我在 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端口,因此分区被命名为nvme0n1p1nvme0n1p2nvme0n1p3
  • 您正在使用 LUKS 磁盘加密

修复步骤

挂载加密的 LUKS 分区

sudo cryptsetup luksOpen /dev/nvme0n1p3 nvme0n1p3_crypt

从 Live CD 挂载加密的 LUKS 分区

在 /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=depCOMPRESS=xz解决问题
  • 设置RUNSIZE=20%(而不是默认RUNSIZE=10%)不能解决问题

相关内容