LINUX学习笔记20—内核配置与编译

来源:岁月联盟 编辑:exp 时间:2012-02-29
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