CentOS 7.3 内核升级过程

本贴最后更新于 2271 天前,其中的信息可能已经物是人非

首先

我的服务器 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

2.1、前面两步的地址哪里来的?

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 重启一下才生效哦。

内核升级记录帖 - 完结。

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    939 引用 • 940 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...