In the past few years, the size of the kernel images in Debian have been
steadily growing. I don't see this as a problem per se, but it has been causing
me trouble, as my /boot partition has become too small to accommodate two
kernel images at the same time.
Since I'm running Debian Unstable on my personal systems and keep them updated
with unattended-upgrade, this meant each (frequent) kernel upgrade triggered
an error like this one:
update-initramfs: failed for /boot/initrd.img-6.17.11+deb14-amd64 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)
This would in turn break the automated upgrade process and require me to manually delete the currently running kernel (which works, but isn't great) to complete the upgrade.
The "obvious" solution would have been to increase the size of my /boot
partition to something larger than the default 456M. Since my systems use
full-disk encryption and LVM, this isn't trivial and would have required me to
play Tetris and swap files back and forth using another drive.
Another solution proposed by anarcat was to migrate to systemd-boot
(I'm still using grub), use Unified Kernel Images (UKI) and merge the
/boot and /boot/efi partitions. Since I already have a bunch of
configurations using grub and I am not too keen on systemd taking over all the
things on my computer, I was somewhat reluctant.
As my computers are all configured by Puppet, I could of course have done a complete system reinstallation, but again, this was somewhat more involved than what I wanted it to be.
After looking online for a while, I finally stumbled on this blog post by Neil
Brown detailing how to shrink the size of the initramfs images. With
MODULES=dep my images shrunk from 188M to 41M, fixing my issue. Thanks
Neil!
I was somewhat worried removing kernel modules would break something on my
systems, but so far, I only had to manually load the i2c_dev module, as I
need it to manage my home monitor's brightness using ddcutil.