记录一次 Fedora 40 编译内核(6.9.10)
1. 前置条件
首先安装依赖:
sudo dnf install gcc gpg2 git gzip make openssl perl rsync binutils ncurses-devel flex make bison openssl-devel elfutils-libelf-devel rpm-build
查看本机内核版本和平台:
uname -rm
笔者的输出为:6.9.10-200.fc40.x86_64 x86_64
接下来就要去下载源码了
在这里可以选择 Latest Release
,也可以选择和本机相同的版本。笔者这里选择 6.9.10
。
下载并解压源码:
mkdir linux-kernel
cd linux-kernel
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.9.10.tar.gz
tar xvf linux-6.9.10.tar.gz
2. 配置
Linux 内核的构建过程会查找
.config
文件。顾名思义,这是一个配置文件,用于指定 Linux 内核的所有可能的配置选项。这是必需的文件。获取 Linux 内核的
.config
文件有两种方式:
- 使用你的 Linux 发行版的配置作为基础(推荐做法)
- 使用默认的,通用的配置
由此,我们选择第一种方式:
ls /boot
列出 /boot
目录后可以发现,有一个叫 config-6.9.10-200.fc40.x86_64
的文件,这个就是我们需要用到的内核配置文件。
cd linux-6.9.10
cp /boot/config-6.9.10-200.fc40.x86_64 .
mv config-6.9.10-200.fc40.x86_64 .config
这样,我们就完成了内核配置。当然,我们编译内核是为了添加或者删去某些模块,因此在此步骤,还可以修改 .config
文件来修改内核配置,具体需要修改哪些请读者自行选择,在此不做赘述。
3. 编译
make -j8
由此开始编译,-j8
是用来指定编译线程,可以根据电脑CPU来选择。8核CPU建议选择8 -j8
,12核 -j12
。
编译过程根据不同性能的CPU长短不同,大致在半个小时到一个小时之间,期间可以做些其他事情。
sudo make install # 安装内核
sudo make modules_install # 安装模块
sudo grub2-mkconfig -o /boot/grub2/grub.cfg # 重新生成 grub 配置
4. 打包内核
为了能够通过系统包管理器管理其安装和删除,我们可以创建一个rpm包
,而不是像上面那样直接安装编译后的内核。
make binrpm-pkg
打包过程大致需要半个小时,打包好的文件位于 rpmbuild/RPMS/x86_64
。该文件夹中有三个包:
kernel-6.9.10-3.x86_64.rpm
kernel-devel-6.9.10-3.x86_64.rpm
kernel-headers-6.9.10-3.x86_64.rpm
5. 清理
最后,清理不必要的文件:
make clean
参考
https://linux.cn/article-16252-1.html
https://cn.linux-console.net/?p=11483