Linux教程Linux
首页
基础知识
Linux业界
Linux系统
Linux人物
Linux文化
Linux资讯
Linux综合
当前位置:
Linux教程
-
Linux
- [ZT]菜鸟编译内核(kernel2.6.0)
[ZT]菜鸟编译内核(kernel2.6.0)
转贴自:linux技术中坚站(
http://www.chinalinuxpub.com/
)
http://www.chinalinuxpub.com/read.htm?id=1377
本文以RedHat9.0为平台 作者:飘雪心辰 2004年1月15日深夜
下载源代码
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:
[email protected]
也可QQ:44773295。
发布人:会游泳的鱼 来自:http://www.chinalinuxpub.com/
Xntpd网络时间服务器安装设定文档 (for linux 完全版)
X-windows 系统使用指南(10)
中小企业服务器配置方案(文件服务器之FTP篇)
Linux下的远程通讯
perl常问问题集--第九篇
Linux 安全指南
动手制做自己的一张软盘大小的Linux
Internet中各种攻击的形式化描述(四)
在局域网中设置Linux时间服务器
Linux:前途与钱途
揭开Linux的Swap之谜
UNIX操作系统打印故障的排除
关于D-LINK530B的安装的几点看法
IBM三分Linux
linux文件系统基础
站点导航
Linux教程
Php
Linux
非技术类
指令大全
Shell
安装启动
Xwindow
Kde
Gnome
输入法类
美化汉化
网络配置
存储备份
杂项工具
编程技术
网络安全
内核技术
速度优化
Apache
Email
Ftp服务
Cvs服务
代理服务
Samba
域名服务
网络过滤
其他服务
Nfs
Oracle
Dhcp
Mysql
Ldap
RedHat
赞助商链接