设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> Linux专题 >> 内核研究 >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
Linux如何编译安装源码包…
Gentoo Linux 2006.1(L…
linux网卡驱动程序的编译…
Fedora Core 5.0 安装教…
编译内核操作流程
如何编译安装源码包软件
经典:Linux菜鸟入门级命…
必须掌握的安全技能:编…
netfilter/iptables模块…
Eclipse插件编辑、编译和…
  菜鸟编译内核(kernel2.6.0)         
菜鸟编译内核(kernel2.6.0)
 

本文以RedHat9.0为平台 下载源代码   Linux内核总是不断发展的,最新的内核kernel2.6.0对USB2.0予以正式的支持,以及内核模块文件后缀最显著的一个变化由*.o到*.ko等等,我们可以从www.kernel.org下载到tarball的源代码包。 前期准备   大家都知道的要先升级“module-init-tools“软件包,否则的话,等你安装内核模块文件的时候,系统会提示你:Warning: you may need to install module-init-tools See http://www.codemonkey.org.uk/post-h...4.21-23.src.rpm   进入下载目录下并安装: #rpm -e --nodeps modutils (强行卸载原有的modutilsRPM包) #rpm -ivh modutils-2.4.21-23.src.rpm (把源代码包安装到了/usr/src/redhat目录下) #cd /usr/src/redhat/SPECS (进入规范文件目录下) #rpmbuild --bb modutils.spec (生成二进制的RPM包) #cd ../RPMS/i386 (转入刚生成的二进制的RPM包所在位置) #rpm -ivh modutils*.rpm (刚生成两个[modutils-2.4.21-23.i386.rpm与modutils-debuginfo-2.4.21.23.i386.rpm]二进制的RPM包,一起安装吧!)   因为是在RedHat9.0的平台,RedHat的用户可能还会遇到一些麻烦,我会慢慢说的,除了要以上的升级之外,还有个文件(/etc/rc.d/rc.sysinit)可能有缺陷,因为/proc/ksyms文件在新内核(kernel2.6.0)中已经没有了,打开文件命令如下: #vi /etc/rc.d/rc.sysinit   找到: if ! LC_ALL=C grep -iq nomodules /proc/cmdline 2>/dev/null && [ -f /proc/ksyms ]; then USEMODULES=y fi   替换成: if ! LC_ALL=C grep -iq nomodules /proc/cmdline 2>/dev/null; then USEMODULES=y fi   也就是把“&& [ -f /proc/ksyms ]”去掉,保存文件(操作之前最好做备份以免删错,这个文件是系统初始脚本,重要的很),这样子内核才能加载模块,当然能启动iptable防火墙了,否则防火墙在新内核中启动时红色的“failed“非常醒目。(请在新内核中核查/proc/sys/kernel/modprobe中的内容是不是:/sbin/modprobe,也可手工注入指令:#echo "/sbin/modprobe" > /proc/sys/kernel/modprobe)。下面开始构造新内核。 一、准备源代码   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,128M的机器上跑了足足27分钟。 四、安装模块及内核文件 #make modules_install install   以上这个命令可以分解成make modules_install与make install,make modules_install安装内核模块到/lib/modules/2.6.0下。make install完成mkinitrd命令及内核(bzImage)和System.map的拷贝,请查看/boot目录,文件名是有区别的,如是GRUB引导器,make install命令已帮你自动修改了引导选项,对于LILO则要手工修改,重写引导记录。   说明:make modules_install install这个命令在我的1.6GHz,128M的机器上只跑了三十几秒,很快的哦。 五、后记   最后的工作就是重启系统(#shutdown -r now),检验一下你的劳动成果吧。差点忘了还有一点,可能对你很重要,进入新内核之后我发现rpm命令不能用了,原来这是RPM的一个Bug,特别是对于RH9的用户,请打开/etc/profile文件,命令如下: #vi /etc/profile (在文件的末尾加上几句如下) if [`uname -r`="2.6.0" ];then export LD_ASSUME_KERNEL=2.2.5 fi 也就是给系统加上一个全局的环境变量,也可直接键入#export LD_ASSUME_KERNEL=2.2.5。 使用新内核可能出现的问题及对策:   1、新内核根本起不来,解决方法:重新配置内核(学问挺大),也许还根引导记录有关(很少了);   2、新内核模块无法加载,会导致很多问题,比如了防火墙没法工作了,mount不上光盘和vfat及ntfs文件系统,其解决方法:升级module-init-tools软件包(我是modutils-2.4.21-23.src.rpm包),RedHat的用户可能还要修改/etc/rc.d/rc.sysinit文件;   3、RedHat用户rpm命令不能使用,解决办法:请把变量在全局配置文件中声明。   好了,伟大的工程终于完工了。如果那位仁兄对我以上的步骤还有疑义或者更好的建议的话,请发E-mail:qzhou9887@hotmail.com。 Linux联盟收集整理

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-1-2 3:40:09
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持