启动 initrd 时,内核显示错误“Initramfs 解压失败:压缩存档中有垃圾”,并显示内核崩溃消息。这是 cpio 的问题吗(因为我使用的是 Ubuntu 16.04),还是 /init 守护程序脚本导致的某些内部错误?
答案1
当我尝试在 ubuntu21.10 中安装 4.19-longterm 时也遇到了类似的问题。
原因是 4.x 内核不支持zstd compressing algorithm
,但 cpio 可以使用它压缩 initramfs。
为了解决这个问题,请编辑/etc/initramfs-tools/update-initramfs.conf
并替换压缩算法为 gzip 或内核支持的其他算法。
运行update-grub
以刷新 rootfs/boot/
并重新启动。
答案2
我在 Thinkpad X220 上的 20.04 上遇到了非常类似的错误。(Core i5、8GB RAM、与 Win10 双启动;Ubuntu 和 Win10 位于不同的 SSD 上。)
20.04 运行了一段时间后开始无法启动,并出现无法解压 initrd 的错误以及控制台上的磁盘错误。
我发现如果我回到旧内核(通过 GRUB 的高级选项菜单)它就可以启动。
这很可怕:我以为我的固态硬盘 (SSD) 快要坏了,所以我买了一个新的。
我使用 Gparted 将我的分区从活动 USB 复制到新磁盘,并将其放入另一台机器中。我从 USB 密钥启动,使用 检查分区是否有错误fsck -f
,并成功启动到恢复模式(非常慢),然后安装了较新的 HWE 内核。
这解决了问题。它启动正常,除了缺少
resume
设备外没有错误(我使用了 ZRAM 并且没有交换分区,以避免过度的 SSD 磨损)。
我读到过,较新的 SSD 更加坚固,所以我创建了一个交换分区,在其中放入了一行/etc/fstab
。错误继续。我不得不重建我的initrd
,这是我以前从未做过的,但这解决了问题。
于是,我鼓起勇气,尝试修复旧笔记本电脑。我对分区进行了 fsck,并trim
在其上运行了程序,安装了 HWE 内核,在另一个 (Windows) SSD 上创建了交换分区,清除了 ZRAM,然后重建了我的initrd
.
机器仍然运行良好,现在我有一块闲置的 SSD,但我并不需要,这有点烦人。但它只花了我一顿外卖餐的钱,所以还不算太糟。