Safely Remove / Delete Old Linux Kernel from a Linux Server

by Vivek Gite on January 8, 2008 · 18 comments

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

Featured Articles:

Share this with other sys admins!
Facebook it - Tweet it - Print it -

{ 18 comments… read them below or add one }

1 blink4blog January 8, 2008

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

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

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

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 vivek January 9, 2008

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

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 vivek January 9, 2008

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

Reply

8 reckless2k2 January 9, 2008

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

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

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

PS – I booted from DVD with: linux rescue

Reply

12 Shibu January 27, 2010

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

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

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

Reply

15 Ahmad October 1, 2011

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 Yousaf October 14, 2011

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

17 Nas Iwuede December 13, 2011

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

18 thiyagi November 14, 2011

Nice,,

Reply

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <blockquote> <pre> <a href="" title="">




Previous post:

Next post: