最近在學(xué)習(xí) Docker,想在服務(wù)器上實(shí)踐一下.Docker 需要安裝在 CentOS 7 64 位的平臺(tái)惧盹,并且內(nèi)核版本不低于 3.10。 CentOS 7 滿足最低內(nèi)核的要求摔踱,但由于 CentOS 7 內(nèi)核版本比較低,部分功能(如 overlay2
存儲(chǔ)層驅(qū)動(dòng))無法使用怨愤,并且部分功能可能不太穩(wěn)定.需要升級(jí)到最新的 CentOS 版本,并且內(nèi)核也更新到最新的穩(wěn)定版本.這是我對(duì)升級(jí) CentOS 系統(tǒng)版本及內(nèi)核的記錄,方便以后查閱,也分享給大家.
注意:這篇文章只在 CentOS 7.× 系列版本上驗(yàn)證過,其他 CentOS 版本請(qǐng)謹(jǐn)慎使用.
我的服務(wù)器是騰訊云云主機(jī),系統(tǒng)為 CentOS 7.1,系統(tǒng)內(nèi)核版本為 3.10,我在寫這篇博客的時(shí)候最新的 CentOS 版本為 CentOS 7.3,而 The Linux Kernel Archives 上提供的最新穩(wěn)定的系統(tǒng)內(nèi)核為 4.12 版本.所以就把我的服務(wù)器系統(tǒng)升級(jí)為最新的 CentOS 7.3 版本,系統(tǒng)內(nèi)核升級(jí)為 4.12 版本.
備份重要數(shù)據(jù)
備份重要數(shù)據(jù)(例如:/etc ,/var ,/opt文件夾)如果 CentOS 是安裝在虛擬機(jī)上,那么可以使用快照進(jìn)行備份.像 VMware 虛擬機(jī)可以快照備份.也可以針對(duì)重要程序數(shù)據(jù)進(jìn)行備份派敷,例如 MySQL、Appache撰洗、Nginx篮愉、DNS 等等.云主機(jī)的話,阿里云和騰訊云都可以創(chuàng)建快照備份數(shù)據(jù).
檢查當(dāng)前 CentOS 系統(tǒng)版本
# cat /etc/redhat-release
> CentOS Linux release 7.1.1503 (Core)
檢查當(dāng)前 CentOS 系統(tǒng)內(nèi)核版本
# uname -sr
> Linux 3.10.0-327.10.1.e17.x86_64
可以看出當(dāng)前系統(tǒng)為 CentOS 7.1,系統(tǒng)內(nèi)核版本為 3.10.
運(yùn)行 yum
命令升級(jí)
CentOS 中 update
命令可以一次性更新所有軟件到最新版本。
注意:不推薦使用
update
的-y
選項(xiàng)差导,-y
選項(xiàng)會(huì)讓你在安裝每項(xiàng)更新前都進(jìn)行確認(rèn),這樣會(huì)非常費(fèi)時(shí)間.對(duì)于 CentOS 5.× 和 6.× 的系統(tǒng)我們?cè)诟潞笮枰匦掳惭b應(yīng)用程序恢復(fù)數(shù)據(jù),慶幸的是 CentOS 7.× 不需要這么麻煩,可以直接升級(jí).
# yum clean all
# yum update
期間會(huì)有確認(rèn)提示,直接回車確認(rèn)即可.
重啟系統(tǒng)
# reboot
檢查當(dāng)前 CentOS 系統(tǒng)版本
# cat /etc/redhat-release
> CentOS Linux release 7.3.1611 (Core)
檢查當(dāng)前 CentOS 系統(tǒng)內(nèi)核版本
# uname -sr
> Linux 3.10.0-327.10.1.e17.x86_64
可以看到當(dāng)前系統(tǒng)為 CentOS 7.3 已經(jīng)升級(jí)成功了,但系統(tǒng)內(nèi)核版本依舊為 3.10 并沒有升級(jí),這是因?yàn)?CentOS 為了安全和穩(wěn)定并不會(huì)把系統(tǒng)內(nèi)核升級(jí)到最新的版本,所以 yum update
命令只會(huì)升級(jí)系統(tǒng)版本和更新軟件.接下來我們就來升級(jí)系統(tǒng)內(nèi)核.
升級(jí) CentOS 7.× 內(nèi)核,啟用 ELRepo
大多數(shù)現(xiàn)代發(fā)行版提供了一種使用 yum
等包管理系統(tǒng)和官方支持的倉庫升級(jí)內(nèi)核的方法。
但是弱判,這只會(huì)升級(jí)內(nèi)核到倉庫中可用的最新版本,而不是在 The Linux Kernel Archives 中可用的最新主線穩(wěn)定內(nèi)核.不幸的是, Red Hat 只允許使用 yum
升級(jí)內(nèi)核.與 Red Hat 不同昌腰,CentOS 允許使用 ELRepo,這是一個(gè)第三方倉庫,可以將內(nèi)核升級(jí)到最新主線穩(wěn)定內(nèi)核.
要在 CentOS 7.× 上啟用 ELRepo 倉庫,請(qǐng)運(yùn)行:
# 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
倉庫啟用后遭商,你可以使用下面的命令列出可用的系統(tǒng)內(nèi)核相關(guān)包:
# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
接下來劫流,安裝最新的主線穩(wěn)定內(nèi)核:
# yum --enablerepo=elrepo-kernel install kernel-ml
由于網(wǎng)絡(luò)原因,以上操作可能需要不少時(shí)間.
重啟機(jī)器祠汇,檢查當(dāng)前 CentOS 系統(tǒng)內(nèi)核版本
# uname -sr
> Linux 4.12.0-1.el7.elrepo.x86_64
可以看到系統(tǒng)內(nèi)核已經(jīng)升級(jí)到最新的主線穩(wěn)定內(nèi)核.
設(shè)置 GRUB 默認(rèn)的內(nèi)核版本
為了讓新安裝的內(nèi)核成為默認(rèn)啟動(dòng)選項(xiàng)可很,你需要如下修改 GRUB 配置,打開并編輯 /etc/default/grub
并設(shè)置 GRUB_DEFAULT=0
.意思是 GRUB 初始化頁面的第一個(gè)內(nèi)核將作為默認(rèn)內(nèi)核.
# 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 console=ttyS0 console=tty0 panic=5"
> GRUB_DISABLE_RECOVERY="true"
> GRUB_TERMINAL="serial console"
> GRUB_TERMINAL_OUTPUT="serial console"
> GRUB_SERIAL_COMMAND="serial --speed=9600 --unit=0 --word=8 --parity=no --stop=1"
接下來運(yùn)行下面的命令來重新創(chuàng)建內(nèi)核配置.
# grub2-mkconfig -o /boot/grub2/grub.cfg
重啟機(jī)器姜骡,查看系統(tǒng)當(dāng)前內(nèi)核版本,驗(yàn)證最新的內(nèi)核已作為默認(rèn)內(nèi)核
# uname -a
> Linux VM_112_0_centos 4.12.0-1.el7.elrepo.x86_64 #1 SMP Sun Jul 2 20:38:48 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
刪除 CentOS 更新后的舊內(nèi)核
查看系統(tǒng)中全部的內(nèi)核 RPM 包:
# rpm -qa | grep kernel
> kernel-tools-3.10.0-514.26.2.el7.x86_64
> kernel-devel-3.10.0-514.10.2.el7.x86_64
> kernel-3.10.0-514.26.2.el7.x86_64
> kernel-3.10.0-327.el7.x86_64
> kernel-ml-4.12.0-1.el7.elrepo.x86_64
> kernel-headers-3.10.0-514.26.2.el7.x86_64
> kernel-devel-3.10.0-514.26.2.el7.x86_64
> kernel-tools-libs-3.10.0-514.26.2.el7.x86_64
刪除舊內(nèi)核的 RPM 包
yum remove kernel-tools-3.10.0-514.26.2.el7.x86_64 kernel-devel-3.10.0-514.10.2.el7.x86_64 kernel-3.10.0-514.26.2.el7.x86_64 kernel-3.10.0-327.el7.x86_64 kernel-headers-3.10.0-514.26.2.el7.x86_64 kernel-devel-3.10.0-514.26.2.el7.x86_64 kernel-tools-libs-3.10.0-514.26.2.el7.x86_64
重啟系統(tǒng)
# reboot
這樣就可以升級(jí)完成了.Ubuntu 系統(tǒng)的話可以看看這篇博文 <<如何在 Ubuntu 中升級(jí)內(nèi)核>>