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

Bug #1791959 reported by Tiago Stürmer Daitx on 2018-09-11
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
initramfs-tools (Ubuntu)
Medium
Unassigned
Xenial
Undecided
Unassigned
Bionic
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.

Related branches

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
Tiago Stürmer Daitx (tdaitx) wrote :

attaching xenial sru patch

description: updated
Tiago Stürmer Daitx (tdaitx) wrote :

attaching bionic sru patch

tags: added: bionic
Tiago Stürmer Daitx (tdaitx) wrote :

attaching cosmic patch

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
Tiago Stürmer Daitx (tdaitx) wrote :
no longer affects: dkms (Ubuntu)
no longer affects: dkms (Ubuntu Xenial)
no longer affects: dkms (Ubuntu Bionic)

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
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!

Tiago Stürmer Daitx (tdaitx) wrote :

Verification done on Xenial by following the test case.

tags: added: verification-done-xenial
removed: verification-needed-xenial
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
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.

Ł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
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
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

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.

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  Edit
Everyone can see this information.

Other bug subscribers