内核开发基础3——Linux内核配置与编译
Linux内核具有可定制的优点,具体步骤如下:
1. 清除临时文件、中间文件和配置文件.
• make clean
remove most generated files but keep the config
• make mrproper
remove all generated files + config files
• make distclean
mrproper + remove editor backup and patch files
2、确定目标系统的软硬件配置情况,比如CPU的类型、网卡的型号,所需支持的网络协议等,即配置前的规划。
3、使用如下命令之一配置内核:
1)make config:基于文本模式的交互式配置。
2)make menuconfig:基于文本模式的菜单型配置。(推荐使用)
3)make oldconfig:使用已有的配置文件(.config),这个代表默认配置,但是会询问新增的配置选项。
4)make xconfig:图形化的配置(需安装图形化系统)。
make menuconfig 是最为常用的内核配置方式,使用方法如下:
1)使用方向键在各选项间移动;
2)使用“Enter”键进入下一层选单;每个选项上的高亮字母是键盘快捷方式,使用它可以快速地到达想要设置的选单项。
3)在括号中按“y”将这个项目编译进内核中,按“m”编译为模块,按“n”为不选择(按空格键也可在编译进内核、编译为模块和不编译三者间进行切换),按“h”将显示这个选项的帮助信息,按“Esc”键将返回到上层选单。
内核配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件Linux内核提供了一系列可供参考的内核配置文件,位于Arch/$cpu/configs
如:cp xxxconfig .config(将其拷贝到顶层文件夹内,名字为.config即可)
如果在x86的电脑上,当前配置文件在boot目录下,如/boot/config-3.0.0-12-generic就是当前Ubuntu版本的配置文件。
4、编译内核:
1)make zImage
2)make bzImage(big的意思)
区别:在X86平台,zImage只能用于小于512K的内核;在其他平台,2个选项是一样的。
*如需获取详细编译信息,可使用:
v make zImage V=1
v make bzImage V=1
此时将显示完整的编译信息,在出错调试的时候很有用。
** 编译好的内核位于arch/<cpu>/boot/目录下 **
5、编译内核模块:
vmake modules
6、安装内核模块
vmake modules_install
**将编译好的内核模块从内核源代码目录copy至/lib/modules下**
7、制作init ramdisk
mkinitrd initrd-$version $version
例:
mkinitrd initrd-2.6.29 2.6.29
*$version 可以通过查询/lib/modules下的目录得到