Installing the Linux Kernel 6.x on CentOS 7
Kernel is central component of an operating system that manages operations of computer and hardware. It basically manages operations of memory and CPU time. It is core component of an operating system. Kernel acts as a bridge between applications and data processing performed at hardware level using inter-process communication and system calls.
Step 1 - Find Current Kernel Version
Run the following command to know your current kernel:
uname -sr
Output:
[root@vps ~]# uname -sr
Linux 3.10.0-1160.66.1.el7.x86_64
Step 2 - Enable ELRepo Repository
To enable the ELRepo repository on CentOS 7, do:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
Output:
[root@vps ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@vps ~]# yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
Loaded plugins: fastestmirror
elrepo-release-7.el7.elrepo.noarch.rpm | 8.7 kB 00:00:00
Examining /var/tmp/yum-root-3qbisw/elrepo-release-7.el7.elrepo.noarch.rpm: elrepo-release-7.0-6.el7.elrepo.noarch
Marking /var/tmp/yum-root-3qbisw/elrepo-release-7.el7.elrepo.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package elrepo-release.noarch 0:7.0-6.el7.elrepo will be installed
--> Finished Dependency Resolution
Dependencies Resolved
======================================================================================================================================
Package Arch Version Repository Size
======================================================================================================================================
Installing:
elrepo-release noarch 7.0-6.el7.elrepo /elrepo-release-7.el7.elrepo.noarch 5.0 k
Transaction Summary
======================================================================================================================================
Install 1 Package
Total size: 5.0 k
Installed size: 5.0 k
Once the repository has been enabled, you can use the following command to list the available kernel related packages:
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Output:
[root@vps ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Loaded plugins: fastestmirror
Determining fastest mirrors
* elrepo-kernel: repos.lax-noc.com
elrepo-kernel | 3.0 kB 00:00:00
elrepo-kernel/primary_db | 2.1 MB 00:00:00
Available Packages
kernel-lt.x86_64 5.4.228-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 5.4.228-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 5.4.228-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 5.4.228-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 5.4.228-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 5.4.228-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 5.4.228-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 6.1.1-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 6.1.1-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 6.1.1-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 6.1.1-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 6.1.1-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 6.1.1-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 6.1.1-1.el7.elrepo elrepo-kernel
perf.x86_64 5.4.228-1.el7.elrepo elrepo-kernel
python-perf.x86_64 5.4.228-1.el7.elrepo elrepo-kernel
Step 3 - Install Kernel
Run the following command to install the latest mainline stable kernel:
yum --enablerepo=elrepo-kernel install kernel-ml
Output:
[root@vps ~]# yum --enablerepo=elrepo-kernel install kernel-ml
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: la.mirrors.clouvider.net
* elrepo: repos.lax-noc.com
* elrepo-kernel: repos.lax-noc.com
* extras: mirror.keystealth.org
* updates: mirrors.unifiedlayer.com
base | 3.6 kB 00:00:00
elrepo | 3.0 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/5): base/7/x86_64/group_gz | 153 kB 00:00:00
(2/5): elrepo/primary_db | 415 kB 00:00:00
(3/5): extras/7/x86_64/primary_db | 249 kB 00:00:00
(4/5): base/7/x86_64/primary_db | 6.1 MB 00:00:00
(5/5): updates/7/x86_64/primary_db | 19 MB 00:00:12
Resolving Dependencies
--> Running transaction check
---> Package kernel-ml.x86_64 0:6.1.1-1.el7.elrepo will be installed
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================================================================
Package Arch Version Repository Size
=============================================================================================================================
Installing:
kernel-ml x86_64 6.1.1-1.el7.elrepo elrepo-kernel 60 M
Transaction Summary
=============================================================================================================================
Install 1 Package
Total download size: 60 M
Installed size: 284 M
Is this ok [y/d/N]: y
Downloading packages:
kernel-ml-6.1.1-1.el7.elrepo.x86_64.rpm | 60 MB 00:00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
Installing : kernel-ml-6.1.1-1.el7.elrepo.x86_64 1/1
Verifying : kernel-ml-6.1.1-1.el7.elrepo.x86_64 1/1
Installed:
kernel-ml.x86_64 0:6.1.1-1.el7.elrepo
Complete!
Step 4 - Set the Latest Kernel as Default
There are 2 ways to set default kernel
Method 1 :
To make the newly-installed version the default boot option, you will have to modify the GRUB configuration as follows:
Open and edit the file /etc/default/grub and set GRUB_DEFAULT=0. This means that the first kernel in the GRUB list will be used as default.
vi /etc/default/grub
To insert/edit the file enter 'i' for insert mode and insert the following at End Of Fle. After inserting, save the file by hitting Esc key and then ':' [colon] followed by wq and enter
:wq
Output:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
Grub_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
Method 2 :
On this method we see how to set kernel as default using command
To list kernel
ls -l /boot/vmlinuz-*
Output:
[root@vps ~]# ls -l /boot/vmlinuz-*
-rwxr-xr-x. 1 root root 9581728 Jan 2 16:02 /boot/vmlinuz-0-rescue-a6d50446f33f06f1eb05c40863b2fd2e
-rwxr-xr-x. 1 root root 6769256 Dec 28 16:44 /boot/vmlinuz-0-rescue-ebe37f940c964f47810cc9eebe34643b
-rwxr-xr-x. 1 root root 7047784 Dec 16 17:33 /boot/vmlinuz-3.10.0-1160.81.1.el7.x86_64
-rwxr-xr-x. 1 root root 9581728 Dec 31 14:37 /boot/vmlinuz-6.1.1-1.el7.elrepo.x86_64
Set The default kernel using the kernel filename:
Note Replace index_number with kernel index number that need to be set as default.
grubby --set-default kernel_filename
Output:
[root@vps ~]# grubby --set-default /boot/vmlinuz-6.1.1-1.el7.elrepo.x86_64
Step 5 - Rebuild the Configuration File
Run the following command to recreate the kernel configuration:
grub2-mkconfig -o /boot/grub2/grub.cfg
Output:
[root@vps ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.1.1-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-6.1.1-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.66.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.66.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-540897c06a504053ab186e27caa799e1
Found initrd image: /boot/initramfs-0-rescue-540897c06a504053ab186e27caa799e1.img
Found linux image: /boot/vmlinuz-0-rescue-c52fc00695191b701c0ff16463b012ac
Found initrd image: /boot/initramfs-0-rescue-c52fc00695191b701c0ff16463b012ac.img
done
Reboot and verify that the latest kernel is now being used by default using the uname
command again:
uname -sr
Output:
[root@vps ~]# uname -sr
[Linux 6.1.1-1.el7.elrepo.x86_64
[root@vps ~]#