走向Linux系统高手之路内核编译过程解析

来源:Linux认证    发布时间:2012-11-10    Linux认证视频    评论


一、准备源代码

1、下载到tarball包之后,将内核tarball包复制到/usr/src目录下,假定包在当前目录中,运行以下命令:

#cp linux-2.6.0.tar.gz /usr/src

2、转到/usr/src目录并解开tarball包。

  #cd /usr/src  #tar xvzf linux-2.6.0.tar.gz

3、如果你还下载了补丁包,则打上补丁,你也可以运行scripts/patch-kernel脚本文件自动打上补丁(准备好补丁包)或 #zcat patch-2.6.0.gz|patch -p1。

二、定制内核

定制内核是门很大的学问,需要大量的硬件知识,特别是2.6.0的内核,如果你从 2.4.N配置文件装载进去的,的确,很多人遇到过麻烦。我是重新配置文件(X窗口服务器进行),配制内核之前请清理源代码树,如果还没有进入 /usr/src/linux-2.6.0目录,请进入此目录,命令如下:

  #make mrproper (刚解开的tarball包不需此步骤) 

 #make gconfig (需要Gtk开发库的支持)  

或make config  或make xconfig(需要Qt开发库的支持)

注意:如果你是ext3文件系统,则在定制内核配置文件时把对Ext3、Ext2文件的支持直接编译进内核,否则,等你启用新内核时机器就会当掉,出错信息如下:kernel panic : no init found ,try passing init = option to kernel......或者是:kernel panic:VFS:Unable to mount root fs on unknown-block(0,0),我一开始不知道,编译了好几次,系统总给我冷板凳坐,最后把对Ext3、Ext2文件系统的支持直接编译进内核,才解决此问题,还有把对“Module unloading“选项也选上,否则的话,你在新内核环境下无法卸载内核模块(rmmod命令不能用)。

三、编译内核及模块

定制好的内核配置文件(/usr/src/linux- 2.6.0/.config)之后,激动的时刻到来了,编译内核及模块,#make (此命令已完成make bzImage及make modules的工作),bzImage内核文件在arch/i386/boot目录中,你的CPU不同内核文件存放位置也不同,我是Intel的 CPU。

注意:我在RedHat7.2平台时曾出现无法编译的出错信息,出错信息如下:

  /tmp/cc2Hu7sH.s:3: Error: Unknown pseudo-op: 

`.incbin'  make[1]:

*** [usr/initramfs_data.o] Error 1  make:

*** [usr] Error 2,

重新装了个9.0的才解决此问题。说明:make命令在我的1.6GHz,128MB的机器上跑了足足27分钟。

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答