Remove unused Ubuntu kernels
Published: 28-10-2013 | Author: Remy van Elst | Text only version of this article
Table of Contents
This one liner will help you remove unused Ubuntu kernels. Ubuntu does not remove kernels when they install a new one, however the default /boot partition is relatively small, about 100MB. So after 10 kernels, you can get No Space Left On Device errors with apt-get upgrading. Then you can eitehr remove them manually, or use this one liner to automatically remove them all.
export KERNEL="$(uname -r | grep -Po '([0-9\.\-]*[0-9])?')"; dpkg --get-selections | grep -E "linux-(header|image).*" | grep -iw install | sort | grep -v "$KERNEL" | grep -v "lts" | sed 's/install//g' | xargs dpkg -P
Here's the command by command explanation:
export KERNEL="$(uname -r | grep -Po '([0-9\.\-]*[0-9])?')"
The first portion sets the current kernel number in a variable
KERNEL. It only
takes the number, and greps out any additions like
The second portion first prints out all available packages.
grep -E "linux-(header|image).*"
The third portion greps for all packages with either
image in the name.
grep -iw install
The fourth portion greps out only installed packages.
The fifth portion sorts the output.
grep -v "$KERNEL" | grep -v "lts"
The sixth portion filters out the current kernel and the lts kernel package. Removing those will cause problems.
The seventh part strips off the
xargs dpkg -P
The last part actually removes the packages.
xargs send all the package names
dpkg -P purges the packages. That means, removing them and
removing their configs.