终于成功编译了redhat as4的内核!
|
真是颇费周章,不过经过这次内核升级,我对于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 编辑 ]七夕银河 一个不想当将军的裁缝,绝不是一个好司机! 郁闷,网警兄弟是不是活在80年代的啊?开个玩笑都会被盯上!---- 不懂!!到底是:舉世皆清我獨濁 衆人皆醒我獨醉 還 是:別人笑我太瘋癫 我笑他人看不穿---- 回复 #1 iamshiyu 的帖子我是新手,请问编译新的内核有什麽大的用处阿?听说编译起来很难的是吗?---- 回复 #1 iamshiyu 的帖子看来楼主水平不错! 哪天有空学学! -----------------还望不吝赐教啊---- 改天有时间来学习一下:P天下风云出我辈﹐一入江湖岁月摧。 皇图霸业谈笑中﹐不胜人生一场醉。 ---- 引用:原帖由 paul840613 于 2006-12-7 19:14 发表 我是新手,请问编译新的内核有什麽大的用处阿?听说编译起来很难的是吗? 目前我的认识看来,编译内核的主要目的有两个。 一个是增加对新硬件的支持、对旧程序的优化、对新功能的支持,比如我的老版本内核(2.6.9按说也不算老,但是比起2.6.18就是老了不少)不支持新开发的iptables模块插件,不升级一下就没办法使用那些新功能(比如内容过滤、时间控制等等),另外2.6.15以前的2.6内核版本,都有一个漏洞,可能被普通用户获取了root权限,新的内核中修改了这个漏洞(当然老内核的patch也能起到这个作用,但是对于新功能的支持就不好说了);另外原先我的内核中可能对电源管理的支持有问题,无法自己重新启动,升级以后这个问题也得到了解决。 另外一个是优化现有的配置组合。比如我这次编译才发现,当初安装的时候为了能够让系统正常的启动,采用了非常保守的配置方案,默认我的机器采用的是奔III级别的配置,而实际上我的机器是赛扬2.1的,显然系统当初为了稳定性牺牲了一些性能,既然我能确认使用的CPU类型,为什么要让它退而求其次而不是选择最好的呢?七夕银河 一个不想当将军的裁缝,绝不是一个好司机! 郁闷,网警兄弟是不是活在80年代的啊?开个玩笑都会被盯上!---- 编译需要的是耐心和细心,要说难可能并不难——我这样的菜鸟都能编译成功,应该不算难吧?七夕银河 一个不想当将军的裁缝,绝不是一个好司机! 郁闷,网警兄弟是不是活在80年代的啊?开个玩笑都会被盯上!---- 哦,那编译内核就好像是给打补丁咯,楼主谦虚咧,我linux连搭个dns都弄了老半天呢---- 我还没搭过dns呢,呵呵……同事自己抢着搭了个win2k3的dns。估计我自己搭linux的也得需要很长时间。 另外升级内核不是打补丁,打补丁有打补丁的方式。打补丁并不能提升系统的性能,而升级则不同,类似于从win NT升级到win2000或者2k3。尤其是很多基本的计算方法得到了优化,使得很多应用降低了系统资源的消耗,提高了工作效率,从而提升了系统性能;增加了对新应用、新硬件的支持,否则一些比较新的东西你就无法使用了。[ 本帖最后由 iamshiyu 于 2006-12-8 17:51 编辑 ]七夕银河 一个不想当将军的裁缝,绝不是一个好司机! 郁闷,网警兄弟是不是活在80年代的啊?开个玩笑都会被盯上!---- 之所以选择重新编译内核,是因为你要让你的操作系统更契合你的硬件系统(当然前提是你对硬件,对自己的硬件系统比较了解),就相当于给自己量身定做了一套系统,使之更合理且更全身,就是这个意思.我愿做一只快乐的学习之鸟 |
》热 点 关 注
》编 辑 推 荐
》相 关 图 文
