Here you can see the steps to install the latest (mainline stable) kernel under CentOS 7, whether we need the latest driver, because we bought a new laptop released for the first time last month with the latest hardware or there is a hot fix of some nasty bug it is of no matter.
Here are the steps about installing the latest kernel to our CentOS 7, you must have root access:
- STEP 1 Import the public key of the repository, which offer us the packages of the CentOS 7 mainline stable kernel (and some other kernels, like the Red Hat Enterprise Linux (RHEL) 6 and 7 and more, you can check out the site). The site of the repository is
https://elrepo.org/
Import the public key
#change to root user (skip the first line if you are root) sudo su rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
- STEP 2 Check the latest version of the rpm install package of the repository, the command is under
To install ELRepo for RHEL-7, SL-7 or CentOS-7:
So at present the latest version is “7.0-3” and execute to wget to download the package for the repository elrepo:
wget http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
- STEP 3 Install the elrepo package with yum (you can do it with rpm command, but let yum manage all your packages and metadata for them!)
yum -y install ./elrepo-release-7.0-3.el7.elrepo.noarch.rpm
STEP 4 List the available kernels from the elrepo to choose the one you like
yum list available --disablerepo='*' --enablerepo=elrepo-kernel
To install the latest mainline kernel you must use package starting with
kernel-ml-*
at moment of writing the latest mainline kernel is
4.15.4-1.el7.elrepo
So execute
yum install -y --enablerepo=elrepo-kernel kernel-ml
And it will pull the
kernel-ml-4.15.4-1.el7.elrepo.x86_64
and install it
STEP 5 Check if you are going to boot the new kernel, you’ve installed and set the right one to boot
cat /boot/grub2/grubenv |grep saved # GRUB Environment Block saved_entry=CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
And as you see, no it’ll not boot to the new kernel, so you must configure grub2 to boot your newly just installed kernel. First check all the installed kernels, set the right kernel and then it is mandatory to call
grub2-mkconfig
to update the grub2 configuration:
[root@srv ~]# awk -F\' /^menuentry/{print\$2} /boot/grub2/grub.cfg CentOS Linux (4.15.4-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-0a26fe4b81d845209fb8958c8e29d600) 7 (Core)
The position 0 (YES, it starts from ZERO!) is “CentOS Linux (4.15.4-1.el7.elrepo.x86_64) 7 (Core)”, so you have two options to set it:
grub2-set-default 0 grub2-mkconfig -o /boot/grub2/grub.cfg
Check to see if everything is OK with
[root@srv ~]# cat /boot/grub2/grubenv |grep saved saved_entry=0
or you can set the name of the kernel to boot with
grub2-set-default "CentOS Linux (4.15.4-1.el7.elrepo.x86_64) 7 (Core)" grub2-mkconfig -o /boot/grub2/grub.cfg
Check to see if everything is OK with
[root@srv ~]# cat /boot/grub2/grubenv |grep saved saved_entry=CentOS Linux (4.15.4-1.el7.elrepo.x86_64) 7 (Core)
reboot
STEP 4 Verification of running the latest kernel
root@srv:~# uname -a Linux srv.local 4.15.4-1.el7.elrepo.x86_64 #1 SMP Sat Feb 17 13:35:20 EST 2018 x86_64 x86_64 x86_64 GNU/Linux
Install log of the procedure (your output may vary depending on your hardware installed in your system):
[root@srv ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org [root@srv ~]# wget http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm --2018-02-19 10:20:42-- http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm Resolving www.elrepo.org (www.elrepo.org)... 69.195.83.87 Connecting to www.elrepo.org (www.elrepo.org)|69.195.83.87|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 8656 (8.5K) [application/x-rpm] Saving to: ‘elrepo-release-7.0-3.el7.elrepo.noarch.rpm’ 100%[=======================================================================>] 8,656 --.-K/s in 0.001s 2018-02-19 10:20:42 (6.97 MB/s) - ‘elrepo-release-7.0-3.el7.elrepo.noarch.rpm’ saved [8656/8656] [root@srv ~]# yum -y install ./elrepo-release-7.0-3.el7.elrepo.noarch.rpm Loaded plugins: fastestmirror Examining ./elrepo-release-7.0-3.el7.elrepo.noarch.rpm: elrepo-release-7.0-3.el7.elrepo.noarch Marking ./elrepo-release-7.0-3.el7.elrepo.noarch.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package elrepo-release.noarch 0:7.0-3.el7.elrepo will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================================================================= Package Arch Version Repository Size ================================================================================================================= Installing: elrepo-release noarch 7.0-3.el7.elrepo /elrepo-release-7.0-3.el7.elrepo.noarch 5.2 k Transaction Summary ================================================================================================================= Install 1 Package Total size: 5.2 k Installed size: 5.2 k Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : elrepo-release-7.0-3.el7.elrepo.noarch 1/1 Verifying : elrepo-release-7.0-3.el7.elrepo.noarch 1/1 Installed: elrepo-release.noarch 0:7.0-3.el7.elrepo Complete! [root@srv ~]# yum list available --disablerepo='*' --enablerepo=elrepo-kernel Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * elrepo-kernel: mirrors.netix.net Available Packages kernel-lt.x86_64 4.4.116-1.el7.elrepo elrepo-kernel kernel-lt-devel.x86_64 4.4.116-1.el7.elrepo elrepo-kernel kernel-lt-doc.noarch 4.4.116-1.el7.elrepo elrepo-kernel kernel-lt-headers.x86_64 4.4.116-1.el7.elrepo elrepo-kernel kernel-lt-tools.x86_64 4.4.116-1.el7.elrepo elrepo-kernel kernel-lt-tools-libs.x86_64 4.4.116-1.el7.elrepo elrepo-kernel kernel-lt-tools-libs-devel.x86_64 4.4.116-1.el7.elrepo elrepo-kernel kernel-ml.x86_64 4.15.4-1.el7.elrepo elrepo-kernel kernel-ml-devel.x86_64 4.15.4-1.el7.elrepo elrepo-kernel kernel-ml-doc.noarch 4.15.4-1.el7.elrepo elrepo-kernel kernel-ml-headers.x86_64 4.15.4-1.el7.elrepo elrepo-kernel kernel-ml-tools.x86_64 4.15.4-1.el7.elrepo elrepo-kernel kernel-ml-tools-libs.x86_64 4.15.4-1.el7.elrepo elrepo-kernel kernel-ml-tools-libs-devel.x86_64 4.15.4-1.el7.elrepo elrepo-kernel perf.x86_64 4.15.4-1.el7.elrepo elrepo-kernel python-perf.x86_64 4.15.4-1.el7.elrepo elrepo-kernel [root@srv ~]# yum install -y --enablerepo=elrepo-kernel kernel-ml Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: centos.uni-sofia.bg * elrepo: mirrors.netix.net * elrepo-kernel: mirrors.netix.net * extras: centos.uni-sofia.bg * updates: centos.uni-sofia.bg Resolving Dependencies --> Running transaction check ---> Package kernel-ml.x86_64 0:4.15.4-1.el7.elrepo will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================================================================================ Package Arch Version Repository Size ============================================================================================================================================================================ Installing: kernel-ml x86_64 4.15.4-1.el7.elrepo elrepo-kernel 44 M Transaction Summary ============================================================================================================================================================================ Install 1 Package Total download size: 44 M Installed size: 195 M Downloading packages: kernel-ml-4.15.4-1.el7.elrepo.x86_64.rpm | 44 MB 00:00:10 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : kernel-ml-4.15.4-1.el7.elrepo.x86_64 1/1 Verifying : kernel-ml-4.15.4-1.el7.elrepo.x86_64 1/1 Installed: kernel-ml.x86_64 0:4.15.4-1.el7.elrepo Complete! [root@srv ~]# cat /boot/grub2/grubenv |grep saved # GRUB Environment Block saved_entry=CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core) [root@srv ~]# awk -F\' /^menuentry/{print\$2} /etc/grub2.cfg CentOS Linux (4.15.4-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-0a26fe4b81d845209fb8958c8e29d600) 7 (Core) [root@srv ~]# grub2-set-default "CentOS Linux (4.15.4-1.el7.elrepo.x86_64) 7 (Core)" [root@srv ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ... Found linux image: /boot/vmlinuz-4.15.4-1.el7.elrepo.x86_64 Found initrd image: /boot/initramfs-4.15.4-1.el7.elrepo.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-0a26fe4b81d845209fb8958c8e29d600 Found initrd image: /boot/initramfs-0-rescue-0a26fe4b81d845209fb8958c8e29d600.img done [root@srv ~]# reboot Connection to 192.168.0.18 closed by remote host. Connection to 192.168.0.18 closed. ... ... ... [root@srv ~]# uname -a Linux srv.local 4.15.4-1.el7.elrepo.x86_64 #1 SMP Sat Feb 17 13:35:20 EST 2018 x86_64 x86_64 x86_64 GNU/Linux [root@srv ~]#