cnetos系统内核3.10升级到4.14,编译安装
场景:交付部署需要升级内核。一开始使用的是rpm的包,缺少依赖装完以后不显示,安装rpm包,设定内核启动顺序的时候无法成功。所以该用编译安装
系统:cetntos7.5
编译需要安装几个依赖
yum -y install gcc make elfutils-libelf-devel openssl-devel bc # 安装编译
yum -y install ncurses-devel perl
这是需要安装的依赖还有的编译环境需要perl,也一并装上
[root@localhost ~]# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.196.tar.xz
下载安装包
解压
tar xf linux-4.14.196.tar.xz -C /your dir
解压完成以后
cd进去
开始编译
make menuconfig
显示界面
直接save然后退出就好了
Linux 内核所有的配置项都在这里,内核的编译分为两个部分,核心和模块,对于核心的部分,要编译进核心,可能以后会用到的部分,尽量编译成模块。 文本菜单选择界面,使用左(←)、右(→)箭头切换底部菜单,上(↑)、下(↓)箭头切换中间的配置项,空格键 选择配置项,部分配置项右边有 —> 标识,代表有下级子项,可以使用 Enter 进去选择。 同时每一项的前面都有以下标识,可以根据需要选择。 - <*>[*] 表示编译进核心 - <M> 表示编译成模块 - 空格 表示不选中此项 如果你只是看一下整个编译过程,不想深究每一项,执行上一步 make menuconfig 之后,直接保存退出就可以了,它会使用 CentOS 内部的配置文件作为这次编译的配置文件
# 配置项选完,config 配置文件生成之后,就可以开始编译了 # 编译时间比较长,如果上面你是自定义配置项,把不需要的配置都关闭,编译会快的多。我这使用的 CentOS 内部的配置文件,CentOS 为了大多数人的使用,开的配置项比较多,所以编译的时间比较长,也和你的电脑配置有关。我是远程执行的编译了1个小时
然后执行
[root@localhost linux-4.14.196]# make
[root@localhost linux-4.14.196]# make modules_install # 安装模块
[root@localhost linux-4.14.196]# make install # 安装核心
[root@localhost linux-4.14.196]# ll /boot/ # 安装完成后,就可以看到4.14的内核文件了
然后就要开始设置
更改内核的启动顺序,生成文件,需要将saved改成0
更改引导文件
[root@localhost linux-4.14.196]# awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg # 查看内核插入顺序,默认新内核是从头插入
0 : CentOS Linux (4.14.196) 7 (Core)
1 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-502ad5c8bfc847fea2cacceff257adae) 7 (Core)
[root@localhost linux-4.14.196]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.14.196
Found initrd image: /boot/initramfs-4.14.196.img
Found linux image: /boot/vmlinuz-3.10.0-957.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-502ad5c8bfc847fea2cacceff257adae
Found initrd image: /boot/initramfs-0-rescue-502ad5c8bfc847fea2cacceff257adae.img
done
更改启动顺序
[root@localhost ~]# grub2-editenv list # 查看默认启动的内核
saved_entry=CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
[root@localhost ~]# awk -F \' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg # 查看内核插入顺序
0 : CentOS Linux (4.14.196) 7 (Core)
1 : CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
2 : CentOS Linux (0-rescue-502ad5c8bfc847fea2cacceff257adae) 7 (Core)
[root@localhost ~]# grub2-set-default 'CentOS Linux (4.14.196) 7 (Core)' # 设置默认启动的内核
[root@localhost ~]# grub2-editenv list # 查看默认启动的内核
saved_entry=CentOS Linux (4.14.196) 7 (Core)
vim /etc/default/grub
把这个改成0以防不能启动
重启机器查看是否升级完成