发新话题
打印

[分享] 终于成功编译了redhat as4的内核!

本主题由 木木 于 2008-1-3 19:32 解除置顶

终于成功编译了redhat as4的内核!

本文网址:http://bbs.bitscn.com/68287 复制

真是颇费周章,不过经过这次内核升级,我对于linux的认识又深入了一层,高兴。
数次升级失败后(大于5次),本来我都没有勇气再升级了,但是每当看到高手们介绍iptables扩展模块的强大
功能,还是令我怦然心动,而且linux的使用者如果不会内核升级,就无法进入新的阶段,于是决定:屡败屡
战,再来一次!
注:凡是输入命令的地方我前面都会加上##,和脚本注释的#加以区别
首先从http://www.kernel.org/pub/linux/kernel/v2.6/上下载最新的内核,
这次我下载的是linux-2.6.18.tar.gz  
把这个文件放在/root/目录下
##tar zxvf linux-2.6.18.tar.gz  
生成一个目录linux-2.6.18
##cd linux-2.6.18
##make mrproper
这个命令的作用是清理以前编译内核的痕迹,其实如果是新解压的,不用这个命令应该也可以。你可以对比
看一下make menuconfig的前后,编译完成的前后目录中文件的变化。
我当前运行的是redhat as4 update1,内核版本是2.6.9-11.EL,我对自己的硬件配置并不是特别清楚,所以还是
保留原有配置的好,我想要的只是让我的内核能支持新的netfilter模块功能而已。(查看当前内核版本可以用
这个命令uname -a )所以
##ls -al /boot
能够看到下面有个文件,类似config-2.6.9-11.EL,这就是现在的内核对应的.config文件了,把它考到新内核
所在的目录下
##cp /boot/config-2.6.9-11.EL /root/linux-2.6.18/.config
如果这个目录下已经有.config这个文件了……当然覆盖掉了。然后开始编译
##make menuconfig
make menuconfig 需要安装libcurses5-dev支持,如果是redhat比较新的版本比如as4或者fc4,可能是需要ncurses-5.4-13.i386.rpm和ncurses-devel-5.4-13.i386.rpm这两个文件,请先确认你已经装上了这两个软件包……
(本来以为不需要说明的,但是看来问的不少,为什么新手们不选择完全安装呢,起码能省我很多事情)
……
进去以后,选择菜单很靠下的选项"Load an Alternate Configuration File"
然后select,会问你是否要提取.config,当然了。
然后你的基本配置信息就已经被保存了,如果没有什么不满意的地方,不用改动了,除非你很清楚你到底改
了什么(比如我修改了Networking  ---> 的部分,增加了很多模块;改了电源管理中的一部分,因为从前的内
核会导致reboot命令不能重启,所有程序关掉后会卡住;改了文件系统中的对ntfs系统的写支持;processor里
面也改了,把原来的Pentium-III/Celeron(Coppermine)/Pentium-III Xeon改成Pentium-4/Celeron(P4-
based)/Pentium-4 M/Xeon,本来我的celeron就是2.1g的么,为什么要工作在奔三的状态下呢,浪费),配置完
成后,选择exit退出,会问你是否保存,当然保存了。这时候就生成了新的.config文件了,可以开始编译内核
了!!!
##make
这个时候如果没有问题,就会开始进行编译了。我感觉,linux下所有的软件(所谓的源文件啦,那种安装包
的比如rpm等等不算)其实都是需要你自己重新配置一遍(编译,或者叫make)以适应你自己的系统,从某
种程度上来说,是你自己为自己的硬件打造了一套系统(虽然大部分的程序都不是你写的而是linus和其他的
linux软件开发者),是不是很神往啊?说这么多费话,当然,实际上这个编译的过程相当的长,你可以在午
饭前输入make命令,等到吃完午饭回来看他好没好,如果你想要检验自己的水平,也可以通过仔细阅读目录
中的README文件来让自己对linux有个更深刻的认识。
make完成后,就要把模块都安装进系统去了!
##make modules_install
这个时间也挺长,但不如上面那个。新的模块都会放在/lib/modules目录下对应的内核版本目录中,以后如果
你使用这个新编译的内核引导系统,则这个系统所使用的内核模块都在对应这个内核版本的目录中,包括你
的驱动程序啊什么的。
哦?模块安装完了?ok,你想不想开始使用这个内核呢?不想的话,先放这儿好了,以后慢慢来。
如果想要立刻就用,就输入
##make install
这个时候会把你新编译的内核复制到/boot目录下(这个目录可是专门存放内核镜像和相关文件的地方,所以
安装系统的时候最好把这个目录单独划分为一个分区,不要让其他程序占用这个分区的空间……至少redhat
as4是这样的),同时还会修改你的grub.conf文件,使得引导菜单会多出一个选项,grub.conf我就不多讲了。
所有的命令都顺利完成了?
##reboot
重启后你会发现启动菜单中(或者说grub引导界面中)多了一个选项,我的就是linux-2.6.18这个选项了,选
择这个选项,你就开始进入新的内核系统了。
shit,为什么启动信息报告我的网卡没有启动?错误的irq?不同的mac地址?什么嘛?
这时候,你的驱动程序其实都在,但是系统会从/etc/modprob.conf里面读取系统的配置
我发现在里面有这样两行
options via-rhine  irq=5
alias eth1 via-rhine
原来是它们在作怪,注释掉,重新启动,哈哈,一切都好了(在此多谢bbs.chinaunix.net上的高手指导)!
现在看看
##uname -a
Linux linuxtest.xxx.xxx.cn 2.6.18 #1 Thu Nov 23 15:34:29 CST 2006 i686 i686 i386 GNU/Linux
hiahiahiahia,成功了!
祝大家好运!

