Tried to upgrade my Ubuntu 16 LTS to Ubuntu 18 LTS but it failed because the /boot partition filled up with initrd.img files that had been generated for kernel versions that I didn't think were installed.
root@dev:/boot# update-initramfs -c -k all
update-initramfs: Generating /boot/initrd.img-4.15.0-20-generic
update-initramfs: Generating /boot/initrd.img-4.4.0-109-generic
update-initramfs: Generating /boot/initrd.img-4.4.0-103-generic
WARNING: missing /lib/modules/4.4.0-103-generic
Ensure all necessary drivers are built into the linux image!
depmod: ERROR: could not open directory /lib/modules/4.4.0-103-generic: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_eei2l3/lib/modules/4.4.0-103-generic/modules.order: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_eei2l3/lib/modules/4.4.0-103-generic/modules.builtin: No such file or directory
update-initramfs: Generating /boot/initrd.img-4.4.0-103
WARNING: missing /lib/modules/4.4.0-103
Ensure all necessary drivers are built into the linux image!
depmod: ERROR: could not open directory /lib/modules/4.4.0-103: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_q0vF5s/lib/modules/4.4.0-103/modules.order: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_q0vF5s/lib/modules/4.4.0-103/modules.builtin: No such file or directory
update-initramfs: Generating /boot/initrd.img-4.4.0-101-generic
WARNING: missing /lib/modules/4.4.0-101-generic
Ensure all necessary drivers are built into the linux image!
depmod: ERROR: could not open directory /lib/modules/4.4.0-101-generic: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_tDkeUj/lib/modules/4.4.0-101-generic/modules.order: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_tDkeUj/lib/modules/4.4.0-101-generic/modules.builtin: No such file or directory
update-initramfs: Generating /boot/initrd.img-4.4.0-96-generic
WARNING: missing /lib/modules/4.4.0-96-generic
Ensure all necessary drivers are built into the linux image!
depmod: ERROR: could not open directory /lib/modules/4.4.0-96-generic: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_a2Zhim/lib/modules/4.4.0-96-generic/modules.order: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_a2Zhim/lib/modules/4.4.0-96-generic/modules.builtin: No such file or directory
update-initramfs: Generating /boot/initrd.img-4.4.0-93-generic
WARNING: missing /lib/modules/4.4.0-93-generic
Ensure all necessary drivers are built into the linux image!
depmod: ERROR: could not open directory /lib/modules/4.4.0-93-generic: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_EiUcxL/lib/modules/4.4.0-93-generic/modules.order: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_EiUcxL/lib/modules/4.4.0-93-generic/modules.builtin: No such file or directory
update-initramfs: Generating /boot/initrd.img-4.4.0-92-generic
WARNING: missing /lib/modules/4.4.0-92-generic
Ensure all necessary drivers are built into the linux image!
depmod: ERROR: could not open directory /lib/modules/4.4.0-92-generic: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_0XOK8O/lib/modules/4.4.0-92-generic/modules.order: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_0XOK8O/lib/modules/4.4.0-92-generic/modules.builtin: No such file or directory
update-initramfs: Generating /boot/initrd.img-4.4.0-89-generic
WARNING: missing /lib/modules/4.4.0-89-generic
Ensure all necessary drivers are built into the linux image!
depmod: ERROR: could not open directory /lib/modules/4.4.0-89-generic: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_NZip6q/lib/modules/4.4.0-89-generic/modules.order: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_NZip6q/lib/modules/4.4.0-89-generic/modules.builtin: No such file or directory
update-initramfs: Generating /boot/initrd.img-4.4.0-83-generic
WARNING: missing /lib/modules/4.4.0-83-generic
Ensure all necessary drivers are built into the linux image!
depmod: ERROR: could not open directory /lib/modules/4.4.0-83-generic: No such file or directory
depmod: FATAL: could not search modules: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_kWvqp9/lib/modules/4.4.0-83-generic/modules.order: No such file or directory
depmod: WARNING: could not open /var/tmp/mkinitramfs_kWvqp9/lib/modules/4.4.0-83-generic/modules.builtin: No such file or directory
gzip: stdout: No space left on device
E: mkinitramfs failure cpio 141 gzip 1
update-initramfs: failed for /boot/initrd.img-4.4.0-83-generic with 1.
root@dev:/boot#
Strangely, most of the older kernel versions were no longer installed so I couldn't understand why their ram disks were being created. The package list shows the my last 2 16LTS versions and the 18LTS version from the upgrade and nothing about the other kernel versions.
root@dev:~/tmp# dpkg -l | grep linux
ii linux-headers-4.15.0-20 4.15.0-20.21 all Header files related to Linux kernel version 4.15.0
ii linux-headers-4.15.0-20-generic 4.15.0-20.21 amd64 Linux kernel headers for version 4.15.0 on 64 bit x86 SMP
ii linux-headers-4.4.0-109 4.4.0-109.132 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-109-generic 4.4.0-109.132 amd64 Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii linux-headers-4.4.0-116 4.4.0-116.140 all Header files related to Linux kernel version 4.4.0
ii linux-headers-4.4.0-116-generic 4.4.0-116.140 amd64 Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii linux-headers-generic 4.15.0.20.23 amd64 Generic Linux kernel headers
ii linux-headers-generic-lts-vivid 4.4.0.124.130 amd64 Generic Linux kernel headers (dummy transitional package)
ii linux-image-4.15.0-20-generic 4.15.0-20.21 amd64 Signed kernel image generic
ii linux-image-4.4.0-109-generic 4.4.0-109.132 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-4.4.0-116-generic 4.4.0-116.140 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-extra-4.4.0-109-generic 4.4.0-109.132 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii linux-image-generic 4.15.0.20.23 amd64 Generic Linux kernel image
ii linux-libc-dev:amd64 4.15.0-20.21 amd64 Linux Kernel Headers for development
ii linux-modules-4.15.0-20-generic 4.15.0-20.21 amd64 Linux kernel extra modules for version 4.15.0 on 64 bit x86 SMP
ii linux-modules-extra-4.15.0-20-generic 4.15.0-20.21 amd64 Linux kernel extra modules for version 4.15.0 on 64 bit x86 SMP
update-initramfs
is a shell script so I checked how it found its list of initramfs files to create. The program reads the directory /var/lib/initramfs-toolsa
($STATEDIR
) and gets a list of versions:
root@dev:/var/lib/initramfs-tools# ls -l
total 48
-rw-r--r-- 1 root root 77 May 13 14:36 4.15.0-20-generic
-rw-r--r-- 1 root root 77 May 13 14:36 4.4.0-101-generic
-rw-r--r-- 1 root root 69 May 13 14:36 4.4.0-103
-rw-r--r-- 1 root root 77 May 13 14:36 4.4.0-103-generic
-rw-r--r-- 1 root root 77 May 13 14:36 4.4.0-109-generic
-rw-r--r-- 1 root root 76 May 12 11:07 4.4.0-78-generic
-rw-r--r-- 1 root root 76 May 12 11:07 4.4.0-81-generic
-rw-r--r-- 1 root root 76 May 12 11:07 4.4.0-83-generic
-rw-r--r-- 1 root root 76 May 13 14:36 4.4.0-89-generic
-rw-r--r-- 1 root root 76 May 13 14:36 4.4.0-92-generic
-rw-r--r-- 1 root root 76 May 13 14:36 4.4.0-93-generic
-rw-r--r-- 1 root root 76 May 13 14:36 4.4.0-96-generic
I deleted all the versions I didn't want and ran the update again. All fixed!
root@dev:/boot# update-initramfs -c -k all
update-initramfs: Generating /boot/initrd.img-4.15.0-20-generic
update-initramfs: Generating /boot/initrd.img-4.4.0-109-generic