重新编译内核

2025-11-12 20:43:25   枪械工坊

重新编译内核

清除临时文件、中间文件和配置文件。

(1) make cleanremove most generated files but keep the config

(2) make mrproper remove all generated files + config files

(3) make distclean mrproper + remove editor backup and patch files

确定系统的软硬件配置

CPU的类型

网卡的型号

所需支持的网络协议

...

使用如下命令之一配置内核

make config 基于文本模式的交互式配置, 配置时系统会逐个询问选择`Y or N`直到配置完成

make menuconfig基于文本模式的菜单型配置

make oldconfig使用已有的配置文件(.config), 但是会询问新增的配置选项

make xconfig图形化的配置, 依赖Qt

make gconfig图形化的配置, 依赖GTK

用 make menuconfig 配置时的一些注意事项:

<*>,< >,用空格键切换, 或直接分别对应输入y, n, m

<*>: 选项编译和链接,编译进内核

: 选项编译不链接,编译成模块

< >: 选项不编译不链接

由于配置内核的选项太多, 一般的配置方法是对模板进行修改, 模板在arch目录下, 例如将/usr/src/linux/arch/x86/configs/

中x86_64_defconfig复制到内核根目录下并改名成".config",

然后再用make menuconfig就默认用".config"文件配置, 然后增删配置即可.

linux主机的config文件在/boot下, 如config-4.1.12-1-default

可以将其复制到内核源代码目录下并更名成.config.

编译内核

make

备注

2.6之前的内核需要分别编译内核和模块

make zImage/make bzImage

二者的区别在于: 在X86平台下, zImage只能用于小于512k的内核. 如果大于512k的内核, 用make zImage编译就会报错

如果需要获取详细的编译信息,可以使用

make zImage V=1

make bzImage V=1

make modules

编译内核模块

编译好的内核位于 ${KERNELSRC}/arch/cpu/boot/,

安装内核模块

make modules_install

该命令会将编译好的内核模块从内核源代码根目录复制到/lib/modules/下, 生成一个以版本号命名的目录

安装内核

make install

安装内核主要工作是将编译生成的内核复制到/boot目录中, 生成initramfs并放在/boot目录中修改启动引导器(如GRUB2)配置文件.

参考资料

Linux Kernel Hacks

详细版煎饼果子内附酱跟薄脆独家
痤疮水哪里有卖?全网最全购买攻略+避坑指南