Safely Remove / Delete Old Linux Kernel from a Linux Server

by on January 8, 2008 · 24 comments· LAST UPDATED January 9, 2008

in , ,

Q. We have 4 different versions of Linux kernel installed by yum command under CentOS Linux. Currently I'm using only latest version 2.6.18-53.1.4.el5. What is the proper and suggested method to remove old kernels from a CemtOS / Debian Linux server?

A.Most Linux distro keeps old kernel files so that you can revert back in case of emergency pop up due to hardware / software incompatibility issues. Kernel is nothing but other files on Linux box. Following is the suggested way to remove old kernels.

Step # 1: Find current kernel version

uname -r
Output:

2.6.18-53.1.4.el5

Step #2: List all installed kernels

Use rpm or dpkg command:
# rpm -q kernel
Output:

kernel-2.6.12-1.el5
kernel-2.6.18-17.el5
kernel-2.6.18-53.el5
kernel-2.6.18-53.1.4.el5

Debian / Ubuntu Linux user, enter:
$ dpkg --list 'linux-image*'
Output:

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name                          Version                       Description
+++-=============================-=============================-==========================================================================
ii  linux-image                   2.6.22.14.21                  Generic Linux kernel image.
un  linux-image-2.6                                       (no description available)
rc  linux-image-2.6.20-15-generic 2.6.20-15.27                  Linux kernel image for version 2.6.20 on x86/x86_64
ii  linux-image-2.6.20-16-generic 2.6.20-16.32                  Linux kernel image for version 2.6.20 on x86/x86_64
ii  linux-image-2.6.22-14-generic 2.6.22-14.47                  Linux kernel image for version 2.6.22 on x86/x86_64
ii  linux-image-generic           2.6.22.14.21                  Generic Linux kernel image

Step #3: Remove all old kernels

WARNING! These examples may result into unstable system if not executed with care. Do not remove the kernel the system is currently running.

Choose which kernel you want to uninstall from the list of those installed. Type the following command to remove the kernel package under RHEL / CentOS / Fedora Linux:
# rpm -e kernel-2.6.12-1.el5
Type the following command to remove the kernel package under Debian / Ubuntu Linux:
$ sudo apt-get remove linux-image-2.6.22-14-generic

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 24 comments… read them below or add one }

1 blink4blog January 8, 2008 at 11:53 am

Hi there,

Does these commands work for SUSE 10.3? I tried

# rpm -q kernel

does not return the list, but message says:

package kernel is not installed

Reply

2 suranjan September 25, 2010 at 12:02 pm

you should write like
rpm -e kernel “packagename”.
first check which do you want to uninstall by writing uname -r.

Reply

3 Casper Pedersen January 8, 2008 at 12:16 pm

SuSE does not leave old kernels behind (as long as nothing have been modified), it updates the kernel. Where as RedHat does an install.

Reply

4 Nilesh January 9, 2008 at 1:04 am

hey the method is wrong for Fedora.

$ sudo apt-get remove linux-image-2.6.22-14-generic

doesn’t usually work as default packman in Fedora is yum and there is no package like linux-image.

it simply called kernel in Fedora.

Reply

5 nixCraft January 9, 2008 at 9:48 am

Nilesh,

apt-get only works on Debian / Ubuntu and other Debian based distro. For fedora, use yum or rpm command.

Reply

6 Nilesh January 9, 2008 at 12:25 pm

vivek, first you in the post said that remove old kernel using ur cmd on Fedora. Now you updated it and u r tellin
me now ?? lol. i know that’s why i suggested. :)

Reply

7 nixCraft January 9, 2008 at 2:32 pm

Nilesh, yup, it was a typo. Thanks for the heads up and your post. :)

Reply

8 reckless2k2 January 9, 2008 at 2:49 pm

I remove old kernels in CentOS using yum. I usually check the current running kernel:

#uname -r

query the list of kernels:

#rpm -qa kernel*

and then remove older kernels using yum:

#yum remove kernel-x

Reply

9 Sadicote December 27, 2008 at 10:02 am

Hi, for your kind information:

sade@sade-desktop:~$ dpkg --list 'linux-image*'
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Cfg-files/Unpacked/Failed-cfg/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
un  linux-image             (no description available)
un  linux-image-2.          (no description available)
ii  linux-image-2. 2.6.27-7.16    Linux kernel image for version 2.6.27 on x86
ii  linux-image-2. 2.6.27-9.19    Linux kernel image for version 2.6.27 on x86
ii  linux-image-ge 2.6.27.9.13    Generic Linux kernel image
sade@sade-desktop:~$ sudo apt-get remove linux-image-2. 2.6.27-7.16
[sudo] password for sade:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Couldn't find package linux-image-2.
sade@sade-desktop:~$ sudo apt-get remove linux-image 2.6.27-7.16
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package linux-image is not installed, so not removed
E: Couldn't find package 2.6.27-7.16
sade@sade-desktop:~$

Reply

10 Chris March 14, 2009 at 5:55 am

Hi Vivek, keep up the great work!

I just removed all my kernels on accident. Now when I boot from DVD I do not have /dev/cdrom, nor /dev/scdX, and I cannot get to kernel rpm packages.
I also cannot chroot /mnt/sysimage
The error is: cannot run command ‘/bin/sh': No such file or directory

Please suggest how to restore this system.
Best regards,
Chris

Reply

11 Chris March 14, 2009 at 5:56 am

PS – I booted from DVD with: linux rescue

Reply

12 Shibu January 27, 2010 at 12:26 pm

I used sudo apt-get remove linux-image-2.6.28-11-generic and removed the old kernel. But the configuration files are not removed. It shows
rc linux-image-2. 2.6.28-11.42 Linux kernel image for version 2.6.28 on x86
Is there any way to clean up the configuration files also of the removed kernel?

Reply

13 dude May 11, 2010 at 10:21 am

None of this worked for 9.04, 9.10 or 10.04.
Guess i start using something else then Ubuntu since they allways have to rename functions

Reply

14 excogitation November 3, 2010 at 6:22 pm

@Shibu: dpkg –purge linux-image-2. 2.6.28-11.42

Reply

15 Ahmad October 1, 2011 at 3:57 pm

This command removes all the old kernels:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

Reply

16 Simon May 7, 2013 at 9:24 pm

Ahmad – thanks for this command, brilliant!

Reply

17 DanielS May 16, 2013 at 11:07 pm

This works a treat! Thanks a ton!
I really do need to teach myself some sed love…

Reply

18 Yousaf October 14, 2011 at 7:04 pm

i have the following problem

{
[root@yousaf Yousaf]# uname
Linux
[root@yousaf Yousaf]# uname -r
2.6.33.3-85.fc13.i686
[root@yousaf Yousaf]# rpm -q kernel
kernel-2.6.33.3-85.fc13.i686
[root@yousaf Yousaf]# rpm -e kernel-2.6.33.-85.fc13.i686
error: package kernel-2.6.33.-85.fc13.i686 is not installed
[root@yousaf Yousaf]# sudo rpm -e kernel-2.6.33.-85.fc13.i686
error: package kernel-2.6.33.-85.fc13.i686 is not installed
}

What i do some problem i have face in many software when i want to remove that

Reply

19 Nas Iwuede December 13, 2011 at 2:37 pm

use this cmd
rpm -r kernel-2.6.33.3-85.fc13.i686
or
yum remove kernel-2.6.33.3-85.fc13.i686

besure to install previous version of kernel

Reply

20 thiyagi November 14, 2011 at 9:25 am

Nice,,

Reply

21 Alexandr February 22, 2013 at 10:42 am

yum list installed | grep kernel-*
yum remove (or erase) kernel-*

then check your all rest kernels…

Reply

22 Kenny June 3, 2013 at 6:41 am

I think this is exactly what I’m looking for. However, I have the problem that when I try:

sudo apt-get remove linux-image-3.5.0-17-generic

I get:

The following packages have unmet dependencies:
linux-image-extra-3.5.0-17-generic : Depends: linux-image-3.5.0-17-generic but it is not going to be installed
linux-image-extra-3.5.0-32-generic : Depends: linux-image-3.5.0-32-generic but it is not going to be installed
linux-image-generic : Depends: linux-image-3.5.0-32-generic but it is not going to be installed
E: Unmet dependencies. Try ‘apt-get -f install’ with no packages (or specify a solution).

Of course, sudo apt-get -f install fails with the following message:

dpkg: error processing /var/cache/apt/archives/linux-image-3.5.0-32-generic_3.5.0-32.53_amd64.deb (–unpack):
cannot copy extracted data for ‘./boot/System.map-3.5.0-32-generic’ to ‘/boot/System.map-3.5.0-32-generic.dpkg-new': failed to write (No space left on device)
No apport report written because the error message indicates a disk full error

Apparently my boot partition is too full for me to run sudo apt-get -f install, which I need to run in order to clean up my boot partition! Any thoughts?

Reply

23 Alexandr June 14, 2013 at 9:03 am

For Oracle Linux you have to do:
rpm -qa kernel-uek
rpm -e kernel-uek-

Works only for Oracle kernels!

Reply

24 PixEye February 25, 2014 at 9:56 am

Hi, I wrote a shell script for GNU/Linux Debian base systems such as Ubuntu boxes.
You can find it at github:
https://github.com/PixEye/PixShellScripts/blob/master/clean-old-kernels.sh
Hope this helps.

Reply

Leave a Comment

Tagged as: , , , , , , , , , , , , ,

Previous Faq:

Next Faq: