How to remove unused kernel images from CentOS Linux system

Every time you update your CentOS Linux and the update includes a new kernel image update the system will not remove your old kernel but it will cumulatively add new kernel to the top of your Linux kernel installed list. Normally, this does not present any issue to your running system and you are not required to take any action to remove any old and unused kernel images.

The reason why you may wish to remove/uninstall unused kernel images is that you need to reduce disk usage space of your system, especially if your /boot mount point is mounted separately and has a limited disk space

$ df -h /boot/
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       331M  198M  112M  64% /boot

or you just simply like to reduce the number of titles on your GRUB boot list. The bellow commands will help you to remove any unused Linux kernel images from your CentOS Linux system.

Let’s start by listing all installed Linux kernel images:

# rpm -q kernel
kernel-3.10.0-229.4.2.el7.x86_64
kernel-3.10.0-229.el7.x86_64
kernel-3.10.0-229.20.1.el7.x86_64
kernel-3.10.0-229.11.1.el7.x86_64
kernel-3.10.0-327.3.1.el7.x86_64

Make sure you boot into the latest installed Kernel image. In this case it is kernel-3.10.0-327.3.1.el7 kernel image. Run uname command to confirm:

$ uname -r
3.10.0-327.3.1.el7.x86_64

Next, install yum-utils package which contains package-cleanup binary to be later used to uninstall old unused Linux kernel images:

# yum install yum-utils

At this stage we are ready to remove old Linux kernels using package-cleanup command. The --oldkernels option means that we wish to remove old Kernel images, whereas the --count=1 option instructs the package-cleanup command to leave one old kernel untouched. Thus, after the execution of the below command the system will be left with one current up to date kernel and one unused kernel old kernel as a backup. Feel free to amend the count number to suit your needs:

# package-cleanup --oldkernels --count=1

The rest of old Linux kernel images should now be removed. Use rpm command to confirm:

# rpm -q kernel
kernel-3.10.0-229.20.1.el7.x86_64
kernel-3.10.0-327.3.1.el7.x86_64