Tecmint: Linux Howtos, Tutorials & Guides

How to Delete Old Unused Kernels in CentOS, RHEL and Fedora

Remove Old Kernels in CentOS

In this article, we will show how to remove old/unused kernel images on RHEL/CentOS/Fedora systems. However, before you remove an old kernel, it is important to keep your kernel up to date; install the latest version in order to leverage new kernel functions and to protect your system from vulnerabilities that have been discovered in older versions.

To install or upgrade to latest kernel version in RHEL/CentOS/Fedora systems, read this guide:

  1. How to Install or Upgrade to Latest Kernel Version in CentOS 7

Attention: On the contrary, is recommended to keep at least one or two old kernels to fall back to in case there is a problem with an update.

To display the current version of Linux (kernel) running on your system, run this command.

# uname -sr

Linux 3.10.0-327.10.1.el7.x86_64

List All Installed Kernels on System

You can list all kernel images installed on your system like this.

# rpm -q kernel

kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.14.1.el7.x86_64
kernel-3.10.0-327.3.1.el7.x86_64
kernel-3.10.0-327.10.1.el7.x86_64

Removing Old/Unused Kernels on CentOS/RHEL

You need to install yum-utils, which is an assortment of utilities that integrate with yum to make it more powerful and easier to use, by extending its original features in several different ways.

# yum install yum-utils

One of these utilities is package-cleanup which you can use to delete old kernel as shown below, the count flag is used to specify the number of kernels you want to leave on the system.

# package-cleanup --oldkernels --count=2
Removing Old Kernels
Loaded plugins: fastestmirror, langpacks, product-id, versionlock
--> Running transaction check
---> Package kernel.x86_64 0:3.10.0-229.el7 will be erased
---> Package kernel.x86_64 0:3.10.0-229.14.1.el7 will be erased
---> Package kernel-devel.x86_64 0:3.10.0-229.1.2.el7 will be erased
---> Package kernel-devel.x86_64 0:3.10.0-229.14.1.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

===============================================================================================================================================================================================
Package                                       Arch                                    Version                                                Repository                                  Size
===============================================================================================================================================================================================
Removing:
kernel                                        x86_64                                  3.10.0-229.el7                                         @anaconda                                  131 M
kernel                                        x86_64                                  3.10.0-229.14.1.el7                                    @updates                                   131 M
kernel-devel                                  x86_64                                  3.10.0-229.1.2.el7                                     @updates                                    32 M
kernel-devel                                  x86_64                                  3.10.0-229.14.1.el7                                    @updates                                    32 M

Transaction Summary
===============================================================================================================================================================================================
Remove  4 Packages

Installed size: 326 M
Is this ok [y/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Erasing    : kernel-devel.x86_64                            1/4 
Erasing    : kernel.x86_64                                  2/4 
Erasing    : kernel-devel.x86_64                            3/4 
Erasing    : kernel.x86_64                                  4/4 
Loading mirror speeds from cached hostfile
* base: centos.mirror.snu.edu.in
* epel: repo.ugm.ac.id
* extras: centos.mirror.snu.edu.in
* rpmforge: kartolo.sby.datautama.net.id
* updates: centos.mirror.snu.edu.in
Verifying  : kernel-3.10.0-229.el7.x86_64                   1/4 
Verifying  : kernel-devel-3.10.0-229.14.1.el7.x86_64        2/4 
Verifying  : kernel-3.10.0-229.14.1.el7.x86_64              3/4 
Verifying  : kernel-devel-3.10.0-229.1.2.el7.x86_64         4/4 

Removed:
kernel.x86_64 0:3.10.0-229.el7           kernel.x86_64 0:3.10.0-229.14.1.el7           kernel-devel.x86_64 0:3.10.0-229.1.2.el7           kernel-devel.x86_64 0:3.10.0-229.14.1.el7          

Complete!

Important: After running the above command, it will remove all old/unused kernels and keep the current running and old latest kernel as backup.

Removing Old/Unused Kernels on Fedora

Fedora now uses dnf package manager, a new version of yum package manager, so you need to use this command below to remove old kernels on Fedora.

# dnf remove $(dnf repoquery --installonly --latest-limit 2 -q) 

Another alternative way to remove old kernels automatically is setting the kernel limit in yum.conf file as shown.

installonly_limit=2		#set kernel count

Save and close the file. The next time you run an update, only two kernels will be left on the system.

You may also like to read these following related articles on Linux kernel.

  1. How to Load and Unload Kernel Modules in Linux
  2. How to Upgrade Kernel to Latest Version in Ubuntu
  3. How to Change Kernel Runtime Parameters in a Persistent and Non-Persistent Way

In this article, we described how to remove old/unused kernel images on RHEL/CentOS/Fedora systems. You can share any thoughts via the feedback from below.