错误 24:写入错误:无法写入压缩块

错误 24:写入错误:无法写入压缩块

我最近从 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 示例符合前两个数字的条件。

相关内容