For dedicated servers and virtual machines that you keep upgrading in-place, you will eventually reach the situation where there's a number of old kernel packages installed. That's because when you're updating OS packages and get new kernel installed, the old ones are not auto-removed – allowing you to fall back if there are issues with the latest kernel.
How To List Old Kernels in CentOS/Red Hat Linux
rpm -q command comes to the resque! just run it for the kernel packages:
root@centos:~ # rpm -q kernel kernel-3.10.0-327.28.3.el7.x86_64 kernel-3.10.0-327.36.3.el7.x86_64 kernel-3.10.0-693.21.1.el7.x86_64 kernel-3.10.0-957.5.1.el7.x86_64
You can use the uname command to verify the current kernel you're running:
root@centos:~ # uname -a Linux centos.ts.fm 3.10.0-957.5.1.el7.x86_64 #1 SMP Fri Feb 1 14:54:57 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
How To Remove Old Linux Kernels in CentOS
There's actually a special command for doing this, but it's probably not installed by default. It's part of the yum-utils package that you may have to install like this first:
root@centos:~ # yum install yum-utils
Now that it's installed, we'll use the package-cleanup command. It takes the number of most recent kernels that you want to keep. So if you want to keep just the currently used kernel, the number should be 1. I recommend you keep 2 kernels – current and the one before it, so the count should be 2.
Just to be super sure, the package-cleanup -oldkernels command will ask you if you're positive about removing the listed kernel packages before progressing:
root@centos:~ # package-cleanup --oldkernels --count=2 Loaded plugins: fastestmirror, langpacks --> Running transaction check ---> Package kernel.x86_64 0:3.10.0-327.28.3.el7 will be erased ---> Package kernel.x86_64 0:3.10.0-327.36.3.el7 will be erased --> Finished Dependency Resolution epel/x86_64/metalink | 22 kB 00:00:00 Dependencies Resolved =============================================================== Package Arch Version Repository Size =============================================================== Removing: kernel x86_64 3.10.0-327.28.3.el7 @centos-updates 136 M kernel x86_64 3.10.0-327.36.3.el7 @updates 136 M Transaction Summary =============================================================== Remove 2 Packages Installed size: 272 M Is this ok [y/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Erasing : kernel.x86_64 1/2 Erasing : kernel.x86_64 2/2 Verifying : kernel-3.10.0-327.36.3.el7.x86_64 1/2 Verifying : kernel-3.10.0-327.28.3.el7.x86_64 2/2 Removed: kernel.x86_64 0:3.10.0-327.28.3.el7 kernel.x86_64 0:3.10.0-327.36.3.el7 Complete!
… and yes, don't worry to be left without any Linux kernels! I checked, and specifying count=0 will not result in the package-cleanup killing your operating system:
root@centos:~ # package-cleanup --oldkernels --count=0 Loaded plugins: fastestmirror, langpacks Error should keep at least 1 kernel!
That's it for today. Hope you enjoyed the article!