感觉咱们网盟新手多,这种需求可能也多些,就不发在CU那样的高手论坛上现眼了,还是发在网盟吧,希望大家用得到!
作者iamshiyu(七夕银河)2006-11-28于网盟bbs.bitscn.com

忘了说,以后这个版本的很多东西就都保存在/root/linux-2.6.18里面了,所以不要删除这个目录,除非你确信你要删除掉这个内核……

此处添加于2007-07-24
昨天又升级了一台服务器,中间出了N次错,因为许久没有升过级了,有了几分陌生感。先开始不知所以,为何会停住呢?后来观察了一下报错信息,有一些设备编译不过去,比如ISDN和sound等,后来发现这台服务器没有这些设备,于是在device driver里面去掉了这些选项,但后来因为对升级的过程已经淡忘了,模块加载通过了都没敢继续动作,头疼了两天,发现只要继续编译就是了,呵呵。胆子大一点,心细一点,耐性足一点,编译内核还是挺容易的。

[ 本帖最后由 iamshiyu 于 2007-7-24 09:09 编辑 ]

七夕银河
一个不想当将军的裁缝,绝不是一个好司机!

TOP

不懂!!!!!!!!!!!!!!!

到底是:舉世皆清我獨濁 衆人皆醒我獨醉
還   是:別人笑我太瘋癫 我笑他人看不穿

TOP

回复 #1 iamshiyu 的帖子

我是新手,请问编译新的内核有什麽大的用处阿?听说编译起来很难的是吗?

TOP

回复 #1 iamshiyu 的帖子

看来楼主水平不错!  哪天有空学学! -----------------还望不吝赐教啊

TOP

改天有时间来学习一下:P

TOP

引用:
原帖由 paul840613 于 2006-12-7 19:14 发表
我是新手,请问编译新的内核有什麽大的用处阿?听说编译起来很难的是吗?
目前我的认识看来,编译内核的主要目的有两个。
一个是增加对新硬件的支持、对旧程序的优化、对新功能的支持,比如我的老版本内核(2.6.9按说也不算老,但是比起2.6.18就是老了不少)不支持新开发的iptables模块插件,不升级一下就没办法使用那些新功能(比如内容过滤、时间控制等等),另外2.6.15以前的2.6内核版本,都有一个漏洞,可能被普通用户获取了root权限,新的内核中修改了这个漏洞(当然老内核的patch也能起到这个作用,但是对于新功能的支持就不好说了);另外原先我的内核中可能对电源管理的支持有问题,无法自己重新启动,升级以后这个问题也得到了解决。
另外一个是优化现有的配置组合。比如我这次编译才发现,当初安装的时候为了能够让系统正常的启动,采用了非常保守的配置方案,默认我的机器采用的是奔III级别的配置,而实际上我的机器是赛扬2.1的,显然系统当初为了稳定性牺牲了一些性能,既然我能确认使用的CPU类型,为什么要让它退而求其次而不是选择最好的呢?

七夕银河
一个不想当将军的裁缝,绝不是一个好司机!

TOP

编译需要的是耐心和细心,要说难可能并不难——我这样的菜鸟都能编译成功,应该不算难吧?

七夕银河
一个不想当将军的裁缝,绝不是一个好司机!

TOP

哦,那编译内核就好像是给打补丁咯,楼主谦虚咧,我linux连搭个dns都弄了老半天呢

TOP

我还没搭过dns呢,呵呵……同事自己抢着搭了个win2k3的dns。估计我自己搭linux的也得需要很长时间。
另外升级内核不是打补丁,打补丁有打补丁的方式。打补丁并不能提升系统的性能,而升级则不同,类似于从win NT升级到win2000或者2k3。尤其是很多基本的计算方法得到了优化,使得很多应用降低了系统资源的消耗,提高了工作效率,从而提升了系统性能;增加了对新应用、新硬件的支持,否则一些比较新的东西你就无法使用了。

[ 本帖最后由 iamshiyu 于 2006-12-8 17:51 编辑 ]

七夕银河
一个不想当将军的裁缝,绝不是一个好司机!

TOP

之所以选择重新编译内核,是因为你要让你的操作系统更契合你的硬件系统(当然前提是你对硬件,对自己的硬件系统比较了解),就相当于给自己量身定做了一套系统,使之更合理且更全身,就是这个意思.

我愿做一只快乐的学习之鸟!!

TOP

发新话题
版块跳转 
沪ICP备08026629号 / 管理员木木 / QQ58284700 / MSNjacro|at|bitscn.net / TEL13641763379 /