idler1984 发表于 2004-2-6 22:38:19

RH9升级2.6.2内核的一点经验

root在SCSI上时装个2.6.2还真...麻烦…… :evil:

首先,除了地球银都知道的module-init-tool,还有一个mkinitrd也是比较重要的需要upgrade得东东。它的SRPM可以在这里找到:
http://at.rpmfind.net/opsys/linux/RPM/fedora/1/i386/mkinitrd-3.5.14-1.i386.html

下完后用下面的命令编译:
rpmbuild --rebuild mkinitrd-3.5.14-1.src.rpm
编译完后会生成一个二进制rpm包,一般在/usr/src/redhat/RPMS/i386下,用rpm -Uhv mkinitrd-3.5.14-1.rpm升级就可以了。
如果rebuild的时候提示少一个包,那就是dietlibc,可以在RHN找到的。

其次,如果root在SCSI上面,那最好把SCSI disk support和SCSI adapter drivers都编译到kernel里面,避免麻烦。后者很容易被漏掉。

注:上面这个连接好像break了,这里有编译好的rpm

idler1984 发表于 2004-2-6 23:45:06

顺大便问一句,哪位大大知道VMWare Workstation提供的SCSI Adapter应该用哪个驱动?

cnhnln 发表于 2004-2-7 22:38:23

http://www.vmware.com/download/downloadscsi.html

idler1984 发表于 2004-2-8 01:43:30

那个是Windows客户操作系统的驱动……
好像只要选BusLogic的就可以了,启动的时候看到的。

idler1984 发表于 2004-2-8 10:48:14

又发现一个问题。
默认的新版本modules-init-tools安装在/usr/local/sbin下,而初始化的时候好像PATH里面没有加进这一项,或者是优先级不如/sbin,导致调用的modprobe还是旧版本的。有两种解决方法,一种是直接把新版本安装到/sbin,不推荐,建议保留原来的modprobe.
还有一种就是为各版本的kernel分配不同的rc.sysinit,然后修改2.6.2的脚本。

分配不同rc.sysinit的方法见http://www.linuxfans.org/nuke/modules.php?name=Forums&file=viewtopic&t=48546。

然后把rc.sysinit里面的所有modprobe的路径都改为/usr/local/sbin/modprobe
还有就是/etc/modprobe.conf里面的。
或者干脆统一把所有的/sbin/modprobe都改成modprobe,然后在rc.sysinit里面加入:PATH=/usr/local/sbin:$PATH

idler1984 发表于 2004-2-8 18:12:43

安装新版本的module-init-tools的具体方法

安装module-init-tools

如果用默认的configure,module-init-tools会被安装到/usr/local/sbin,这样的话,在初始化时就不会被调用到。其实module-init-tools提供很好的向下兼容性,如果发现内核版本是2.5.48以下的,那么会自动调用.old版本,比如modprobe会自动调用modprobe.old,当然前提是做了备份。所以在RH9下面,module-init-tools需要手工安装。这样就避免了上面修改rc.sysinit的麻烦。

复制module-init-tools-0.9.14.tar.bz2,解压到当前目录:
        tar xjvf module-init-tools-0.9.14.tar.bz2
然后新建build目录:
        mkdir module-init-tools-build
进入该目录,运行configure
        cd module-init-tools-build
        ../module-init-tools-0.9.14
        CC="gcc296" \
          ../module-init-tools-0.9.14/configure
接着编译:
        make
不要运行make install,手工安装modprobe以便保留Redhat自带的版本。
以下是旧版本的文件:
/sbin/depmod
/sbin/insmod
/sbin/modinfo
/sbin/modprobe: a symbolic link to insmod
/sbin/rmmod: a symbolic link to insmod
/sbin/lsmod: a symbolic link to insmod
旧版本中,除了depmod, insmod, modinfo,其余都是到insmod的符号连接。
新版本中,这些都是ELF文件,在2.5.47以下的内核中调用,会自动转调.old文件
所以,我们要重建这些文件名:
/sbin/depmod        ->        /sbin/depmod.old
/sbin/insmod        ->        /sbin/insmod.old
/sbin/modinfo        ->        /sbin/modinfo.old
/sbin/modprobe.old: a symbolic link to insmod.old
/sbin/rmmod.old: a symbolic link to insmod.old
/sbin.lsmod.old: a symbolic link to insmod.old
执行下面的命令完成上述操作:
cd /sbin
mv depmod depmod.old
mv insmod insmod.old
mv modinfo modinfo.old
ln -s insmod.old modprobe.old
ln -s insmod.old rmmod.old
ln -s insmod.old lsmod.old
rm -f modprobe
rm -f rmmod
rm -f lsmod
cd -
然后安装现在的版本:
cp depmod /sbin
cp insmod.static /sbin/insmod
cp modinfo /sbin
cp modprobe /sbin
cp lsmod /sbin
cp rmmod /sbin
测试通过,新版本的module-init-tools安装完成。
这里略过了新版本的man pages,需要的话可以自行安装。

v.i 发表于 2004-2-10 01:01:16

顺大便问一句,哪位大大知道VMWare Workstation提供的SCSI Adapter应该用哪个驱动?

BusLogic.ko

黑色阳光 发表于 2004-3-7 06:29:05

收藏!

tux 发表于 2004-3-8 17:03:04

太好 拉~·!
页: [1]
查看完整版本: RH9升级2.6.2内核的一点经验