编译内核这件事可能让没接触过的人听起来很复杂,但实际上非常简单。首先前往 https://www.kernel.org/ 网站获取 Linux 内核源码,直接下载解压。
拿到源码后,先 cd 进源码目录,第一步是内核编译配置,一般可以使用 make defconfig 来生成当前架构的默认内核配置,再接着编辑源码目录下的 .config 文件(具体条目可查资料了解)
也可以使用 make menuconfig 基于现有内核配置使用 TUI 来选择需要的模块,如果不存在则会类似 make defconfig 一样生成默认配置。
不过在做操作前我们最好装一些重要的依赖包和基础工具及头文件,如:
sudo apt install git make build-essential bison flex libncurses5-dev ncurses-dev libelf-dev libssl-dev bc zstd linux-headers-$(uname -r)
PS: (如果遇到仍缺少依赖的报错,可自行斟酌安装相关包并继续操作)
在完成配置后,在源码目录下执行以下命令即开始编译。
make -j cpu线程数
等待编译完成后,安装内核也很简单,只需要两行,如果需要加快速度也可以加入 -j 参数
sudo make install
sudo make modules_install
其中,modules_install 是安装内核模块,这是必须的,固件和驱动都在里面,缺少将无法正常工作。它们一般会装在 /lib/modules/ 下,而内核 (initrd,vmlinuz) 则一般安装在 /boot 下。
如果你想通过包管理去安装和管理内核,也可以无视以上三步,直接使用以下命令来编译并构建出 .deb 包出来, 它们会默认放在当前路径的上一层目录。
make bindeb-pkg