Linux CentOS7.x 升級內核的方法


一、概述

     在數據中心基礎環境中,Linux系統使用很普遍,但是有時候會遇到應用程序需要運行在高版本的內核上或者有時候系統自身要求需要升級內核,我們要綜合考慮升級內核的風險。

二、升級內核的方法

1、查看操作系統內核版本

[root@localhost ~]# uname -r
3.10.0-1062.4.1.el7.x86_64

2、安裝ELRepo到CentOS,下載key,並進行安裝

最好從官方網站獲取最新版本(官網地址:http://elrepo.org/tiki/tiki-index.php)。

[root@localhost ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@localhost ~]# yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
已加載插件:fastestmirror, langpacks
elrepo-release-7.el7.elrepo.noarch.rpm                              | 8.5 kB  00:00:00
正在檢查 /var/tmp/yum-root-LAFBfB/elrepo-release-7.el7.elrepo.noarch.rpm: elrepo-release-7.0-4.el7.elrepo.noarch
/var/tmp/yum-root-LAFBfB/elrepo-release-7.el7.elrepo.noarch.rpm 將被安裝
正在解決依賴關系
--> 正在檢查事務
---> 軟件包 elrepo-release.noarch.0.7.0-4.el7.elrepo 將被 安裝
--> 解決依賴關系完成
base/7/x86_64                                                       | 3.6 kB  00:00:00
extras/7/x86_64                                                     | 2.9 kB  00:00:00
extras/7/x86_64/primary_db                                          | 165 kB  00:00:00
updates/7/x86_64                                                    | 2.9 kB  00:00:00
updates/7/x86_64/primary_db                                         | 7.6 MB  00:00:01

依賴關系解決

===========================================================================================
 Package          架構     版本                源                                     大小
===========================================================================================
正在安裝:
 elrepo-release   noarch   7.0-4.el7.elrepo    /elrepo-release-7.el7.elrepo.noarch   5.0 k

事務概要
===========================================================================================
安裝  1 軟件包

總計:5.0 k
安裝大小:5.0 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 數據庫已被非 yum 程序修改。
  正在安裝    : elrepo-release-7.0-4.el7.elrepo.noarch                                                                                    1/1
  驗證中      : elrepo-release-7.0-4.el7.elrepo.noarch                                                                                    1/1

已安裝:
  elrepo-release.noarch 0:7.0-4.el7.elrepo

完畢!

3、查看內核列表,可以看到各個現有版本。  

[root@localhost ~]#  yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
已加載插件:fastestmirror, langpacks
Determining fastest mirrors
 * elrepo-kernel: hkg.mirror.rackspace.com
elrepo-kernel                                                                                                                                   | 2.9 kB  00:00:00
elrepo-kernel/primary_db                                                                                                                        | 1.9 MB  00:00:01
可安裝的軟件包
kernel-lt.x86_64                                                                   4.4.220-1.el7.elrepo                                                   elrepo-kernel
kernel-lt-devel.x86_64                                                             4.4.220-1.el7.elrepo                                                   elrepo-kernel
kernel-lt-doc.noarch                                                               4.4.220-1.el7.elrepo                                                   elrepo-kernel
kernel-lt-headers.x86_64                                                           4.4.220-1.el7.elrepo                                                   elrepo-kernel
kernel-lt-tools.x86_64                                                             4.4.220-1.el7.elrepo                                                   elrepo-kernel
kernel-lt-tools-libs.x86_64                                                        4.4.220-1.el7.elrepo                                                   elrepo-kernel
kernel-lt-tools-libs-devel.x86_64                                                  4.4.220-1.el7.elrepo                                                   elrepo-kernel
kernel-ml.x86_64                                                                   5.6.7-1.el7.elrepo                                                     elrepo-kernel
kernel-ml-devel.x86_64                                                             5.6.7-1.el7.elrepo                                                     elrepo-kernel
kernel-ml-doc.noarch                                                               5.6.7-1.el7.elrepo                                                     elrepo-kernel
kernel-ml-headers.x86_64                                                           5.6.7-1.el7.elrepo                                                     elrepo-kernel
kernel-ml-tools.x86_64                                                             5.6.7-1.el7.elrepo                                                     elrepo-kernel
kernel-ml-tools-libs.x86_64                                                        5.6.7-1.el7.elrepo                                                     elrepo-kernel
kernel-ml-tools-libs-devel.x86_64                                                  5.6.7-1.el7.elrepo                                                     elrepo-kernel
perf.x86_64                                                                        5.6.7-1.el7.elrepo                                                     elrepo-kernel
python-perf.x86_64

4、安裝需要的kernel版本,這里安裝kernel-kt

內核版本介紹:

1)、lt:longterm的縮寫:長期維護版;
2)、ml:mainline的縮寫:最新穩定版;

