How to Easily Remove Old Kernels in Ubuntu 16.04

Linux Kernel

For LVM, encrypted, or limited-storage systems, you need to regularly remove old kernels to prevent your computer (/boot partition) from running out of storage space.

Removing old kernels is easy. You can do it manually, or set unattended-upgrades to do it automatically. For details, open terminal from App Launcher or via Ctrl+Alt+T shortcut keys, and follow the steps below:

Remove Automatically Installed Kernels:

1. To remove the kernels that were automatically installed via regular system updates, open terminal and run:

sudo apt autoremove --purge

It will ask you to type in user password and then remove old kernels as well as other automatically installed packages that are no longer needed.

2. To enable automatic removing of old kernels:
[ac-box style=”alert”]Enable Kernel autoremoving may cause problems if your package management is broken, see this bug.[/ac-box]

  • Run command to enable unattended upgrades. For Desktop Ubuntu 16.04, this is enabled by default.
    sudo dpkg-reconfigure unattended-upgrades
  • Edit the config file via command (first install gksu via sudo apt install gksu):
    gksudo gedit /etc/apt/apt.conf.d/50unattended-upgrades
  • When the file opens, uncomment the following line and change the value to true:

    //Unattended-Upgrade::Remove-Unused-Dependencies "false";

    So it looks like:

    Remove Manually Installed Kernels:

    If you install latest kernels from Kernel PPA, or build your own kernels with patches, a “purge-old-kernels” script is the best and the easiest way to remove old kernels.

    1. The script is maintained in byobu package, so first install it via:

    sudo apt install byobu

    2. Then run the script regularly to remove old kernels:

    sudo purge-old-kernels

    Remove Old Kernels via DPKG

    If your /boot partition has already full while doing an upgrade or package install, and apt (the script above uses apt) can’t remove packages due to broken dependency, here you can manually find out the old kernel packages and remove them via DPKG:

    1. Run command to check out current kernel and DON’T REMOVE it:

    uname -r

    2. List all kernels excluding the current booted:

    dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)

    Example output:

    rc  linux-image-4.4.0-15-generic               4.4.0-15.31                                         amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
    ii  linux-image-4.4.0-18-generic               4.4.0-18.34                                         amd64        Linux kernel image for version 4.4.0 on 64 bit x86 SMP
    rc  linux-image-4.6.0-040600rc3-generic        4.6.0-040600rc3.201604120934                        amd64        Linux kernel image for version 4.6.0 on 64 bit x86 SMP

    There will be three status in the listed kernel images:

    • rc: means it has already been removed.
    • ii: means installed, eligible for removal.
    • iU: DON’T REMOVE. It means not installed, but queued for install in apt.

    3. Remove old kernel images in status ii, it’s “linux-image-4.4.0-18-generic” in the example above:

    sudo dpkg --purge linux-image-4.4.0-18-generic

    If the command fails, remove the dependency packages that the output tells you via sudo dpkg --purge PACKAGE.

    And also try to remove the respective header and common header packages (Don’t worry if the command fails):

    sudo dpkg --purge linux-image-4.4.0-18-header linux-image-4.4.0-18

    Finally you may fix the apt broken dependency via command:

    sudo apt -f install