可以使用 yum install 或 rpm -ivh 安装已有 rpm 包,如果没有 rpm 的话,可以看之后篇下载源码包编译。如我这文件名为 kernel-4.11.2-2.x86_64.rpm(及其他header、devel 等 rpm)

[[email protected] RPMS]# rpm -ivh kernel-4.11.2-2.x86_64.rpm
运行rpm -ivh安装rpm包的截图

由于涉及到要重新 cpio、gzip 打包 boot,所以会慢一些,耐心等待,没有耐心的可以起一个 htop / dstat 慢慢看。

装完后查看 Grub 引导配置:

查看现有GRUB引导配置的截图
[[email protected] RPMS]# awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.11.2) 7 (Core) 👈第0个Entry
CentOS Linux (4.11.2-1.el7.elrepo.x86_64) 7 (Core) 👈第1个Entry
CentOS Linux (3.10.0-1062.9.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-291fbfa093be4fe28dfdb01904dd48e7) 7 (Core)

我这由于一个是 elrepo 的,一个是我自己重新编译的,所以会有两个版本相近的4.11.2。

根据需要,可以调整为第 n 个 Entry(从0开始算):

grub2-set-default 0

(0为EntryID,也可以用例如"4.11.2",或者"3.10.0-1062.9.1.el7.x86_64" 等等具体版本替换)

如找不到你安装的版本,在确认/boot分区下有镜像的情况下,有需要可以重新生成GRUB引导文件:

grub2-mkconfig -o /boot/grub2/grub.cfg
使用grub2-mkconfig后,引导菜单顺序发生了变化的截图

重新生成的话检查下顺序可能会有变化,如果按顺序的指定的话,可能需要重新指定。

特殊需要,为了防止未来yum升级覆盖,可以做排除:

修改:/etc/yum.conf

在[main]下添加一行:

exclude=kernel*
修改/etc/yum.conf,添加exclude进行Kernel命名前缀排除的截图

保存,完成yum update排除。

重启即可。

重启后的引导菜单,无交互默认选择之前指定的内核版本

眼里有远方,心中有阳光,脚下有力量