Photo by Andre Mouton: https://www.pexels.com/photo/closeup-photo-of-primate-1207875/

1目的

2下载源码

https://www.kernel.org/

这里我下载了5.19.11的源码

3编译

解压源码

1
2
3
[liode@liodePC:50:kernel_src]$ tar -xf linux-5.19.11.tar.xz 
[liode@liodePC:51:kernel_src]$ ls
linux-5.19.11 linux-5.19.11.tar.xz

生成配置文件

生成配置文件方式

make menuconfig 非图形界面(一般使用这种)

make xconfig 图形界面

make gconfig 需要GTK的图形界面

生成配置文件

使用make menuconfig 命令之前的配置文件有两个

1
2
3
[liode@liodePC:59:linux-5.19.11]$ ls -al | grep config
-rw-r--r--. 1 liode liode 59 Sep 23 20:14 .cocciconfig
-rw-r--r--. 1 liode liode 555 Sep 23 20:14 Kconfig

执行 make menuconfig 命令,终端中会显示如下的菜单

image-20220930003523957

对内核进行裁剪,生成配置文件保存起来

1
2
3
4
[liode@liodePC:7:linux-5.19.11]$ ls -al | grep config
-rw-r--r--. 1 liode liode 59 Sep 23 20:14 .cocciconfig
-rw-r--r--. 1 liode liode 249175 Sep 24 20:20 .config
-rw-r--r--. 1 liode liode 555 Sep 23 20:14 Kconfig

生成了.config文件

编译

make命令编译

[liode@liodePC:14:linux-5.19.11]$ make -j12

我编译了20分钟差不多,没有修改配置文件,默认的,机器是10750,

编译的产物

在arch/x86/boot/下,生成了bzImage文件

1
2
3
4
5
[liode@liodePC:21:boot]$ ls -alh | grep bzImage
-rw-r--r--. 1 liode liode 12M Sep 24 20:43 bzImage
-rw-r--r--. 1 liode liode 152 Sep 24 20:43 .bzImage.cmd
[liode@liodePC:22:boot]$ file bzImage
bzImage: Linux kernel x86 boot executable bzImage, version 5.19.11 (liode@liodePC) #1 SMP PREEMPT_DYNAMIC Sat Sep 24 20:22:20 CST 2022, RO-rootFS, swap_dev 0XB, Normal VGA

总结

编译内核很简单,只需要下载源码,然后配置,最后执行make命令,就能生成bzImage文件,不过难点在于配置,需要根据需求的情况进行详细的设定