[Impact]
If a dkms package is installed which has REMAKE_INITRD or the same setting has be manually configured by a user then when a kernel is removed its possible for an ".old-dkms" file to be left in /boot with no associated kernel.
bug 1515513 dealt with removing initrd.img-<version>.old-dkms files using the kernel's prerm hook, but that is only executed for the kernel version being removed: any other old-dkms file generated prior to that would not be removed by the hook, taking space in the /boot directory.
Note: Filling up the /boot partition causes updates to fail.
[Test Case]
As the fix for bug 1515513 is available on Xenial it is no longer possible to reproduce this by simply installing and updating kernels (dkms 2.2.0.3-2ubuntu11.3 would be required for that). In order to replicate it an old dkms file will be created by hand.
This assumes a new Xenial schroot.
1) create a file to work as a placeholder for the initrd.img old dkms file
sudo touch /boot/initrd.img-4.0.0-0-generic.old-dkms
2) install 3 old kernels, r8168-dkms, and the current initramfs-tools
sudo apt-get install -y linux-image-4.4.0-21-generic linux-image-4.4.0-22-generic linux-image-4.4.0-24-generic r8168-dkms initramfs-tools=0.122ubuntu8.12
3) install the headers for the old kernels (forces dkms to run)
sudo apt-get install -y linux-headers-4.4.0-21-generic linux-headers-4.4.0-22-generic linux-headers-4.4.0-24-generic
4) verify that there are 4 old-dkms
ls /boot/*.old-dkms
5) install the proposed initramfs-tools with this fix
sudo apt-get install -y initramfs-tools
6) verify that the manually created old-dkms file was removed (only 3 files now)
ls /boot/*.old-dkms
7) autoremove the older kernel
sudo apt-get autoremove -y
8) verify that there are now only 2 old-dkms
ls /boot/*.old-dkms
[Regression Potential]
Somebody out there might expect the .old-dkms file to be kept, but that seems like an odd expectation.
One notices *.old-dkms files being left behind still sitting on the disk after purging the related kernel. This can cause /boot to become full, and when it gets really bad, even sudo apt-get autoremove won't fix the problem - only deleting the old-dkms files manually solves the problem.
[Impact]
If a dkms package is installed which has REMAKE_INITRD or the same setting has be manually configured by a user then when a kernel is removed its possible for an ".old-dkms" file to be left in /boot with no associated kernel.
bug 1515513 dealt with removing initrd. img-<version> .old-dkms files using the kernel's prerm hook, but that is only executed for the kernel version being removed: any other old-dkms file generated prior to that would not be removed by the hook, taking space in the /boot directory.
Note: Filling up the /boot partition causes updates to fail.
[Test Case]
As the fix for bug 1515513 is available on Xenial it is no longer possible to reproduce this by simply installing and updating kernels (dkms 2.2.0.3-2ubuntu11.3 would be required for that). In order to replicate it an old dkms file will be created by hand.
This assumes a new Xenial schroot.
1) create a file to work as a placeholder for the initrd.img old dkms file img-4.0. 0-0-generic. old-dkms
sudo touch /boot/initrd.
2) install 3 old kernels, r8168-dkms, and the current initramfs-tools 4.4.0-21- generic linux-image- 4.4.0-22- generic linux-image- 4.4.0-24- generic r8168-dkms initramfs- tools=0. 122ubuntu8. 12
sudo apt-get install -y linux-image-
3) install the headers for the old kernels (forces dkms to run) 4.4.0-21- generic linux-headers- 4.4.0-22- generic linux-headers- 4.4.0-24- generic
sudo apt-get install -y linux-headers-
4) verify that there are 4 old-dkms
ls /boot/*.old-dkms
5) install the proposed initramfs-tools with this fix
sudo apt-get install -y initramfs-tools
6) verify that the manually created old-dkms file was removed (only 3 files now)
ls /boot/*.old-dkms
7) autoremove the older kernel
sudo apt-get autoremove -y
8) verify that there are now only 2 old-dkms
ls /boot/*.old-dkms
[Regression Potential]
Somebody out there might expect the .old-dkms file to be kept, but that seems like an odd expectation.
One notices *.old-dkms files being left behind still sitting on the disk after purging the related kernel. This can cause /boot to become full, and when it gets really bad, even sudo apt-get autoremove won't fix the problem - only deleting the old-dkms files manually solves the problem.