Modules=DEP; a Remedy for Update-Initramfs' "No Space Left on Device"
The fix? Add MODULES=dep to /etc/initramfs-tools/conf.d/modules, followed up by update-initramfs.
My most recent Debian install created a /boot partition of 237 M.
Starting with Debian's linux-image-5.10.0-4-amd, somewhere in March this year, update-initramfs began reporting problems installing a new kernel next to the current one.
Errors look like this:
Setting up grub-efi-amd64 (2.04-16) ...
Installing for x86_64-efi platform.
grub-install: error: cannot copy `/usr/share/locale/ast/LC_MESSAGES/grub.mo' to `/boot/grub/locale/ast.mo': No space left on device.
Failed: grub-install --target=x86_64-efi
WARNING: Bootloader is not properly installed, system may not be bootable
or this
processing triggers for initramfs-tools (0.139) ...
update-initramfs: Generating /boot/initrd.img-5.10.0-4-amd64
cat: write error: No space left on device
update-initramfs: failed for /boot/initrd.img-5.10.0-4-amd64 with 1.
ESC[1mdpkg:ESC[0m 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
or this:
update-initramfs: Generating /boot/initrd.img-5.14.0-1-amd64
gzip: stdout: No space left on device
E: mkinitramfs failure gzip 1
update-initramfs: failed for /boot/initrd.img-5.14.0-1-amd64 with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
The fix - conveniently mentioned at very top of this post - I found (with encouragement of the Dutch Debian mailing list) in Debian Bug report logs - #929424: initramfs-tools: update-initramfs should not store temporary files on /boot, which I found after reading Debian Bug report logs - #972396: initramfs-tools: Installation fails (no space left on device).
As root, create a file entitled modules in /etc/initramfs-tools/conf.d/modules with just this one line:
MODULES=dep
And then redo, as root,
update-initramfs -u
or
update-initramfs -k all -u
The result (with currently just a single kernel installed):
Filesystem | Size | Used | Avail | Use% | Mounted on | |
---|---|---|---|---|---|---|
before | /dev/nvme0n1p2 | 237M | 101M | 124M | 45% | /boot |
after | /dev/nvme0n1p2 | 237M | 42M | 183M | 19% | /boot |
And that should leave you with enough space for a second kernel.