QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1011|回复: 10

升级内核前的准备问题

[复制链接]
发表于 2004-3-14 11:01:10 | 显示全部楼层 |阅读模式
我想升级内核,不过由于水平有限,不敢贸然动手,
在网上看了好多文章,迷迷糊糊地了解了一些,不过发现
很多相关文章都没有很清楚地讲升级内核前地相关工具
(比如Module-Init-Tools,还有人说mkinitrd这个也需要),
如何升级,虽然在“按步就班编译2.6内核”一文也提到了下,
不过似乎没有很
具体的步骤,对我等菜鸟来说还是一团迷糊?
为了升级内核,我已经做了不少准备了,但工具升级还是迷团!
这里希望谁能把升级内核所必须的工具等如何升级也能明明
白白地给我们来一堂课,好让我等也能跟上时代的步伐,
我憧憬着Linux的小康!……顺便说下,我是RedHat9.01版)
谢谢各位了!
发表于 2004-3-14 11:28:27 | 显示全部楼层
我编译内核的时候只安装了那个modules的工具包,然后就是自己手工编译了.
2.6.4内核编译不用太过担心会出问题.
大不了还可以选择老内核来恢复.如果是grub的话,你只要在启动的时候进行选择就可以.
2.6.4会自动在grub.conf中添加关于2.6.4启动的项目,而你原来的启动选项不会改动的.
自己的胆子也要大一些,就好了.
我也是才开始编译内核的,只有出了问题,知识也会增长.
呵呵
回复

使用道具 举报

 楼主| 发表于 2004-3-14 12:21:02 | 显示全部楼层
谢谢楼上的,可以告诉我你是怎么安装modules的工具包的吗?
里面有好多文件,其中有个install的,直接点击就可以了吗?
还是要到shell提示下?请说详细点可以吗?
回复

使用道具 举报

发表于 2004-3-14 13:11:28 | 显示全部楼层
你究竟看没看《按步就班编译2.6内核》啊
回复

使用道具 举报

发表于 2004-3-14 14:26:24 | 显示全部楼层
主要就是安装那个modutils-2.4.21-23.src.rpm包
#rpm -ivh modu*.rpm
#cd /usr/src/redhat/SPECS
#rpmbuild --bb modules*.spec
#cd ../RPMS/i386
#rpm -ich modu*.rpm
然后就OK了,可以去编译内核了.
回复

使用道具 举报

 楼主| 发表于 2004-3-14 17:21:43 | 显示全部楼层
modutils-2.4.21-23.src.rpm包,没有这个东东啊!
是在Shell提示下安装?还是直接点击install就可以安装?
回复

使用道具 举报

 楼主| 发表于 2004-3-14 17:25:52 | 显示全部楼层
大哥啊,真的没有经验啊?不要太看得起我,我很白痴的!
能说确切点吗?比如对modutils的解压目录有什么要求等之类的!
能不能从下载后开始,所有的步骤都讲一下,我真的一点概念都没有的!
呵呵,因为俺实在太白了,所以大家尽量讲解的傻瓜式些啊!
回复

使用道具 举报

 楼主| 发表于 2004-3-14 17:41:37 | 显示全部楼层
什么modules,什么module-init-tools的,
请问这两个东东是否就是同一个东西啊?
还有安装module-init-tools ,是否要进解压后的目录后,
直接输入那些安装命令?如:
……
安装 module-init-tools :
./comfigure
make
make install
……

还是别的方式?
————————
————————
呵呵,生来驽钝,不懂当然只有问喽!
回复

使用道具 举报

 楼主| 发表于 2004-3-14 17:48:23 | 显示全部楼层
[quote:6c75a0d5ec="雨燕仙姿"]你究竟看没看《按步就班编译2.6内核》啊 [/quote]

不怕你笑话,我看了,不过由于是第一次接触和使用Linux(才一个多礼拜),
很多看得稀里糊涂的,而且中间如果省略了些步骤,我就得傻眼了!
所以只有麻烦各位不吝惜笔墨地指点,越繁越罗嗦,对我来说就越有帮助!
可能的话,不要省略每一步!——

——————
——————
为了学这个,我可不管脸红不脸红的!
回复

使用道具 举报

发表于 2004-3-15 07:46:15 | 显示全部楼层
编译内核(kernel2.6.0)
本文以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-halloween-2.5.txt,我是下载了“modutils-2.4.21-23.src.rpm“,module-init-tools-X.Y.Z.tar.gz的安装就不讲解了,我下面要讲述RPM源代码包的安装,赶块到下面网址去下载:http://www.kernel.org/pub/linux/kernel/people/rusty/modules/modutils-2.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。
回复

使用道具 举报

 楼主| 发表于 2004-3-15 18:10:33 | 显示全部楼层
好样的,让我研究一下!
不懂的我还要来问的啊!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-10-4 18:27 , Processed in 0.046866 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表