前方的路,充满了艰辛。-
分类: LINUX
2013-03-29 15:15:38
编译之前,一定要查看,内核源码中,Documentation/Changes文件,查看内核编译时,需要的运行环境,如果不适合编译和有可能失败。
由于2.4和2.6内核的编译方法不是完全一样,所以我们分开两种情况讨论
编译2.4内核: 编译2.6内核
第一步:make mrproper -清理内核源代码树(清理垃圾信息) make mrproper
第二步:make menuconfig --配置内核以及内核模块 make menuconfig
(相关的命令还有make config、make oldconfig、make xconfig)
(交互问答式)(通过旧内核生成)(图形界面下编译)
我们在这里推荐使用make menuconfig 这种方法操作最方便最直接。
在进入内核配置菜单之后,原则上,自己有把握的可以更改,没有把握的切记不要乱改,否则会导致编译失败。
更改的时候,*,表示编译进入内核————随系统启动而启动
M,表示编译进入模块————不随系统启动而启动,在需要的时候调用(一些不重要的外部驱动程序就可以作为内核模块编译,这样内核不会过大,也不会影响启动速度)
空,表示不编译进入内核也不编译进入模块————放弃这个功能,如果系统不支持这类功能,可以放弃
最后退出的时候,提示保存,这里会将刚才的配置保存为一个名称为.config的配置文件,不管我们使用make menuconfig还是make oldconfig、make xconfig、make config,最终都为了生成这个.config文件,以后所有的操作,就会根据这个文件中的内容进行,这个文件,存储的就是我们刚才所做的改动,可以less .config查看一下。
第三步:make dep --生成依赖性关系
第四步:make bzImage --生成新内核 make (2.6内核中将左边三个步骤简化为make)
第五步:make modules --编译内核模块
这三个步骤执行的时间比较长,所以,慢慢等吧!刚才这一步是执行时间最长的一步。
第六步:make modules_install --安装内核模块
第七步:make install --安装内核
(所有的编译步骤最好在字符界面下进行,否则在图形界面下速度会比较慢)
另外上面所提到的所有步骤,任何一步完成之后都要检查有没有出错,就是有没有显示error的字样,如果显示任何一步出错都要退回到make mrproper重来。
没有报错,似乎情况还不错。
但是不要高兴太早,还要进行进一步测试:
1. vi /etc/grub.conf -->查看是否有新的内核启动项生成。并修改default指向(0代表第一个,1代表第二个,以此类推)。
2. ls /boot -->查看是否有新的内核文件vmlinuz生成。
现在差不多行了,但是还要重启,看是否可以新的内核启动系统。我现在已经成功进入系统了,那么执行uname -a 检查一下我们现在是否使用新内核:
显示使用的内核是新内核,证明内核编译成功!
大功告成!