Remove unused Ubuntu kernels
Published: 28-10-2013 | Author: Remy van Elst | Text only version of this article
❗ This post is over seven years old. It may no longer be up to date. Opinions may have changed.
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
Consider sponsoring me on Github. It means the world to me if you show your appreciation and you'll help pay the server costs.
You can also sponsor me by getting a Digital Ocean VPS. With this referral link you'll get $100 credit for 60 days.
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.