Every once in a while a linux kernel update will fail to install with an error like
update-initramfs: failed for /boot/initrd.img...
Typically autoremove fixes this but sometimes manually installed packges can cause issues (which was the case for me since I had installed a custom driver).
Here's a trace:
Setting up linux-image-5.4.0-54-generic (5.4.0-54.60) ... Processing triggers for initramfs-tools (0.136ubuntu6.3) ... update-initramfs: Generating /boot/initrd.img-5.4.0-53-generic I: The initramfs will attempt to resume from /dev/dm-2 I: (/dev/mapper/neon--vg-swap_1) I: Set the RESUME variable to override this. 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.4.0-53-generic with 1. dpkg: error processing package initramfs-tools (--configure): installed initramfs-tools package post-installation script subprocess returned error exit status 1 Processing triggers for linux-image-5.4.0-54-generic (5.4.0-54.60) ... /etc/kernel/postinst.d/dkms: * dkms: running auto installation service for kernel 5.4.0-54-generic ...done. /etc/kernel/postinst.d/initramfs-tools: update-initramfs: Generating /boot/initrd.img-5.4.0-54-generic I: The initramfs will attempt to resume from /dev/dm-2 I: (/dev/mapper/neon--vg-swap_1) I: Set the RESUME variable to override this. 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.4.0-54-generic with 1. run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1 dpkg: error processing package linux-image-5.4.0-54-generic (--configure): installed linux-image-5.4.0-54-generic package post-installation script subprocess returned error exit status 1 Errors were encountered while processing: initramfs-tools linux-image-5.4.0-54-generic E: Sub-process /usr/bin/dpkg returned an error code (1)
Error 24 : Write error : cannot write compressed block block part. While the system has over 100 GB free, if we run
df -h | grep boot the the boot volume was almost completely full with only 34 MB free.
/dev/nvme0n1p2 705M 620M 34M 95% /boot /dev/nvme0n1p1 511M 18M 494M 4% /boot/efi
The solution is to manually remove one of the older versions in order to free up some space in the boot partition. To see what they are use:
sudo apt list --installed | grep linux-image
Then find the oldest one and use
sudo apt remove linux-headers-5.4.0-45 linux-headers-5.4.0-45-generic linux-image-5.4.0-45-generic linux-modules-extra-5.4.0-45-generic
To clean the image, modules, and headers. Then it'll have room to install the latest kernel!
Update: See a better approach using autoremove