重新编译内核
清除临时文件、中间文件和配置文件。
(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 配置时的一些注意事项:
<*>,< >,
<*>: 选项编译和链接,编译进内核
< >: 选项不编译不链接
由于配置内核的选项太多, 一般的配置方法是对模板进行修改, 模板在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