Centos系统升级内核
本次测试主机为某平台云主机,默认内核参数如下
Linux vm-10-250-64-26 3.10.0-327.13.1.el7.x86_64 #1 SMP Thu Mar 31 16:04:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
关于内核
Linux 内核分两种:官方内核(通常是内核开发人员用)和各大 Linux 发行版内核(一般用户常用)。
在使用 Docker 时,发现其对 Linux 内核版本的最低要求是 3.10(这也刚好是 CentOS 7.2 的内核版本),但是在这个版本上有部分功能无法实现。目前 Linux 内核已经发布到 4.X(可以随时在 Linux 内核官网 查看当前版本),为了使用最新版本的内核,只好在安装 CentOS 7 后对内核进行升级。
Prepatch:Prepatch 或 “RC” 内核是主要的内核预发行版本,主要针对内核开发人员和 Linux 爱好者。必须从源代
码进行编译,并且通常包含必须在可以放入稳定版本之前进行测试的新功能。Prepatch 内核由 Linus Torvalds 维护和发布。
Mainline:Mainline 主线树由 Linus Torvalds 维护。这个版本的内核会引入所有新功能。新的 Mainline 内核每2-3 个月发布一次。
Stable:每个主线内核被发布后,即被认为是“stable”。任何对 stable 内核的 BUG 修复都会从 Mainline 主线树中回溯并由指定的 stable 内核维护人员使用。 在下一个主线内核可用之前,通常只有几个 BUG 修复内核版本除非它被指定为“longterm maintenance kernel(长期维护内核)”。stable 内核更新按需发布,通常每月 2-3 次。
Longterm:通常会提供几个“longterm maintenance”内核版本,用于修复旧版内核的 BUG。这些内核只会修复重大BUG,并且不会频繁发布版本。
升级内核
先更新仓库
yum -y update
启用ELRepo仓库
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
查看可用的系统内核包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
可看到本次能升级到4.4.176和5.0.2两个内核版本
安装新内核
yum --enablerepo=elrepo-kernel install kernel-lt
--enablerepo 选项开启CentOS系统上的指定仓库。默认开启的是elrepo,这里用elrepo-kernel替换。
设置 grub2
内核安装好后,需要设置为默认启动选项并重启后才会生效
查看系统上的所有可以内核
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (4.4.176-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-327.13.1.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-ed703d1292182569f36c01ee63d5c153) 7 (Core)
设置grub2
grub2-set-default 0
0来自上一步查到的内核代号,想将哪一个内核设为默认启动内核则指定哪一个代号
生成 grub 配置文件并重启
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot