首先
我的服务器 Linux 版本:CentOS 7.3
内核版本为:3.10.0-693.21.1.el7.x86_64
Linux 内核升级方式
- 1、下载新版内核到服务器上,进行编译安装,之后删除老内核,
- 优点是:可完全控制编译项,
- 缺点是:慢,且容易失败;
- 2、采用 yum 方式安装,优点是:快捷方便,成功率高;
- 3、我自然是只会 yum 安装了。
开始升级内核
0、先看看当前内核版本
- 使用
uname -r
命令
[root@liaow0316 17:06:27 /]$ uname -r
3.10.0-693.21.1.el7.x86_64
[root@liaow0316 17:12:11 /]$
1、导入公共秘钥
$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2、安装 elrepo 的 yum 源
$ rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
- 这个 elrepo 是个什么玩意,我的另一篇帖子有提到。
2.1、前面两步的地址哪里来的?
- 回答:当然是 ELrepo 官网啦!
3、安装内核
$ yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml
- 默认安装 mainline 版本,也就是最新稳定版本
4、安装完成后
- 查看已安装的 Linux 内核版本
- 使用
rpm -qa kernel*
或rpm -qa | grep -i kernel
命令 - ps:如果前面那个命令后面不加*号,是查不到新安装的内核的
[root@liaow0316 17:06:29 /]$ rpm -qa | grep -i kernel
kernel-ml-4.18.1-1.el7.elrepo.x86_64
kernel-3.10.0-693.11.1.el7.x86_64
kernel-headers-3.10.0-862.11.6.el7.x86_64
kernel-3.10.0-693.21.1.el7.x86_64
kernel-tools-3.10.0-862.11.6.el7.x86_64
kernel-ml-devel-4.18.1-1.el7.elrepo.x86_64
kernel-3.10.0-862.11.6.el7.x86_64
kernel-3.10.0-862.9.1.el7.x86_64
kernel-tools-libs-3.10.0-862.11.6.el7.x86_64
kernel-3.10.0-693.11.6.el7.x86_64
[root@liaow0316 17:12:11 /]$
5、查找新安装的内核完整名称
- 使用
cat /boot/grub2/grub.cfg | grep menuentry
指令
[root@liaow0316 15:36:56 ~]$ cat /boot/grub2/grub.cfg | grep menuentry
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
menuentry_id_option=""
export menuentry_id_option
menuentry 'CentOS Linux (4.18.1-1.el7.elrepo.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.26.2.el7.x86_64-advanced-59d9ca7b-4f39-4c0c-9334-c56c182076b5' {
menuentry 'CentOS Linux (3.10.0-862.11.6.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.26.2.el7.x86_64-advanced-59d9ca7b-4f39-4c0c-9334-c56c182076b5' {
menuentry 'CentOS Linux (3.10.0-862.9.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.26.2.el7.x86_64-advanced-59d9ca7b-4f39-4c0c-9334-c56c182076b5' {
menuentry 'CentOS Linux (4.16.4-1.el7.elrepo.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.26.2.el7.x86_64-advanced-59d9ca7b-4f39-4c0c-9334-c56c182076b5' {
menuentry 'CentOS Linux (3.10.0-693.21.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.26.2.el7.x86_64-advanced-59d9ca7b-4f39-4c0c-9334-c56c182076b5' {
menuentry 'CentOS Linux (3.10.0-693.11.6.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.26.2.el7.x86_64-advanced-59d9ca7b-4f39-4c0c-9334-c56c182076b5' {
menuentry 'CentOS Linux (3.10.0-693.11.1.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-3.10.0-514.26.2.el7.x86_64-advanced-59d9ca7b-4f39-4c0c-9334-c56c182076b5' {
menuentry 'CentOS Linux (0-rescue-963c2c41b08343f7b063dddac6b2e486) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menuentry_id_option 'gnulinux-0-rescue-963c2c41b08343f7b063dddac6b2e486-advanced-59d9ca7b-4f39-4c0c-9334-c56c182076b5' {
[root@liaow0316 15:37:52 ~]$
6、切换默认启动内核
- 1、使用
grub2-set-default '***'
指令。(*** 是上一步操作中复制的新内核名称,引号是不能少的) - 2、因为新安装的内核默认在第一位,所以使用
grub2-set-default 0
指令也是可以。
[root@liaow0316 15:37:52 ~]$ grub2-set-default 'CentOS Linux (4.18.1-1.el7.elrepo.x86_64) 7 (Core)'
[root@liaow0316 15:37:52 ~]$
7、查看默认启动内核是否更改成功
- 使用
grub2-editenv list
命令
[root@liaow0316 18:45:24 ~]$ grub2-editenv list
saved_entry=CentOS Linux (4.18.1-1.el7.elrepo.x86_64) 7 (Core)
[root@laiow0316 18:45:28 ~]$
8、重启服务器
$ reboot
- 重启完成后,新内核就安装完成,并且投入使用了。
- 此时再使用第 0 步的命令,查看当前的内核版本。
[root@liaow0316 18:50:00 ~]$ uname -r
4.18.1-1.el7.elrepo.x86_64
[root@liaow0316 18:50:04 ~]$
- 好了,内核更新完成了,接下来的操作可选,可以不往下看了。
9、老版本的内核不想用了,怎么卸载?
- 使用
rpm -qa kernel*
或rpm -qa | grep -i kernel
命令,先找到内核版本号;
[root@liaow0316 18:50:04 ~]$ rpm -qa | grep -i kernel
kernel-ml-4.18.1-1.el7.elrepo.x86_64
kernel-3.10.0-693.11.1.el7.x86_64
kernel-headers-3.10.0-862.11.6.el7.x86_64
kernel-3.10.0-693.21.1.el7.x86_64
kernel-tools-3.10.0-862.11.6.el7.x86_64
kernel-ml-devel-4.18.1-1.el7.elrepo.x86_64
kernel-3.10.0-862.11.6.el7.x86_64
kernel-3.10.0-862.9.1.el7.x86_64
kernel-tools-libs-3.10.0-862.11.6.el7.x86_64
kernel-3.10.0-693.11.6.el7.x86_64
[root@liaow0316 18:54:28 ~]$
- 使用
yum remove [版本号...版本号]
命令卸载老版本的内核(最好是复制下来,别复制错了);
[root@liaow0316 18:54:28 ~]$ yum remove kernel-ml-4.18.1-1.el7.elrepo.x86_64 kernel-ml-devel-4.18.1-1.el7.elrepo.x86_64
- 建议只卸载自己手动安装的内核,不要动原来的内核。所以我这里就不演示卸载了;
- 使用
rpm -e [版本号...版本号]
命令,应该也是同一个效果。 - 内核卸载完,也记得
reboot
重启一下才生效哦。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于