因为要安装K8S集群的缘故,想在安装前把Linux内核升级到主线最新版本
第一步. 升级前版本为:
1
2$ uname -a
Linux kube-node1 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux第二步. 导入公钥、安装软件库
1
2
3
4
5
6$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
取http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
准备中... ################################# [100%]
正在升级/安装...
1:elrepo-release-7.0-3.el7.elrepo ################################# [100%]第三步. 列出可用的内核包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33$ yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
加载插件:fastestmirror
elrepo-kernel | 2.9 kB 00:00:00
elrepo-kernel/primary_db | 1.7 MB 00:00:02
Determining fastest mirrors
* elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
可安装的软件包
kernel-lt.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 4.4.113-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 4.4.113-1.el7.elrepo elrepo-kernel
kernel-ml.x86_64 4.14.15-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 4.14.15-1.el7.elrepo elrepo-kernel
$ yum --enablerepo=elrepo-kernel install kernel-ml #安装主线版本
--> 正在检查事务
---> 软件包 kernel-ml.x86_64.0.4.14.15-1.el7.elrepo 将被 安装
--> 解决依赖关系完成
依赖关系解决
======================================================================================$====================
Package 架构 版本 源 大小
======================================================================================$====================
正在安装:
kernel-ml x86_64 4.14.15-1.el7.elrepo elrepo-kernel 43 M
事务概要
==========================================================================================================
安装 1 软件包第四步. 设置GRUB默认启动的内核版本
1
2
3
4
5
6
7
8$ cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"- 默认GRUB_DEFAULT值是saved
GRUB2从环境变量 /boot/grub2/grubenv中LOAD内核定义
1
2
3cat /boot/grub2/grubenv
# GRUB Environment Block
saved_entry=CentOS Linux (4.4.159-1.el7.elrepo.x86_64) 7 (Core)grub2-set-default命令可以升级 GRUB2的环境变量
默认情况下新装的内核会被自动设置成默认启动内核,但我发现如果在大版本升级有刚有时则不会
1
2
3
4
5
6
7cat /etc/sysconfig/kernel
# UPDATEDEFAULT specifies if new-kernel-pkg should make
# new kernels the default
UPDATEDEFAULT=yes
# DEFAULTKERNEL specifies the default kernel package type
DEFAULTKERNEL=kernel更改启动内核
1
2
3
4
5
6
7
8
9
10
11$ awk -F\' /^menuentry/{print\$2} /etc/grub2.cfg
CentOS Linux (4.4.159-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-862.14.4.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-b8276906e93a4616bbc11991a0924085) 7 (Core)
$ grub2-set-default CentOS Linux (4.4.159-1.el7.elrepo.x86_64) 7 (Core)
$ cat /boot/grub2/grubenv
# GRUB Environment Block
saved_entry=CentOS Linux (4.4.159-1.el7.elrepo.x86_64) 7 (Core)
第五步. 重新创建内核配置
1
2
3
4
5
6
7$ grub2-mkconfig -o /boot/grub2/grub.cfg
$ systemctl reboot
$ uname -a
Linux kube-node1 4.14.15-1.el7.elrepo.x86_64 #1 SMP Tue Jan 23 20:28:26 EST 2018 x86_64 x86_64 x86_64 GNU/Linux
yum autoremove kernel-3.10.0-327.28.3.el7.x86_64 #删除旧内核
最后更新: 2023年08月27日 03:06