Centos 升级内核
升级Centos内核版本,同时添加fake numa node 配置
1. 下载内核源码
由于,光从官网上上找不到对应的历史版本,可以参考博客 https://blog.csdn.net/a20132848/article/details/90754387 进行下载。
如下载5.4
wget http://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.xz
2. build内核
参考博客 https://blog.51cto.com/191226139/2059117
https://www.linuxidc.com/Linux/2017-11/148276.htm
2.1. 解压并清理
官网要求将源码放到 /usr/src
下面,其实放到哪里都可以。
# 解压内核
tar -Jxvf linux-5.4.tar.xz
mv linux-5.4 /usr/src/kernels
# 清理内核
cd /usr/srckernels/linux-5.4
make mrproper && make clean
2.2. 生成编译配置表
kernel在编译时需要一个配置文件(.config
),用于描述开启哪些特性等,
我们采用 make menuconfig
方式来获取配置文件。运行命令时,会看到报缺少对应库的错误,直接安装重新运行就行。
# 安装缺少的库
yum install -y ncurses-devel flex bison
# 运行配置,默认就可以
make menuconfig
然后,根据需要修改配置文件(.config
)
如,我们的目标一,开启虚拟numa支持,
numa配置如下:参考 http://linux-hacks.blogspot.com/2009/07/fake-numa-nodes-in-linux.html
# 打开配置选项
CONFIG_NUMA = y,CONFIG_NUMA_EMULATION = y
numa=fake=2
2.3. 编译安装内核
yum install -y openssl-devel elfutils-libelf-devel
make -j6 all
make modules_install
make install
2.4 验证安装和修改默认启动版本
查询grub的配置文件,看有没有多新的菜单
cat /boot/grub2/grub.cfg
可以看到
menuentry 'CentOS Linux (0-rescue-7790c96f7dd64bb59b2c386aebf99316) 7 (Core)'
修改默认启动项
参考 https://juejin.im/post/5e70de7b6fb9a07cb74bf1cd
vim /etc/default/grub
# 文件内容如下,修改GRUB_DEFAULT的值,因为新编译的内核版本位于最前面,只需要将其值改为0就可以了
#GRUB_DEFAULT=SAVED
GRUB_DEFAULT=0
上面不管用
sudo grub2-set-default 0
2.5 添加kernel命令行参数
处于目的,需要添加numa=fake=2的命令行参数
找到下面处添加
linux16 /vmlinuz-0-rescue-7790c96f7dd64bb59b2c386aebf99316 root=/dev/mapper/centos-root ro crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8 numa=fake=2
2.6 卸载内核
如果发现自己编译安装的内核版本不适合自己的系统,可以卸载,不能只会安装
cd /boot
删除(自己安装的版本)启动的内核和内核映像文件cd /lib/modules
删除不需要的内核库文件cd /app
(自己安装源码的目录)删除不要的内核源码vim /boot/grub2/grub.cfg
更改grub的配置文件,删除不需要的内核启动列表菜单
这样自己编译安装的内核就清干净了。