[root@localhost boot]# yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * elrepo: hkg.mirror.rackspace.com
 * elrepo-kernel: hkg.mirror.rackspace.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
正在解決依賴關系
--> 正在檢查事務
---> 軟件包 kernel-ml.x86_64.0.5.6.7-1.el7.elrepo 將被 安裝
---> 軟件包 kernel-ml-devel.x86_64.0.5.6.7-1.el7.elrepo 將被 安裝
--> 解決依賴關系完成

依賴關系解決

=============================================================================================================================================
 Package                            架構                      版本                                    源                                大小
=============================================================================================================================================
正在安裝:
 kernel-ml                          x86_64                    5.6.7-1.el7.elrepo                      elrepo-kernel                     49 M
 kernel-ml-devel                    x86_64                    5.6.7-1.el7.elrepo                      elrepo-kernel                     13 M

事務概要
=============================================================================================================================================
安裝  2 軟件包

總計:62 M
安裝大小:272 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安裝    : kernel-ml-devel-5.6.7-1.el7.elrepo.x86_64                                                                                1/2
  正在安裝    : kernel-ml-5.6.7-1.el7.elrepo.x86_64                                                                                      2/2
  驗證中      : kernel-ml-5.6.7-1.el7.elrepo.x86_64                                                                                      1/2
  驗證中      : kernel-ml-devel-5.6.7-1.el7.elrepo.x86_64                                                                                2/2

已安裝:
  kernel-ml.x86_64 0:5.6.7-1.el7.elrepo                              kernel-ml-devel.x86_64 0:5.6.7-1.el7.elrepo

完畢!

5、查看系統上面可以使用的內核

[root@localhost boot]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.6.7-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1062.4.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-862.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-3d09bf01bc1d401eac8c018ab645a715) 7 (Core)

6、設置新的內核為grub2的默認版本

1)修改啟動順序默認值

方法一:命令直接設置

[root@localhost ~]# grub2-set-default 0  

方法二:修改/etc/default/grub 文件

..........................................
設置 GRUB_DEFAULT=0,通過上面查詢顯示的編號為 0 的內核作為默認內核:
[root@node01 ~]# vi /etc/default/grub 
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 rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
...........................................

2)生產grub 配置文件  

[root@localhost boot]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.6.7-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.6.7-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1062.4.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1062.4.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found linux image: /boot/vmlinuz-0-rescue-3d09bf01bc1d401eac8c018ab645a715
Found initrd image: /boot/initramfs-0-rescue-3d09bf01bc1d401eac8c018ab645a715.img
done

7、重新啟動

[root@localhost boot]# reboot
[root@localhost ~]# uname -r
5.6.7-1.el7.elrepo.x86_64

8、刪除舊內核版本  

[root@localhost ~]# rpm -qa | grep kernel
abrt-addon-kerneloops-2.1.11-55.el7.centos.x86_64
kernel-3.10.0-1062.4.1.el7.x86_64
kernel-ml-5.6.7-1.el7.elrepo.x86_64
kernel-debug-devel-3.10.0-1062.4.1.el7.x86_64
kernel-3.10.0-862.el7.x86_64
kernel-tools-libs-3.10.0-1062.4.1.el7.x86_64
kernel-tools-3.10.0-1062.4.1.el7.x86_64
kernel-headers-3.10.0-1062.4.1.el7.x86_64
kernel-ml-devel-5.6.7-1.el7.elrepo.x86_64

1)方法一:使用yum remove 刪除舊版本RPM包

[root@localhost ~]# yum remove kernel-3.10.0-1062.4.1.el7.x86_64 kernel-3.10.0-862.el7.x86_64 kernel-tools-3.10.0-1062.4.1.el7.x86_64 kernel-headers-3.10.0-1062.4.1.el7.x86_64
已加載插件:fastestmirror, langpacks
正在解決依賴關系
--> 正在檢查事務
---> 軟件包 kernel.x86_64.0.3.10.0-862.el7 將被 刪除

2)方法二: yum-utils 工具

注:如果安裝的內核不多於 3 個,yum-utils 工具不會刪除任何一個。只有在安裝的內核大於 3 個時,才會自動刪除舊內核。  

[root@localhost ~]# yum install yum-utils     //安裝工具
已加載插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * elrepo: hkg.mirror.rackspace.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
軟件包 yum-utils-1.1.31-52.el7.noarch 已安裝並且是最新版本
無須任何處理
[root@localhost ~]# package-cleanup --oldkernels    //刪除舊版本
已加載插件:fastestmirror, langpacks
No old kernels to remove

 

-----------------------------------------------------------書山有路勤為徑,學海無涯苦作舟-------------------------------------------------------------  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM