前期准备
准备文件
debian系列(省略自定义配置)
下载源码:Kernel内核,建议下载stable,并解压到本地(命令省略),下面路径均以内核源码文件夹为根目录
安装需要的依赖:
apt install bc binutils bison dwarves flex gcc git gnupg2 gzip libelf-dev libncurses5-dev libssl-dev make openssl pahole perl-base rsync tar xz-utils
配置文件准备
提取原系统官方内核的配置文件、用别人现成的,或者自己配置(建议前两者),在/boot/config-xxxxxxxx,改名成.config。
合并配置文件
解压内核文件夹,然后进入文件夹下,把刚刚.config文件复制进内核源码文件夹根目录
使用命令:
make olddefconfig(用途:更新处理“.config”文件,因为新内核的配置可能有更新,使用这个命令会把新内核的配置文件和提取的".config"文件做整合,整合成新的文件)。
教程说法:要更新一个已有的 .config 文件,我们使用 make 命令搭配 olddefconfig 参数。
简单解释一下,这个命令的意思是使用 旧的、默认的配置。这将使用“旧的配置文件”(当前保存为 .config,这是你发行版配置的一份直接副本),并检查从上一版本以来 Linux 代码库中新加的任何配置选项。如果找到任何新的、未配置的选项,该选项的默认配置值会被使用,并会对 .config 文件进行更新。原来的 .config 文件将被重命名为 .config.old 进行备份,并将新的更改写入至 .config 文件。
关闭启用模块签名的选项
(默认情况下,计算机不包含这个证书,否则在之后进行构建时,可能导致构建失败。):
./scripts/config --file .config --set-str SYSTEM_TRUSTED_KEYS ''
./scripts/config --file .config --set-str SYSTEM_REVOCATION_KEYS ''
构建开始:
配置内核的版本标签:
./scripts/config --file .config --set-str LOCALVERSION "-版本标签"
构建命令
make -j8数字是线程数
编译模块(可选)
make modules会根据Makefile文件中的指令来编译源代码
安装开始:
编译安装模块
make modules_install -j8可以通过在命令末尾添加 INSTALL_MOD_PATH=/to/path
指定输出文件夹默认是:/lib/modules/<kernel_release>-<localversion>
编译安装头文件(可选)
make headers_install可以通过在命令末尾添加 INSTALL_HDR_PATH=/to/path
指定输出文件夹,默认是:/usr/include/linux
编译安装内核:
make install安装到/boot目录
收尾:
刷新grub引导内核列表:
grub-mkconfig -o /boot/grub/grub.cfg
卸载内核:
删除内核模块
rm -rf /lib/modules/<kernel_release>-<localversion>删除 Linux 内核本身
rm -vf /boot/{config, System.map, vmlinuz, initrd.img}-<kernel_release>-<localversion>
参考文献:
Linux内核5.x版本编译



0 条评论