Linux kernel 內核升級與降級實戰

安裝 / 升級的方法和建議

 1.對於 CentOS/RHEL 系統,儘量使用 yum 方式或 RPM 包安裝 / 升級內核,需要注意的是紅帽的 Red Hat Linux 服務需要訂閱。

 2.使用安裝新內核而不是直接升級內核,安裝新內核不會覆蓋舊內核,而升級會導致新內核直接替換舊內核,可能會導致系統無法啓動,安裝也可以讓我們在升級後有回滾的選擇。

 3.一般地,對於大多數 Linux 分發版,使用 yum/dnf 和分發版布官方的存儲庫來升級內核,這種方式只能升級到該分發版的存儲庫提供的最新版本,而不是 Linux 內核組織發佈的最新內核。

 4.如果想迅速並且安全地使用最新內核,對於 CentOS/RHEL 系統並不支持 yum 的方式直接安裝或升級。那麼此時我們可以使用 ELRepo(第三方存儲庫) 進行內核安裝升級。

 5.下載新內核的源碼包進行編譯安裝,這種方式有助於我們更細緻地學習內核底層知識,但在生產環境中不推薦編譯安裝。

 6.儘量使用最新的 Linux 發行版,新的 Liunx 發行版包含該發行版維護的新內核,如果有必要,那麼請使用如 yum upgrade 或者 yum update 來更新你的系統。對於 Ubuntu、Debian 等發行版,使用 apt-get update 方式來更新。

安裝 / 升級新內核的目的

  • 許多出於對安全的考慮,如避免以前版本中發現的漏洞
  • 更充分地認識內核,瞭解內核的各個內核模塊和功能
  • 更好的利用 / 體驗新內核的的新功能和特性

 Linux 內核版本分爲主線、穩定和長期版本。所有內核版本都可以在內核開發官方網站 https://www.kernel.org 上獲取。

 各版本官方內核下載

 163鏡像站內核下載

在 CentOS 上安裝 / 升級內核

Linux 內核升級通常有兩種方式:

  • 1.下載新版內核到服務器上,進行編譯安裝,之後刪除老內核, 優點:可完全控制編譯項。 缺點:慢,且容易失敗;
  • 2.採用 yum 方式安裝, 優點是:快捷方便,成功率高。
[root@localhost ~]# cat /etc/redhat-release   //查看系統版本
CentOS release 6.8 (Final)

[root@localhost ~]# cat /proc/version     
Linux version 2.6.32-642.el6.x86_64 (mockbuild@worker1.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) ) #1 SMP Tue May 10 17:27:01 UTC 2016

[root@localhost ~]# uname -r     //查看內核版本
2.6.32-642.el6.x86_64

[root@localhost ~]# yum list kernel --showduplicates    //查看yum可升級的內核版本
...
已安裝的軟件包
kernel.x86_64                           2.6.32-642.el6                                 @anaconda-CentOS-201605220104.x86_64/6.8
可安裝的軟件包
kernel.x86_64                           2.6.32-754.el6                                 base
kernel.x86_64                           2.6.32-754.2.1.el6                             updates
kernel.x86_64                           2.6.32-754.3.5.el6                             updates
kernel.x86_64                           2.6.32-754.6.3.el6                             updates
kernel.x86_64                           2.6.32-754.9.1.el6                             updates
kernel.x86_64                           2.6.32-754.10.1.el6                            updates
kernel.x86_64                           2.6.32-754.11.1.el6                            updates
kernel.x86_64                           2.6.32-754.12.1.el6                            updates
kernel.x86_64                           2.6.32-754.14.2.el6                            updates
kernel.x86_64                           2.6.32-754.15.3.el6                            updates
kernel.x86_64                           2.6.32-754.17.1.el6                            updates
kernel.x86_64                           2.6.32-754.18.2.el6                            updates
kernel.x86_64                           2.6.32-754.22.1.el6                            updates
kernel.x86_64                           2.6.32-754.23.1.el6                            updates
kernel.x86_64                           2.6.32-754.24.2.el6                            updates
kernel.x86_64                           2.6.32-754.24.3.el6                            updates
kernel.x86_64                           2.6.32-754.25.1.el6                            updates
kernel.x86_64                           2.6.32-754.27.1.el6                            updates
kernel.x86_64                           2.6.32-754.28.1.el6                            updates
kernel.x86_64                           2.6.32-754.29.1.el6                            updates
kernel.x86_64                           2.6.32-754.29.2.el6                            updates

[root@localhost ~]# yum update kernel-2.6.32-754.el6.x86_64    //直接執行update升級內核
...
===============================================================================================================================
 軟件包                           架構                    版本                                  倉庫                      大小
===============================================================================================================================
正在安裝:
 kernel                           x86_64                  2.6.32-754.el6                        base                      32 M
爲依賴而更新:
 kernel-firmware                  noarch                  2.6.32-754.29.2.el6                   updates                   29 M
... 
已安裝:
  kernel.x86_64 0:2.6.32-754.el6

作爲依賴被升級:
  kernel-firmware.noarch 0:2.6.32-754.29.2.el6

完畢!

[root@localhost ~]# reboot      //重啓系統

[root@localhost ~]# cat /proc/version
Linux version 2.6.32-754.el6.x86_64 (mockbuild@x86-01.bsys.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) ) #1 SMP Tue Jun 19 21:26:04 UTC 2018

[root@localhost ~]# uname -r
2.6.32-754.el6.x86_64

在 CentOS 上降級內核

[root@localhost ~]# ls *.rpm    //內核版本2.6.32-358rpm包
kernel-2.6.32-358.el6.x86_64.rpm  kernel-firmware-2.6.32-358.el6.noarch.rpm

[root@vos vos3000]# uname -r     //查看降級之前的系統內核版本
2.6.32-642.el6.x86_64

[root@localhost ~]# yum -y remove kernel kernel-firmware
...
刪除:
  kernel-firmware.noarch 0:2.6.32-642.el6

完畢!

[root@vos vos3000]# yum -y install kernel-2.6.32-358.el6.x86_64.rpm kernel-firmware-2.6.32-358.el6.noarch.rpm
...
已安裝:
  kernel.x86_64 0:2.6.32-358.el6                            kernel-firmware.noarch 0:2.6.32-358.el6

完畢!       
[root@localhost ~]# reboot     //重啓系統

[root@vos ~]# uname -r      //查看降級後內核版本
2.6.32-358.el6.x86_64

[root@vos ~]# cat /proc/version
Linux version 2.6.32-358.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC) ) #1 SMP Fri Feb 22 00:31:26 UTC 2013

禁止內核更新:

[root@spgpu ~]# vim /etc/yum.conf[main]部分加上:
exclude=kernel* centos-release

這樣,在yum update的時候就不會更新內核了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章