How can I install Linux Kernel 5.x on CentOS 7?, Can I upgrade to Kernel 5.x on CentOS 7?. By default, CentOS ships with a custom-built kernel to ensure its integrity and compatibility with supported hardware. A Linux kernel comprises of the base kernel itself and a number of kernel modules. The base kernel is always loaded during boot but modules can be loaded on demand.
Below is a list of Kernel Packages available for CentOS 7:
- kernel: This package contains the kernel for single-core, multi-core, and multi-processor systems
- kernel-devel : This contains kernel headers and makefiles used to build kernel modules against installed Kernel version.
- kernel-headers: This package includes the C header files that powers interfacing between the Linux kernel and user-space libraries and programs.
- kernel-tools: Contains tools for manipulating the Linux kernel and supporting documentation.
- perf: This package contains the perf tool, which enables performance monitoring of the Linux kernel.
- linux-firmware: This contains the firmware files required by various devices to operate.
Install Linux Kernel 5.17 on CentOS 7
The latest release of Kernel can be installed on CentOS 7 by building it or using an RPM repository with pre-built packages. In this guide, we will use ELRepo to install Linux Kernel 5.x on CentOS 7.
ELRepo is an RPM repository for Enterprise Linux packages. It supports Red Hat Enterprise Linux (RHEL) and its derivatives such as Scientific Linux, CentOS e.t.c. Add ELRepo repository to your CentOS 7 by running the commands below.
sudo yum -y install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
Once the repo has been added, import GPG key used for signing packages.
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
This will add elrepo-kernel
channel which provides both the long-term(kernel-lt) support kernels and latest stable mainline kernels(kernel-ml) for RHEL and CentOS. This channel is not enabled by default and you need to explicitly enable it before installing Kernel 5.x on CentOS 7.
$ sudo yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-ml
kernel-ml.x86_64 5.17.1-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 5.17.1-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 5.17.1-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 5.17.1-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 5.17.1-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 5.17.1-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 5.17.1-1.el7.elrepo elrepo-kernel
$ sudo yum --disablerepo="*" --enablerepo="elrepo-kernel" list available | grep kernel-lt
kernel-lt.x86_64 5.4.188-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 5.4.188-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 5.4.188-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 5.4.188-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 5.4.188-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 5.4.188-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 5.4.188-1.el7.elrepo elrepo-kernel
Now that we have confirmed availability of Linux Kernel 5.x, we can proceed to install it.
Install from stable mainline:
$ sudo yum --enablerepo=elrepo-kernel install kernel-ml
...
Resolving Dependencies
--> Running transaction check
---> Package kernel-ml.x86_64 0:5.17.1-1.el7.elrepo will be installed
--> Processing Dependency: linux-firmware >= 20100806-2 for package: kernel-ml-5.17.1-1.el7.elrepo.x86_64
--> Running transaction check
---> Package linux-firmware.noarch 0:20200421-80.git78c0348.el7_9 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
======================================================================================================================================================================================================
Package Arch Version Repository Size
======================================================================================================================================================================================================
Installing:
kernel-ml x86_64 5.17.1-1.el7.elrepo elrepo-kernel 56 M
Installing for dependencies:
linux-firmware noarch 20200421-80.git78c0348.el7_9 updates 80 M
Transaction Summary
======================================================================================================================================================================================================
Install 1 Package (+1 Dependent package)
Total download size: 136 M
Installed size: 649 M
Is this ok [y/d/N]: y
Also install kernel-ml-devel,kernel-ml-headers,kernel-ml-tools,perf:
sudo yum --enablerepo=elrepo-kernel install kernel-ml-{devel,headers}
Install long term Kernel release:
sudo yum --enablerepo=elrepo-kernel install kernel-lt
sudo yum --enablerepo=elrepo-kernel install kernel-lt-{devel,headers}
Reboot the system:
sudo reboot
Select Kernel 5.x in the Grub menu to boot to newly installed Kernel 5.x on CentOS 7.
Confirm booted kernel with uname
command.
$ uname -r
5.17.1-1.el7.elrepo.x86_64
Setting Kernel 5.x on CentOS 7 as default
Edit the file /etc/default/grub
and set GRUB_DEFAULT=0
.
GRUB_TIMEOUT=1
GRUB_DEFAULT=0
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="no_timer_check console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 elevator=noop crashkernel=auto"
GRUB_DISABLE_RECOVERY="true"
Regenerate grub configuration file.
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Uninstall Kernel 5.x on CentOS 7
You now have Linux Kernel 5.x installed on CentOS 7. To uninstall, boot to older Kernel
Confirm your booted Kernel version.
$ uname -r
3.10.0-957.1.3.el7.x86_64
Then uninstall Linux Kernel 5.x on CentOS 7.
$ sudo yum remove kernel-ml kernel-ml-{devel,headers}
....
Transaction Summary
Remove 3 Packages
Installed size: 266 M
Is this ok [y/N]: y
For Ubuntu and Linux Mint system, check:
Other interesting readings: