[SRU] remove orphaned initrd old-dkms files in /boot

Bug #1791959 reported by Tiago Stürmer Daitx
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
initramfs-tools (Ubuntu)
Fix Released
Medium
Unassigned
Xenial
Fix Released
Undecided
Unassigned
Bionic
Fix Released
Undecided
Unassigned

Bug Description

[Impact]
If a dkms package is installed which has REMAKE_INITRD or the same setting has been 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 old-dkms initrd 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 and being carried forward with every upgrade.

Note: Filling up the /boot partition causes updates and upgrades to fail.

[Test Case]
As the fix for bug 1515513 is available on Xenial and Bionic it is no longer possible to reproduce this by simply installing and updating kernels - dkms 2.2.0.3-2ubuntu11.3/xenial or 2.3-3ubuntu1/bionic would be required for that. In order to replicate it an old dkms file will be created by hand.

This assumes a new Xenial/Bionic schroot.

1) create files to work as a placeholders for old dkms files (there are 4 possible namings for these files)
touch /boot/initrd-4.0.0-0-generic.img.old-dkms /boot/initramfs-4.0.0-0-generic.img.old-dkms /boot/initrd.img-4.0.0-0-generic.old-dkms /boot/initrd-4.0.0-0-generic.old-dkms

2) install 3 old kernels, r8168-dkms, and the current initramfs-tools
* xenial:
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
* bionic:
apt-get install -y linux-image-4.15.0-32-generic linux-image-4.15.0-33-generic linux-image-4.15.0-34-generic r8168-dkms initramfs-tools=0.130ubuntu3.3

3) install the headers for the old kernels (forces dkms to run)
* xenial:
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
* bionic:
apt-get install -y linux-headers-4.15.0-32-generic linux-headers-4.15.0-33-generic linux-headers-4.15.0-34-generic

