公司打算上Docker服務,目前須要安裝運行環境,Docker新的功能除了須要Centos 7系統以外,內核的版本高低也決定着使用的效果,因此在此記錄下系統內核版本升級過程。php
注:對於線上環境的內核版本還須要根據實際狀況謹慎選擇,越新的版本將來可能遇到的問題越多,此文只是記錄升級方法而已。linux
關於內核版本的定義:docker
版本性質:主分支ml(mainline),穩定版(stable),長期維護版lt(longterm)vim
版本命名格式爲 「A.B.C」:centos
數字 A 是內核版本號:版本號只有在代碼和內核的概念有重大改變的時候纔會改變,歷史上有兩次變化:
第一次是1994年的 1.0 版,第二次是1996年的 2.0 版,第三次是2011年的 3.0 版發佈,但此次在內核的概念上並無發生大的變化
數字 B 是內核主版本號:主版本號根據傳統的奇-偶系統版本編號來分配:奇數爲開發版,偶數爲穩定版
數字 C 是內核次版本號:次版本號是不管在內核增長安全補丁、修復bug、實現新的特性或者驅動時都會改變安全
# uname -r 3.10.0-514.el7.x86_64 # cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)
Centos 6和Centos 7的升級方法相似,只不過就是選擇的YUM源或者rpm包不一樣罷了,下面主要是Centos 7的安裝方法,中間也會有對於Centos 6 升級的方法提示。服務器
方法一:spa
Centos 6 YUM源:http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm Centos 7 YUM源:http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
升級內核須要先導入elrepo的key,而後安裝elrepo的yum源:.net
# rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org # rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
倉庫啓用後,你可使用下面的命令列出可用的內核相關包,以下圖:3d
# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
上圖能夠看出,長期維護版本lt爲4.4,最新主線穩定版ml爲4.12,咱們須要安裝最新的主線穩定內核,使用以下命令:(之後這臺機器升級內核直接運行這句就可升級爲最新穩定版)
# yum -y --enablerepo=elrepo-kernel install kernel-ml.x86_64 kernel-ml-devel.x86_64
方法二:
對於一些沒法上網的服務器,或者須要安裝指定版本內核的需求,咱們能夠把kernel image的rpm包下載下來安裝,下載地址以下:
下載指定版本 kernel: http://rpm.pbone.net/index.php3?stat=3&limit=1&srodzaj=3&dl=40&search=kernel
下載指定版本 kernel-devel:http://rpm.pbone.net/index.php3?stat=3&limit=1&srodzaj=3&dl=40&search=kernel-devel
官方 Centos 6: http://elrepo.org/linux/kernel/el6/x86_64/RPMS/
官方 Centos 7: http://elrepo.org/linux/kernel/el7/x86_64/RPMS/
將rpm包下載上傳到服務器上,使用下面的命令安裝便可:
# yum -y install kernel-ml-devel-4.12.4-1.el7.elrepo.x86_64.rpm # yum -y install kernel-ml-4.12.4-1.el7.elrepo.x86_64.rpm
方法三:
還能夠經過源碼包編譯安裝,這種方式可定製性強,但也比較複雜,有須要的可自行查找資料安裝,下面只給出各系統版本內核源碼包的下載地址:https://www.kernel.org/pub/linux/kernel/
內核升級完畢後,目前內核仍是默認的版本,若是此時直接執行reboot命令,重啓後使用的內核版本仍是默認的3.10,不會使用新的4.12.4,首先,咱們能夠經過命令查看默認啓動順序:
# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg CentOS Linux (4.12.4-1.el7.elrepo.x86_64) 7 (Core) CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core) CentOS Linux (0-rescue-a43cc2091b4557f1fd10a52ccffa5db2) 7 (Core)
由上面能夠看出新內核(4.12.4)目前位置在0,原來的內核(3.10.0)目前位置在1,因此若是想生效最新的內核,還須要咱們修改內核的啓動順序爲0:
# vim /etc/default/grub
注:Centos 6 更改的文件相同,使用命令肯定新內核位置後,而後將參數default更改成0便可。
接着運行grub2-mkconfig命令來從新建立內核配置,以下:
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot
系統啓動完畢後,能夠經過命令查看系統的內核版本,以下:
# uname -r 4.12.4-1.el7.elrepo.x86_64
到此,Centos 7內核升級完畢。