在CentOS上编译最新版linux内核(linux-5.19.9)
从官网下载最新版的Linux内核源码,本教程使用linux-5.19.9进行编译。
实验环境(CentOS-Stream-8)
$ uname -a
Linux localhost.localdomain 4.18.0-338.el8.x86_64 #1 SMP Fri Aug 27 17:32:14 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
下载并解压缩linux内核源码
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.19.9.tar.xz
tar -xvf linux-5.19.9.tar.xz
cd linux-5.19.9
安装相关依赖包
yum install -y gcc make ncurses-devel flex bison openssl openssl-devel elfutils-libelf-devel binutils binutils-devel
配置需要编译的模块,生成相应的配置文件.config
make menuconfig
根据各自的需求,可以选择需要的模块编译进内核中,这里我们保持默认即可,直接选择Save
无需修改名称,直接点击OK
选择Exit
进行退出
选择Exit
退出引导界面
检查目录下是否成功生成配置文件.config
ls -a
开始编译内核,-j
之后的数字是指定一次可以同时执行多少个任务,根据各自编译机的CPU性能自行指定
make -j4
make modules_install
如果执行make modules_install
发生如下错误
sed: can't read modules.order: No such file or directory
make: *** [Makefile:1477: __modinst_pre] Error 2
则我们手动执行make -j4 modules
命令来排查问题
如果报certs/rhel.pem相关错误,如下所示
make[1]: *** No rule to make target 'certs/rhel.pem', needed by 'certs/x509_certificate_list'. Stop.
make: *** [Makefile:1846: certs] Error 2
则编辑.config
文件,将CONFIG_SYSTEM_TRUSTED_KEYS
的值修改为空后保存
CONFIG_SYSTEM_TRUSTED_KEYS=""
再次重新执行make -j4 modules
命令,如果遇到如下错误
BTF: .tmp_vmlinux.btf: pahole (pahole) is not available
Failed to generate BTF for vmlinux
Try to disable CONFIG_DEBUG_INFO_BTF
make: *** [Makefile:1168: vmlinux] Error 1
需要再次编辑.config
文件,按照提示将CONFIG_DEBUG_INFO_BTF
的值修改为n
,然后保存
CONFIG_DEBUG_INFO_BTF=n
修改完毕后,再一次重新执行make -j4 modules
命令,如果执行成功,为了确保无误,我们再重新编译下内核,然后继续后续步骤
# 执行该命令,排查是否还存在模块相关错误
make -j4 modules
# 上述问题排查完毕,再重新编译一次,确保无误
make -j4
# 安装相关模块
make modules_install
# 安装内核
make install
安装完毕之后我们直接重启系统,使其加载新的内核
reboot
重启完成后,查看我们的系统信息
$ uname -a
Linux localhost.localdomain 5.19.9 #2 SMP PREEMPT_DYNAMIC Mon Sep 19 13:20:30 CST 2022 x86_64 x86_64 x86_64 GNU/Linux
作者: 陌上荼靡