文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>编译核心

编译核心

时间:2006-12-29  来源:h0000001

为何要编译核心,相信大家都知道,这里就不多说了,下面主要说说要编译内核的时候要注意的及编译的步骤.至于其他更高深的理论我就不清楚了.我也是在学习中,而且编译过好几次内核都没有成功,只有最近编译成功过一次.希望有机会能和你一起交流,学习...   核心的版本 [root@mail root]# uname -r
2.4.20-8
说明(从左至右):
[主版本].[次版本].[修订版本]-[附版本] 如果次版本是奇数,例如:2.3,2.5等,那表示它是一个测试性质功能的核心版本,这种核心通常在推出稳定版本的核心之前,用来给开发人员(核心维护更新测试人员)作测试用的,虽然功能较为强大,但由于是测试目的,所以可能有一些bug. 如果次版本是偶数,例如2.4,2.6等,那表示它是一个经过测试之后发布的稳定核心版本,这种核心较为稳定不容易出错,比较适合一般个人或商业使用. 所以,要升级的时候大多使用偶数的核心版本,但需要注意的是,2.4与2.6是两个具有相当大差异的核心版本,两者之间用到的函数库基本上己经不同了,所以在升级之前,如果你的核心原本是2.2.xx版,那么就升级到2.2.xx版本的最新版,不要由2.2.xx直接升级到2.4.xx版,否则到时可能会使你欲哭无泪. 此外,对比2.2.xx与2.4.xx,并不是2.4.xx就一定比2.2.xx还要新,因为这两个版本同时在进行维护与升级的工作,如果有兴趣,可以在http://www.kernel.org看个究竟,以了解目前的核心变动情况.另外,还有一点,2.2可以升级到2.3版本,因为这两个是相互引用的,所以两者的函数库使用情况大致相同,这个情况也可以用到2.4.xx升级到2.5.xx版本. 在编译核心之前,也来了解关于模块的概念. 核心的更新速度虽然很快,然而有些硬件的推出却是不定的,另外,有些软件的加载程序可能需要核的的支持,因此,如果每次一有新的硬件或软件推出,就需要编译一次核心,这样一来,那是非常麻烦的.为了使这种情况少出现,就有所谓的模块了.由于目前的核心己以具有外挂模块的功能,所以,只要将可能用到的功能选项编译成模块,那么以后需要该功能时,再将它加载到核心就可以了.这么做最大的优点就是,没有用到该功能时,核心并不会主动加载,所以真正在核心内工作的程序就不会消耗太多系统资源,以免除再次编译的繁复手续.所以,如果可以编译成为模块,那么直接编译成模块.但是,肯定不会用到的功能,那么就不需要编译出来了.   编译的过程(这里是以2.4.19版的核心来做升级操作的) 将获得的核心文件(如linux-2.4.19.tar.gz)解压缩在/usr/src/下,再以符号链接成为linux,后续动作在/usr/src/linux中进行. #cd /usr/src #mv linux linux.old #tar -zxvf linux-2.4.19.tar.gz #ln -s linux-2.4.19 linux #cd linux 在Linux中安装软件的铁则是:注意看套件解压缩之后的INSTALL或README文件. 由于担心前现有人己经编译过核心,编译过程中会产生目标文件(文件名为*.o),为避免此问题,请先执行make mrproper指令: #make mrproper 系统会显示很多rm去除文件的信息 注意:如果同一版本的核心被编译两次以上,那么请将/lib/modules中该核心先移走,因为第一次编译完成之后,己以产生了一些模块在/lib/modules/2.4.19中,那么第二次再编译,核心模块还是会放在/lib/modules/2.4.19中,这样模块就重复了.有些模块重复放置后会导致问题重重.这时可以这样做:mv 2.4.19 2.4.19.old,然后再编译. 设定编译模式:(包括以下几种) 1.make config:这种模块需要逐行输入需要设定的项,无法往前修改设定。 2.make xconfig:这种模式使用X-Windows为主要环境的设定模式。 3.make menuconfig:这种模式有点像文字界面的菜单模式,较为简便,而且可以在纯文件界面下执行编辑动作,是目前最常用的模式。 #make menuconfig 设定好后,接下来开始编译 #make dep     <==建立相依属性关系 #make clean   <==去除旧的数据 #make bzImage  <==开始编译核心,这个核心是经过压缩的。此外,这个过程比较长 #make modules   <==开始编译模块 #make modules_install  <==将数据安装在/lib/modules/`uname -r`中 如果担心在编译时会出现一些错误或警告信息,可以使用重定向将数据存在文件中,如 #make dep clean bzImage modules modules_install > compile.kernel.log 再说说上面各个步骤的主要意义: 1.make dep:这个动作用于为你在上一节(make menuconfig)所选项中属于模块的部分建立相依属性,以方便未来执行软件或程序时调用模块. 2.make clean:这个动作会删除你前一次编译的目标文件(*.o文件),所以编译的内核会是新的核心 3.make bzImage:这个步骤主要用于产生可引导的核心文件,也就是vmlinuz文件,但由于目前的核心文件较大,因此需要经过压缩,所以,编译出来的核心文件放置在/usr/src/linux/arch/i386/boot/bzImage.那个未经压缩的放在/usr/src/linux下. 4.make modules:这个步骤用于编译模块 5.make modules_install:这个步骤用于安装模块. 如果在编译过程中发生问题,通常的可以是挑选的项有问题,重新挑选设定内容之后再编译就可以了. 如果在过程中没有出现任何问题,那么很好,这时就可以安装核心了.   安装核心与多重启动设定 上面的步骤并没有将核心安装好,仅是将模块安装到/lib/modules/2.4.19中,核心编译完成并放在/usr/src/linux/arch/i386/boot/bzImage而己,所以这个时候请将核心放置在启动核心的默认目录/boot下. #cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.19 后面文件的名字只是习惯而己,方便确认 核心搬完之后,还需要在Linux的启动管理程序中设定新的启动项,可以参考前面的多重启动文章. 这里以grub为例: 只要在/boot/grub/menu.lst中加入以下两行就可以了. title linux-2.4.19      root (hd0,0)       <==你的根分区      kernel /boot/vmlinuz-2.4.19 root=/dev/hda1 这样,新的核心基本设定完成,重启即可.   最后一点点建议:编译核心最好是在新安装系统后进行,这样就不必在编译好新的核心后再去重新编译你的程序了.
相关阅读 更多 +
排行榜 更多 +
武士刀之战

武士刀之战

休闲益智 下载
闲置肥皂切割

闲置肥皂切割

休闲益智 下载
大航海时代2

大航海时代2

休闲益智 下载