4) verify that there are 7 old-dkms, the 4 manually created ones and one for each installed kernel
ls -1 /boot/*.old-dkms

5) install the initramfs-tools from proposed that contains this fix
apt-get install -y initramfs-tools

6) verify that the manually created old-dkms files were removed and that there are only 3 files now, one for each installed kernel
ls /boot/*.old-dkms

7) mark kernel images and headers as automatically installed
apt-mark auto linux-image-4*-generic linux-headers-4*-generic

8) autoremove the older kernel
apt-get autoremove -y

9) verify that there are now only 2 old-dkms, one for each installed kernel
ls -1 /boot/*.old-dkms

These steps guarantees that:
- orphaned old-dkms are correctly removed from /boot
- non-orphaned old-dkms are kept
- when kernel is removed the related old-dkms are also deleted

[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.

description: updated
tags: added: xenial
tags: added: patch
Changed in dkms (Ubuntu):
importance: Undecided → Medium
status: New → Confirmed
Changed in initramfs-tools (Ubuntu):
status: New → Confirmed
importance: Undecided → Medium
description: updated
Changed in dkms (Ubuntu):
status: Confirmed → Invalid
Changed in dkms (Ubuntu Xenial):
status: New → Invalid
Changed in dkms (Ubuntu Bionic):
status: New → Invalid
description: updated
summary: - remove /boot/initrd.img-*.old-dkms files left behind
+ [SRU] remove orphaned initrd old-dkms files in /boot
description: updated
Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote :

attaching xenial sru patch

description: updated
Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote :

attaching bionic sru patch

tags: added: bionic
Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote :

attaching cosmic patch

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package initramfs-tools - 0.131ubuntu11

---------------
initramfs-tools (0.131ubuntu11) cosmic; urgency=medium

  * debian/initramfs-tools.postinst: remove orphaned old-dkms initrd files
    in /boot. (LP: #1791959)

 -- Tiago Stürmer Daitx <email address hidden> Wed, 12 Sep 2018 12:06:58 +0000

Changed in initramfs-tools (Ubuntu):
status: Confirmed → Fix Released
Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote :
no longer affects: dkms (Ubuntu)
no longer affects: dkms (Ubuntu Xenial)
no longer affects: dkms (Ubuntu Bionic)
Revision history for this message
Chris J Arges (arges) wrote : Please test proposed package

Hello Tiago, or anyone else affected,

Accepted initramfs-tools into bionic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/initramfs-tools/0.130ubuntu3.4 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-bionic to verification-done-bionic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-bionic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in initramfs-tools (Ubuntu Bionic):
status: New → Fix Committed
tags: added: verification-needed verification-needed-bionic
Changed in initramfs-tools (Ubuntu Xenial):
status: New → Fix Committed
tags: added: verification-needed-xenial
Revision history for this message
Chris J Arges (arges) wrote :

Hello Tiago, or anyone else affected,

Accepted initramfs-tools into xenial-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/initramfs-tools/0.122ubuntu8.13 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-xenial to verification-done-xenial. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-xenial. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote :

Verification done on Xenial by following the test case.

tags: added: verification-done-xenial
removed: verification-needed-xenial
Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote :

Verification failed on Bionic when following the test case, the postinst script has a bad check for the previous version of initramfs-tools it expected - it is testing against a version from Xenial, not the Bionic version.

tags: added: verification-failed-bionic
removed: verification-needed verification-needed-bionic
Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote :

I have prepared a new merge proposal that includes the right version check in the postinst for Bionic. This has been uploaded to the Bionic queue as 0.130ubuntu3.5.

Revision history for this message
Łukasz Zemczak (sil2100) wrote :

Hello Tiago, or anyone else affected,

Accepted initramfs-tools into bionic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/initramfs-tools/0.130ubuntu3.5 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-bionic to verification-done-bionic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-bionic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

tags: added: verification-needed verification-needed-bionic
removed: verification-failed-bionic
Revision history for this message
Tiago Stürmer Daitx (tdaitx) wrote :

Verified that initramfs-tools 0.130ubuntu3.5 in bionic-proposed now works as expected after following through the testcase.

As expected orphaned old-dkms files are properly removed and no other files are affected.

tags: added: verification-done-bionic
removed: verification-needed verification-needed-bionic
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package initramfs-tools - 0.130ubuntu3.5

---------------
initramfs-tools (0.130ubuntu3.5) bionic; urgency=medium

  * debian/initramfs-tools.postinst: fix version comparison and
    so it will run for any version earlier than 0.130ubuntu3.5.

initramfs-tools (0.130ubuntu3.4) bionic; urgency=medium

  [ Colin Watson ]
  * [b4804dd] Only sync the filesystem containing the initramfs
    (Closes: #882380) (LP: #1667512)

  [ Tiago Stürmer Daitx ]
  * debian/initramfs-tools.postinst: remove orphaned old-dkms initrd files
    in /boot. (LP: #1791959)

 -- Tiago Stürmer Daitx <email address hidden> Thu, 27 Sep 2018 16:21:37 +0000

Changed in initramfs-tools (Ubuntu Bionic):
status: Fix Committed → Fix Released
Revision history for this message
Łukasz Zemczak (sil2100) wrote : Update Released

The verification of the Stable Release Update for initramfs-tools has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package initramfs-tools - 0.122ubuntu8.13

---------------
initramfs-tools (0.122ubuntu8.13) xenial; urgency=medium

  [ Colin Watson ]
  * [b4804dd] Only sync the filesystem containing the initramfs
    (Closes: #882380) (LP: #1667512)

  [ Tiago Stürmer Daitx ]
  * debian/initramfs-tools.postinst: remove orphaned old-dkms initrd files
    in /boot. (LP: #1791959)

 -- Tiago Stürmer Daitx <email address hidden> Tue, 18 Sep 2018 09:18:47 +0000

Changed in initramfs-tools (Ubuntu Xenial):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.