How to remove kernels from previous release

See question How to remove kernels from previous release? which is marked as duplicate. I ask this again, because the question is special case and not handled in the answers for the related question. I upgraded from 15.10 to 16.04 using an installation media. Kernels from 15.10 are there at /boot, but the package management system seems to be unaware of this after upgrade. Related bug report is here. I do not know, if this happens, if you choose to upgrade in Software Updater.


Solution 1:

If the kernels are not known to dpkg, you can remove them by hand by deleting all their files (I do this to remove locally compiled kernels: How can I remove compiled kernel?)

First check which kernel is running with uname -r

DO NOT DELETE THE RUNNING KERNEL

Let's say you want to delete kernel release 3.19.0-56 from your system.

You can use the release string to locate all of its files and directories. locate -b -e 3.19.0-56 will find existing (-e) files & directories with the string 3.19.0-56 without listing all the files in all the directories (-b)

Having located them, you can append the command to remove them rm -r with xargs. Let's use the -p flag to make xargs interactive, so that we can see the targets and confirm before the command is executed. Here's the whole command:

locate -b -e 3.19.0-56 | xargs -p sudo rm -r

Then type y to really execute rm -r on the targets shown

(this throws some errors complaining that everything that is not a directory does not exist because you're attempting to delete it recursively with -r, but it still works and the files are really gone - check again with sudo updatedb && locate -b -e 3.19.0-56 and nothing will be found)

Finally, to clean the boot menu, run

sudo update-grub