我最近从 Ubuntu 18.04 更新到了 19.10。在我看来,更新安装的内核 (5.3.0-29) 比我在 18.04 (5.0.0-36) 下运行的内核要旧。从那时起,我在所有 apt 更新中都遇到了错误,显示 initramfs 失败:
Setting up initramfs-tools (0.133ubuntu10) ...
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.133ubuntu10) ...
update-initramfs: Generating /boot/initrd.img-5.3.0-29-generic
Error 24 : Write error : cannot write compressed block
E: mkinitramfs failure cpio 141 lz4 -9 -l 24
update-initramfs: failed for /boot/initrd.img-5.3.0-29-generic with 1.
dpkg: error processing package initramfs-tools (--configure):
installed initramfs-tools package post-installation script subprocess returned
error exit status 1
Errors were encountered while processing:
initramfs-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)
我的 uname -r 输出是
5.3.0-29-generic
和
alex@acer:~$ dpkg --list | grep linux-image
ii linux-image-5.0.0-36-generic 5.0.0-36.39 amd64 Signed kernel image generic
ii linux-image-5.3.0-29-generic 5.3.0-29.31 amd64 Signed kernel image generic
ii linux-image-generic 5.3.0.29.33 amd64 Generic Linux kernel image
有什么解决方法吗?我甚至不确定问题是什么,但已经尝试过很多其他解决方案。
答案1
由于我的 /boot 分区已满,我遇到了这个问题。
我小心地删除了几个我确信不再需要的大型 initrd.img 文件。
确保记下最后一个工作内核。不要立即删除所有其他内核,因为你不希望它们全部重新生成。
我运行sudo apt autoremove --purge
并执行了另一次sudo apt dist-upgrade -V
操作来生成 missind initrd 映像文件。
一旦你重启了最后一个内核,一切就都好了。然后我邀请你清理所有旧的东西。
您不应该触碰的当前软件包
dpkg -l | egrep "linux-(signed|modules|image|headers)" | grep $(uname -r)
您可以清除的旧软件包
dpkg -l | egrep "linux-(signed|modules|image|headers)" | grep -v $(uname -r | cut -d - -f 1)
我把它们全部清除了
dpkg -l | egrep "linux-(signed|modules|image|headers)" | grep -v $(uname -r | cut -d - -f 1) | awk {'print $2'} | xargs sudo apt purge -y
我在运行 5.8.0-45 的 Ubuntu 20.10 上仍然有 4.10 和 4.13 软件包
答案2
好的,我想我可能刚刚解决了这个问题。一开始我并没有注意到我实际上使用的是较新的内核而不是旧内核。在更新后的前几次启动中,使用的是较旧的内核(5.0.-),而不是较新的内核(5.3.-)。因此,sudo apt purge linux-image-5.0.0-36-generic
看起来这释放了 /boot 上的一些空间,然后计算机显示
Setting up initramfs-tools (0.133ubuntu10) ...
update-initramfs: deferring update (trigger activated)
(Reading database ... 328490 files and directories currently installed.)
Purging configuration files for linux-image-5.0.0-36-generic (5.0.0-36.39) ...
rmdir: failed to remove '/lib/modules/5.0.0-36-generic': Directory not empty
Processing triggers for initramfs-tools (0.133ubuntu10) ...
update-initramfs: Generating /boot/initrd.img-5.3.0-29-generic
答案3
作为一种解决方法,您可以尝试以下方法来获得更多的临时空间:
cd /
sudo rsync -av /boot/ /boot2/
sudo mount --bind /boot2 /boot
sudo update-initramfs -u
sudo umount /boot
sudo rsync -av /boot2/ /boot/ --exclude "*.new" --exclude "*.dpkg-bak" --delete --inplace
答案4
5.3 是比 5.0 更新/更新的内核
只有前两个数字来自上游,并且在比较内核时具有重要意义。
另一只尾随次要的数字是仅适用于该内核的内部 Ubuntu 代码,即不要将 5.3 系列内核的次要编号与 5.0 系列内核进行比较。次要编号(即 5.0/5.3 之后的编号)仅应用于同一内核内的比较
https://wiki.ubuntu.com/Kernel/MainlineBuilds
注意:我说的两个数字是指数字.数字;因此,按照我使用的术语,粘贴链接中的 4.19 示例符合前两个数字的条件。