应用背景
最近在接触docker,其对内核版本要求较高,就连目前使用的centos7.x默认内核版本为3.10.0-xxx,也是刚好满足其最低要求,故借此机会记录一下升级内核的操作步骤。
操作步骤
小版本升级
查看当前和可升级版本
1
2
3
4
5
6
7
8yum list kernel
# 以下是输出
Installed Packages
# 当前版本(有下划线标识)
kernel.x86_64 3.10.0-327.el7 @anaconda
Available Packages
kernel.x86_64 3.10.0-514.16.1.el7 updates升级
1
yum update kernel -y
重启并检查
1
2reboot
uname -r
大版本升级
载入公钥
1
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
升级安装ELRepo
1
2rpm -Uvh \
http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm载入elrepo-kernel元数据
1
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
查看可用的rpm包
说明:
lt :
long term support,长期支持版本ml:
mainline,主线版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
# 以下是输出
Installed Packages
# 当前版本(有下划线标识)
kernel.x86_64 3.10.0-327.el7 @anaconda
kernel-tools.x86_64 3.10.0-327.el7 @anaconda
kernel-tools-libs.x86_64 3.10.0-327.el7 @anaconda
Available Packages
# 安装目标版本
kernel-lt.x86_64 4.4.231-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 4.4.231-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 4.4.231-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 4.4.231-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 4.4.231-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 4.4.231-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 4.4.231-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 5.7.10-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 5.7.10-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 5.7.10-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 5.7.10-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 5.7.10-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 5.7.10-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 5.7.10-1.el7.elrepo elrepo-kernel安装你选择的
目标版本
的kernel1
yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-lt.x86_64 -y
删除旧版本工具包
1
yum remove kernel-tools.* -y
安装新版本工具包
1
2yum --disablerepo=\* --enablerepo=elrepo-kernel install kernel-lt-tools.* \
-y --skip-broken查看内核插入顺
1
2
3
4
5
6awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
# 以下是输出
0 : CentOS Linux (4.4.231-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-6f16a7323dcc49f69530668d8e1df48c) 7 (Core)说明:默认新内核是从头插入,默认启动顺序也是从0开始(当前顺序还未生效),或者使用:
1
2
3
4
5
6grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
# 以下是输出
CentOS Linux (4.4.231-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-6f16a7323dcc49f69530668d8e1df48c) 7 (Core)其中文件
/etc/grub2.cfg
和/boot/grub2/grub.cfg
内容一致查看当前实际启动顺序
1
2
3
4grub2-editenv list
# 以下是输出
saved_entry=CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)设置默认启动
1
2
3
4
5
6
7# 来源 => 第8步【查看内核插入顺】
grub2-set-default 'CentOS Linux (4.4.231-1.el7.elrepo.x86_64) 7 (Core)'
# 查看当前实际启动顺序
grub2-editenv list
# 以下是输出
saved_entry=CentOS Linux (4.4.231-1.el7.elrepo.x86_64) 7 (Core)或者直接设置数值
1
2
3
4# 0代表当前第一行,也就是上面的4.20.12版本那一行内容
grub2-set-default 0
grub2-editenv list
saved_entry=0重启并检查
1
2
3
4
5reboot
uname -r
# 以下是输出(说明成功)
4.4.231-1.el7.elrepo.x86_64