1. 清除临时文件,中间文件和配置文件:在顶层目录下执行
a) Make clean:删除产生文件,保存配置文件
b) Make mrproper:删除产生文件和配置文件
c) Make distclean:删除mrproper+编辑文件和补丁文件
2. 确定目标系统的软硬件配置情况:比如CPU的类型、网卡的型号,所需支持的网络协议等
3. 配置内核方式:会生成.config文件,保存配置文件
a) Make config:基于文本模式的交互式配置,问答形式
b) Make menuconfig:基于文本模式的菜单型配置(推荐)
i. *:对应Y:在编译的基础上,进行连接
ii. m:对应m:进行编译不连接,将该功能编译成可以在需要时动态插入到内核中的模块。
iii. 空:对应N:不进行编译
c) Make oldconfig:要求回答的配置项比较少,大部分默认
d) Make xconfig:图形化的配置
4. 内核配置项选择方法:参考内核配置文档
a) 方法:利用已有的内核配置参考文件,在这基础上进行配置
b) 找到配置文件:
i. 如arm开发板的:进入arch—arm—config目录中有很多
ii. 如红帽企业版5的内核:/boot/
c) 拷贝文件到.CONFIG所在的目录层次
d) 再进行上一步的配置内核,修改自己需要的内容,
5. 编译内核:这步编译的是内核核心文件
a) Make zImage(大写i):在X86平台,只能用于小于512K的内核
b) Make bzlmage:
c) Make zlmage V=1:能获取详细的编译信息,便于查错
d) 编译好的内核位于:arch/<cpu>/boot/目录下
e) 需要的时间挺久的
6. 编译内核模块:make modules :这步编译的是刚才配置的内核模块
7. 安装内核模块:make modules_install
a) 作用:将编译好的内核模块从内核源代码目录copy至/lib/modules下
8. 制作Init ramdisk 内存盘
a) Mkinitrd initrd-$version $version 前一个变量可自己取,后一个变量是/lib/modules下的目录名,这个目录是安装内核时产生的
b) 例:Mkinitrd initrd-2.6.29 2.6.29 当前使用的内核版本号
9. 虚拟机中安装内核
a) Cp arch/x86/boot/bzlmage /boot/vmlinuz-$version版本号
b) Cp $initrd /boot/
c) 修改/etc/grub.conf或者/etc/lilo.conf
i. 注意是否多系统启动:
ii. 注意拷贝后修改TITLE后面的内容,一个TITLE代表一个启动项
iii. TITLE后面的是名字,可以改
iv. 修改/vmlinuz-2.6.29
修改/initrd-2.6.29