第一次成功编译Linux内核,打算写一篇算是笔记,记录一下,姑且算一个教程.
编译环境
使用的是WSL 的Debian GNU/Linux 13 (trixie) x86_64 , 如果要复现成功, 使用Ubuntu (或 Debian) 的虚拟机和 Docker 容器都可以. 建议使用虚拟机.
安装编译内核过程中必要的工具和库
gcc, make, bc, libssl-dev, libelf-dev, flex, bison, libncurses-dev, zstd.
可以使用如下命令一键安装 : 命令使用时,可以不管 反斜杠(\),或者 \ 之后回车
下载的Linux 源码包为 xz 格式,需要安装一个 xz的解压工具 xz-utils, 和一个下载源码包的工具 wget ,或者通过任意方法,下载源码包,上传到对应机器即可,国内网络不稳定,可以使用迅雷下载
下载Linux源码包, 这里使用的 6.16.4 版本
官网链接 : https://www.kernel.org/
6.16.4 版本下载链接 :
https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.16.4.tar.xz
下方为官网截图
在用户家目录创建 kernel 文件夹,编译过程在该文件夹下完成
下载源码
解压
切换到源码目录 cd linux-6.16.4
生成编译内核的配置文件
使用上面命令,会打开如下界面, 命令行要保证宽度高度足够,建议,命令行工具全屏
在虚拟机情况下,不要管上方配置,使用左右键,将光标移动到Save 然后敲回车, 生成如下界面
光标在Ok 处,敲回车, 显示如下提示, 生成了 .config 内核编译配置文件,在使用回车, 返回第一个配置界面, 按 两下 Esc 退出, 或者将光标切换到 Exit 按回车退出
退出之后会现实如下提示, 可以不用关注
当前目录下 已经多出了一个 .config 文件, 如果使用虚拟机情况下, 可以跳转到修改内核配置文件部分,而使用 WSL 或者 Docker 容器情况, 生成的配置文件不完整,只有5000多行,而一般的配置文件是超过 10000 行的,由于个人使用 WSL 所以需要从其他地方找一个,作者是从一台安装 Debian 的笔记本电脑 复制的 ,使用用虚拟机复制的也可以,该配置文件在/boot 目录下
大概命名方式是红框里面的格式,前面是config-内核版本-系统版本-cpu架构 或者 config-内核版本-generic, 将其复制到 源码目录,将名字修改为 .config , 然后在源码目录,执行如下命令
可能输出 warning ,不需要关注,
修改内核编译配置文件, 避免编译报错
使用下放两条命令
之后建议再使用如下命令
后面将开始编译
编译
使用命令之后,就是漫长的等待和无穷的滚屏日志
可以不加前方的 time , 这只是顺便记录一下用时, 本机24核大概四20多分钟, -j后的参数可以直接使用数字 make -j24 , 命令中 nproc 会输出本机 CPU 核数, $(nproc) 会直接将CPU核数 拼接到 -j 之后 ,等同 make -j24
编译完成
这次18分钟
编译输出结果可能不在最后一行展示, 再次使用编译命令, 就会给出编译成功的内核文件目录
完成
如果不成功,可以删除解压源码目录, 重新解压从头开始
