Package: raspi-firmware Severity: serious Tags: patch Hi,
if /boot/firmware is (nearly) full, raspi-firmware prevents (!) uninstalling a kernel image, because it still insists on copying stuff to /boot/firmware upon kernel image removal. An additional condition might be that another kernel image is present and not fully configured for the same reason (not enough diskspace). It's unlcear for me, if this additional condition is required for this issue to reproduce. In general you can run into such an issue within months if you have automatic updates enabled and don't clear up old kernels automatically. (And yes, in my case the VFAT partition is rather small as this is a very old installation. # df -h /boot/firmware/ Filesystem Size Used Avail Use% Mounted on /dev/mmcblk0p1 121M 121M 2.0K 100% /boot/firmware # dpkg --purge linux-image-6.1.0-1-armmp-lpae (Reading database ... 350731 files and directories currently installed.) Removing linux-image-6.1.0-1-armmp-lpae (6.1.4-1) ... /etc/kernel/postrm.d/initramfs-tools: update-initramfs: Deleting /boot/initrd.img-6.1.0-1-armmp-lpae /etc/kernel/postrm.d/z50-raspi-firmware: cp: error writing '/boot/firmware/vmlinuz-6.1.0-2-armmp-lpae': No space left on device run-parts: /etc/kernel/postrm.d/z50-raspi-firmware exited with return code 1 dpkg: error processing package linux-image-6.1.0-1-armmp-lpae (--purge): installed linux-image-6.1.0-1-armmp-lpae package post-removal script subprocess returned error exit status 1 Errors were encountered while processing: linux-image-6.1.0-1-armmp-lpae # ls -l /boot/firmware/{initrd.img,vmlinuz}-* -rwxr-xr-x 1 root root 25319457 Oct 13 08:32 /boot/firmware/initrd.img-5.19.0-2-armmp-lpae -rwxr-xr-x 1 root root 25268327 Dec 7 08:29 /boot/firmware/initrd.img-6.0.0-5-armmp-lpae -rwxr-xr-x 1 root root 25266000 Jan 18 08:21 /boot/firmware/initrd.img-6.0.0-6-armmp-lpae -rwxr-xr-x 1 root root 5210624 Oct 24 00:52 /boot/firmware/vmlinuz-5.19.0-2-armmp-lpae -rwxr-xr-x 1 root root 5267968 Dec 7 08:29 /boot/firmware/vmlinuz-6.0.0-5-armmp-lpae -rwxr-xr-x 1 root root 5267968 Dec 27 08:05 /boot/firmware/vmlinuz-6.0.0-6-armmp-lpae -rwxr-xr-x 1 root root 5370368 Jan 18 08:21 /boot/firmware/vmlinuz-6.1.0-1-armmp-lpae -rwxr-xr-x 1 root root 3817472 Mar 1 05:31 /boot/firmware/vmlinuz-6.1.0-2-armmp-lpae # dpkg --audit The following packages have been unpacked but not yet configured. They must be configured using dpkg --configure or the configure menu option in dselect for them to work: linux-headers-armmp-lpae Header files for Linux armmp-lpae configuration (meta linux-image-armmp-lpae Linux for ARMv7 multiplatform compatible SoCs supportin The following packages are only half configured, probably due to problems configuring them the first time. The configuration should be retried using dpkg --configure <package> or the configure menu option in dselect: initramfs-tools generic modular initramfs generator (automation) linux-headers-6.1.0-2-armmp-lpae Header files for Linux 6.1.0-2-armmp-lpae linux-image-6.1.0-2-armmp-lpae Linux 6.1 for ARMv7 multiplatform compatible So raspi-firmware Raspberry Pi family GPU firmware and bootloaders The following packages are only half installed, due to problems during installation. The installation can probably be completed by retrying it; the packages can be removed using dselect or dpkg --remove: linux-image-6.1.0-1-armmp-lpae Linux 6.1 for ARMv7 multiplatform compatible So In the end, this also causes apt to abort rather early and not upgrade or install anything anymore since then. This is also the reason why only outdated kernel are (partially) installed. So please stop copying stuff to /boot/firmware on kernel image removal or purging. There will be an occasion for that at a later time anyway. A patch (without the proper indentation probably wanted for readability) which seems to have helped for me: diff --git a/kernel/postinst.d/z50-raspi-firmware b/kernel/postinst.d/z50-raspi-firmware index 1d3ae16..d898847 100755 --- a/kernel/postinst.d/z50-raspi-firmware +++ b/kernel/postinst.d/z50-raspi-firmware @@ -115,6 +115,7 @@ else dtb_path="/usr/lib/linux-image-${latest_kernel#/boot/vmlinuz-}" fi +if [ "$1" != "remove" ]; then if [ "$KERNEL" = "auto" ] ; then for dtb in "${dtb_path}"/bcm*.dtb; do [ -e "${dtb}" ] || continue @@ -128,6 +129,7 @@ if [ "$KERNEL" = "auto" ] ; then cp "$latest_kernel" /boot/firmware/ cp "$latest_initrd" /boot/firmware/ fi +fi -- System Information: Debian Release: bookworm/sid APT prefers unstable APT policy: (990, 'unstable'), (600, 'testing'), (500, 'unstable-debug'), (500, 'buildd-unstable'), (110, 'experimental'), (1, 'experimental-debug'), (1, 'buildd-experimental') merged-usr: no Architecture: armhf Kernel: Linux 6.0.0-5-armmp-lpae (SMP) Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /bin/dash Init: sysvinit (via /sbin/init) LSM: AppArmor: enabled