提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


文章目录

  • 前言
  • 一、查看当前Linux内核版本
  • 二、升级前的准备——更新仓库
  • 三、启用 ELRepo 仓库:
  • 四、查看可用的系统内核包
  • 五、我们选择安装最新内核
  • 六、设置 grub2
  • 查看系统上的所有可以内核
  • 设置 grub2
  • 七、生成 grub 配置文件并重启
  • 八、重启后检验升级情况
  • 九、删除旧的Linux内核(可选)
  • 十、总结



前言


由于低版本的Linux内核可能与一些比较新的根据不兼容,所以需要升级。
以下是升级Linux内核的步骤,使用的虚拟机是centos7,仅供参考!

一、查看当前Linux内核版本

uname -r

centos7内核版本查看 centos7查看内核信息_linux

参数:
-a, –all: 按照下面的顺序打印所有信息,如果 -p 和 -i 未知时排除掉。
-s, –kernel-name: 打印内核名字,一般就是 Linux。
-n, –nodename: 打印网络节点的主机名。
-r, –kernel-release: 打印内核发行版的版本。常用。3.10.0-514.26.2.el7.x86_64
-v, –kernel-version: 打印内核的版本。#1 SMP Tue Jul 4 15:04:05 UTC 2017
-m, –machine: 打印机器硬件名。
-p, –processor: 打印处理器名字或“unknown”。
-i, –hardware-platform: 打印硬件平台或“unknown”。
-o, –operating-system: 打印操作系统。
–help: 显示这个帮助并退出。
–version: 显示这版本信息并退出。

二、升级前的准备——更新仓库

yum -y update

-y:默认选yes,减少重复操作。

centos7内核版本查看 centos7查看内核信息_运维_02

三、启用 ELRepo 仓库:

ELRepo 仓库是基于社区的用于企业级 Linux 仓库,提供对 RedHat Enterprise (RHEL) 和 其他基于 RHEL的 Linux 发行版(CentOS、Scientific、Fedora 等)的支持。
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
[root@localhost ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@localhost ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:elrepo-release-7.0-4.el7.elrepo  ################################# [100%]

四、查看可用的系统内核包

yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

可以发现,有5.4版本和6.3版本,可供选择:

[root@localhost ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * elrepo-kernel: hkg.mirror.rackspace.com
elrepo-kernel                                                                                                    | 3.0 kB  00:00:00
elrepo-kernel/primary_db                                                                                         | 2.1 MB  00:00:00
Available Packages
elrepo-release.noarch                                               7.0-6.el7.elrepo                                       elrepo-kernel
kernel-lt.x86_64                                                    5.4.242-1.el7.elrepo                                   elrepo-kernel
kernel-lt-devel.x86_64                                              5.4.242-1.el7.elrepo                                   elrepo-kernel
kernel-lt-doc.noarch                                                5.4.242-1.el7.elrepo                                   elrepo-kernel
kernel-lt-headers.x86_64                                            5.4.242-1.el7.elrepo                                   elrepo-kernel
kernel-lt-tools.x86_64                                              5.4.242-1.el7.elrepo                                   elrepo-kernel
kernel-lt-tools-libs.x86_64                                         5.4.242-1.el7.elrepo                                   elrepo-kernel
kernel-lt-tools-libs-devel.x86_64                                   5.4.242-1.el7.elrepo                                   elrepo-kernel
kernel-ml.x86_64                                                    6.3.1-1.el7.elrepo                                     elrepo-kernel
kernel-ml-devel.x86_64                                              6.3.1-1.el7.elrepo                                     elrepo-kernel
kernel-ml-doc.noarch                                                6.3.1-1.el7.elrepo                                     elrepo-kernel
kernel-ml-headers.x86_64                                            6.3.1-1.el7.elrepo                                     elrepo-kernel
kernel-ml-tools.x86_64                                              6.3.1-1.el7.elrepo                                     elrepo-kernel
kernel-ml-tools-libs.x86_64                                         6.3.1-1.el7.elrepo                                     elrepo-kernel
kernel-ml-tools-libs-devel.x86_64                                   6.3.1-1.el7.elrepo                                     elrepo-kernel
perf.x86_64                                                         5.4.242-1.el7.elrepo                                   elrepo-kernel
python-perf.x86_64

五、我们选择安装最新内核

yum --enablerepo=elrepo-kernel install kernel-ml

–enablerepo 选项开启 CentOS 系统上的指定仓库。默认开启的是 elrepo ,这里用 elrepo-kernel 替换。

ps:安装过程中出现选项,默认选yes即可。

安装完成:

centos7内核版本查看 centos7查看内核信息_运维_03

六、设置 grub2

内核安装好后,需要设置为默认启动选项并重启后才会生效

查看系统上的所有可以内核

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

设置 grub2

机器上存在 4 个内核,我们要使用 6.3.1 这个版本,可以通过 grub2-set-default 0 命令或编辑 /etc/default/grub 文件来设置。

[root@localhost ~]# sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (6.3.1-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.90.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-8de58ed1c51640c69d645d424c2c9945) 7 (Core)
[root@localhost ~]#

通过 grub2-set-default 0 命令设置
其中 0 来自上一步的 awk 命令

sudo grub2-set-default 0

七、生成 grub 配置文件并重启

通过 gurb2-mkconfig 命令创建 grub2 的配置文件,然后重启

sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo reboot

运行结果

[root@localhost ~]# sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-6.3.1-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-6.3.1-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.90.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.90.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-8de58ed1c51640c69d645d424c2c9945
Found initrd image: /boot/initramfs-0-rescue-8de58ed1c51640c69d645d424c2c9945.img
done

八、重启后检验升级情况

[root@localhost ~]# uname -r
6.3.1-1.el7.elrepo.x86_64

ps: 我第一次重启是不成功的,再重启一次就正常启动了,不过启动速度慢一些。

九、删除旧的Linux内核(可选)

通过 yum remove 命令

[root@localhost ~]# rpm -qa | grep kernel
kernel-ml-6.3.1-1.el7.elrepo.x86_64
kernel-3.10.0-327.el7.x86_64
kernel-headers-3.10.0-1160.90.1.el7.x86_64
kernel-3.10.0-1160.90.1.el7.x86_64
kernel-tools-3.10.0-1160.90.1.el7.x86_64
kernel-devel-3.10.0-327.el7.x86_64
kernel-tools-libs-3.10.0-1160.90.1.el7.x86_64
abrt-addon-kerneloops-2.1.11-60.el7.centos.x86_64
kernel-devel-3.10.0-1160.90.1.el7.x86_64

十、总结

希望有所帮助,节省学习时间!