kernel referred to by /*.old autoremoved

Bug #1637797 reported by lvm
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
apt (Ubuntu)
Confirmed
Undecided
Unassigned

Bug Description

apt-get suggests to remove and, with autoremove command, actually removes previous kernel referenced by /*.old links and breaks the ability to boot with a previous kernel. Kernel referenced by /*.old may not be autoremoved.

# apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  linux-headers-3.13.0-88 linux-headers-3.13.0-88-generic
  linux-image-3.13.0-88-generic linux-image-extra-3.13.0-88-generic
Use 'apt-get autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Press any key to continue...

# ls -l /*.old
lrwxrwxrwx 1 root root 33 Jun 10 11:57 /initrd.img.old -> boot/initrd.img-3.13.0-88-generic
lrwxrwxrwx 1 root root 30 Jun 10 11:57 /vmlinuz.old -> boot/vmlinuz-3.13.0-88-generic

# uname -a
Linux server 3.13.0-100-generic #147-Ubuntu SMP Tue Oct 18 16:49:53 UTC 2016 i686 athlon i686 GNU/Linux
---
ApportVersion: 2.14.1-0ubuntu3.21
Architecture: i386
DistroRelease: Ubuntu 14.04
InstallationDate: Installed on 2011-08-18 (1899 days ago)
InstallationMedia: Kubuntu 11.04 "Natty Narwhal" - Release i386 (20110427)
NonfreeKernelModules: nvidia
Package: apt 1.0.1ubuntu2.15
PackageArchitecture: i386
ProcVersionSignature: Ubuntu 3.13.0-100.147-generic 3.13.11-ckt39
Tags: trusty
Uname: Linux 3.13.0-100-generic i686
UpgradeStatus: Upgraded to trusty on 2014-10-18 (743 days ago)
UserGroups:

_MarkForUpload: True

Revision history for this message
lvm (lvm-royal) wrote : Dependencies.txt

apport information

tags: added: apport-collected trusty
description: updated
Revision history for this message
lvm (lvm-royal) wrote : ProcEnviron.txt

apport information

Revision history for this message
Julian Andres Klode (juliank) wrote :

APT should keep those kernels in recent versions:

# Mark as not-for-autoremoval those kernel packages that are:
# - the currently booted version
# - the kernel version we've been called for
# - the latest kernel version (as determined by debian version number)
# - the second-latest kernel version

I'm not sure what 1.0 does. Maybe it needs a cherry-pick of the fix for Debian bug 772732

Robie Basak (racb)
tags: added: kernel-autoremove
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in apt (Ubuntu):
status: New → Confirmed
Revision history for this message
Marius Gedminas (mgedmin) wrote :

I accidentally ran apt-get autoremove twice on a couple of Ubuntu 14.04 LTS servers, and it removed the stale kernel (on 1st run) and the old kernel (on 2nd run), leaving the latest kernel the only one available in /boot.

The .old kernel was linux-headers-3.13.0-139-generic, and if I look at /etc/apt/apt.conf.d/01autoremove-kernels, I see that it should've been kept:

// DO NOT EDIT! File autogenerated by /etc/kernel/postinst.d/apt-auto-removal
APT::NeverAutoRemove
{
   "^linux-image-3\.13\.0-139-generic$";
   "^linux-image-3\.13\.0-141-generic$";
   "^linux-headers-3\.13\.0-139-generic$";
   "^linux-headers-3\.13\.0-141-generic$";
   "^linux-image-extra-3\.13\.0-139-generic$";
   "^linux-image-extra-3\.13\.0-141-generic$";
   "^linux-signed-image-3\.13\.0-139-generic$";
   "^linux-signed-image-3\.13\.0-141-generic$";
   "^kfreebsd-image-3\.13\.0-139-generic$";
   "^kfreebsd-image-3\.13\.0-141-generic$";
   "^kfreebsd-headers-3\.13\.0-139-generic$";
   "^kfreebsd-headers-3\.13\.0-141-generic$";
   "^gnumach-image-3\.13\.0-139-generic$";
   "^gnumach-image-3\.13\.0-141-generic$";
   "^.*-modules-3\.13\.0-139-generic$";
   "^.*-modules-3\.13\.0-141-generic$";
   "^.*-kernel-3\.13\.0-139-generic$";
   "^.*-kernel-3\.13\.0-141-generic$";
   "^linux-backports-modules-.*-3\.13\.0-139-generic$";
   "^linux-backports-modules-.*-3\.13\.0-141-generic$";
   "^linux-tools-3\.13\.0-139-generic$";
   "^linux-tools-3\.13\.0-141-generic$";
};

The timestamp of /etc/kernel/postinst.d/apt-auto-removal is very recent, so I cannot guarantee that it had the same contents at the time of my second apt-get autoremove run.

(Thankfully, running apt-get autoremove for the third time does not try to remove my current--and only--kernel.)

Revision history for this message
Marius Gedminas (mgedmin) wrote :

One interesting thing is that this bug didn't manifest on other Ubuntu 14.04 LTS servers.

I've a couple of sibling servers that are supposed to be exact copies (one is a hot standby for the other). One of them is now down to just one kernel, with two kernels listed in /etc/apt/apt.conf.d/01autoremove-kernels. The other has two kernels left, but it has *three* kernels listed in /etc/apt/apt.conf.d/01autoremove-kernels.

In both cases some of the kernels listed in APT::NeverAutoRemove did get removed.

Revision history for this message
Marius Gedminas (mgedmin) wrote :

FWIW I can reinstall linux-image-3.13.0-139-generic, mark it as autoremovable with apt-mark auto linux-image-3.13.0-139-generic, and at that point apt-get autoremove doesn't try to remove it any more. (But the apt-get install didn't restore /vmlinuz.old or /initrd.img.old symlinks.)

I'm not sure how to reproduce the original bug.

Revision history for this message
Marius Gedminas (mgedmin) wrote :

The nightly unattended-upgrade (which I've configured to Unattended-Upgrade::Remove-Unused-Dependencies "true";) removed the .old kernel on two different 14.04 LTS servers last night, leaving both with no backup kernel at all.

In fact now that I'm paying attention again, I have quite a number of servers without a /vmlinuz.old.

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.