LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1109|回复: 2

IBM eServer X360 Redhat AS2.1升级内核下的ServerRAID驱动问题

[复制链接]
发表于 2003-1-21 15:09:24 | 显示全部楼层 |阅读模式
给大家贴一个,IBM eServer X360 ServerRAID 4在Redhat AS2.1下内核升级过程中ipo.so文件(即IBM RAID卡驱动)编译不成功的问题。而且make bzImage不提示出错,但ipo.so不生成。
另外如果采用Redhat AS2.1自带的kernel2.4.9-e3是可以的,如果采用2.4.9-e8或者2.4.9-e10则肯定编译不成功
IBM网站上有一篇文章,采用此方法一样不成,连接如下:
http://www-900.ibm.com/cn/suppor ... l?DocId=FDOG-5F56UN

Red Hat Linux 内核:如何编译 ServeRAID 驱动程序
适用机型:
Netfinity 1000所有8477机型; Netfinity 3000所有8476机型; Netfinity 3500所有8644机型; Netfinity 3500所有8655机型; Netfinity 3500 M10所有8655机型; Netfinity 3500 M20所有8657机型; Netfinity 4000R所有8652机型; Netfinity 4000R所有8653机型; Netfinity 4500R所有8656机型; xSeries 340所有8656机型; Netfinity 5000所有8659机型; Netfinity 5100所有8658机型; xSeries 230所有8658机型; Netfinity 5500所有8660机型; Netfinity 7000 M10所有8660机型; Netfinity 5500 M10所有8661机型; Netfinity 5500 M20所有8662机型; Netfinity 5600所有8664机型; xSeries 240所有8664机型; Netfinity 6000R所有8682机型; Netfinity 7000所有8651机型; Netfinity 7000所有8680机型; Netfinity 7000 M10所有8680机型; Netfinity 7100所有8666机型; Netfinity 7600所有8665机型; Netfinity 8500R所有8681机型; xSeries 130所有8654机型; xSeries 135所有8654机型; xSeries 330所有8654机型; xSeries 200所有8478机型; xSeries 200所有8479机型; xSeries 220所有8645机型; xSeries 220所有8646机型; xSeries 330所有8674机型; xSeries 330所有8675机型
文档内容:
现象:
运行 updrh.sh 时报错
客户需要更新 ServeRAID 驱动程序,但没有针对客户使用版本的内核的补丁程序
注:IBM只支持 Red Hat 正式发布的产品的内核

适合的机型属于下面的 IBM e(logo)servers 服务器:
an xSeries 340, Type 8656, any Model.
an xSeries 330, Type 8654, any Model.
an xSeries 240, Type 8664, any Model.
an xSeries 230, Type 8658, any Model.
an xSeries 220, Type 8645, any Model.
an xSeries 200, Type 8478, any Model.
an xSeries 150, Type 8658, any Model.
an xSeries 135, Type 8654, any Model.
an xSeries 130, Type 8654, any Model.

或者 IBM Netfinity 服务器:
a Netfinity 8500R server, Type 8681, any Model.
a Netfinity 7600 server, Type 8665, any Model.
a Netfinity 7100 server, Type 8666, any Model.
a Netfinity 7000-M10 server, Type 8680, any Model.
a Netfinity 7000 server, Type 8651, any Model.
a Netfinity 6000R server, Type 8682, any Model.
a Netfinity 5600 server, Type 8664, any Model.
a Netfinity 5500-M20 server, Type 8662, any Model.
a Netfinity 5500-M10 server, Type 8661, any Model.
a Netfinity 5500 server, Type 8660, any Model.
a Netfinity 5100 server, Type 8658, any Model.
a Netfinity 5000 server, Type 8659, any Model.
a Netfinity 4500R server, Type 8656, any Model.
a Netfinity 4000R (US) server, Type 8652, any Model.
a Netfinity 4000R (Non-US) server, Type 8653, any Model.
a Netfinity 3500-M20 server, Type 8657, any Model.
a Netfinity 3500-M10 server, Type 8655, any Model.
a Netfinity 3500 server, Type 8644, any Model.
a Netfinity 3000 server, Type 8476, any Model.
a Netfinity 1000 server, Type 8477, any Model.
a Netfinity A100 server, Type 8652, any Model.

解决方法:
编译针对 Red Hat Linux 的 ServeRAID 驱动程序
注意:进行任何内核或者驱动程序的升级之前,请确保您拥有一张可以启动的系统盘。如果要创建一张,插入一张软盘,执行下面的命令:
mkbootdisk --device /dev/fd0 <kernel version>
当做好启动盘后,确认可以用这张启动盘启动系统。

1、以 root 身份登陆,确认当前运行版本内核的核心源代码已经安装,如果没有安装,请安装源代码
rpm -q kernel-source
2、Mount 光驱
mount /mnt/cdrom
创建一个目录,准备存放 ServeRAID 驱动程序
mkdir /home/<username>/ServeRAID
3、从光盘拷贝驱动程序的压缩包
cp /mnt/cdrom/linux/driver/ips-484.tgz /home/<username>/ServeRAID
4、进入相应的目录(上面刚刚创建的目录)
cd /home/<username>/ServeRAID
解压驱动程序
tar -xzvf ips-484.tgz
确认文件 ips.c 和 ips.h 存在
5、进入包含原始 ips.c 和 ips.h 的目录
cd /usr/src/<kernel-version>/drivers/scsi
把这两个文件改名
mv ips.h ips-ori.h
mv ips.c ips-ori.c
拷贝新的文件
cp /home/<username>/ServeRAID/ips.*
6、回到内核的目录
cd /usr/src/<kernel-version>
make clean mrproper
7、从 /usr/src/<kernel-version>/configs 目录拷贝相应的配置文件
cp configs/kernel-2.4.9-i686-smp.config .config
8、运行核心配置工具
make menuconfig
进入 SCSI SUPPORT 菜单,SCSI LOW LEVEL DRIVERS,找到 IBM ServeRAID 选项,选成 'M'
回到主菜单,在 PROCESSOR TYPE and FEATURES 菜单中,把 HIGH MEMORY SUPPORT 改成 4GB
如果使用SMP,请确认 symmetric multiprocessing support 选项被选中(在 PROCESSOR TYPE and FEATURES 菜单中)
完成后,保存并退出
9、根据运行的内核的版本更改 Makefile 文件
用编辑器打开 /usr/src/<kernel-version>/Makefile,更改 EXTRAVERSION
例如:
2.4.9-34 的 extraversion 值是 "-34"
2.4.9-34smp 的 extraversion 值是 "-34smp"
保存更新的 Makefile
10、build modules
make dep clean modules
11、编译结束后,更改老的驱动程序的名字
mv /lib/modules/<kernel-ver.>/kernel/drivers/scsi/ips.o /lib/modules/<kernel-ver.>/kernel/drivers/scsi/ips.ori
拷贝新编译好的驱动程序
cp drivers/scsi/ips.o /lib/modules/<kernel-ver.>/kernel/drivers/scsi/
12、给当前的 initial ramdisk 改名
mv /boot/initrd-<kernel-ver.>.img /boot/initrd-<kernel-ver.>.old-img
创建一个新的
mkinitrd /boot/initrd-<kernel-ver.>.img <kernel-ver.>
如果使用的是 lilo,要再运行一次
/sbin/lilo
13、启动时,ServeRAID 驱动程序会告诉你当前加载的驱动程序版本
注:也可以通过察看 /var/log/messages 或者 /proc/scsi/ips/ 来查找加载的 ServeRAID 驱动程序版本

当 ServeRAID 驱动程序发布时,会有提供一个脚本 "updrh.sh",用来给 Red Hat 已经使用的内核进行修补
如果客户使用了更新的内核版本,"updrh.sh"就不能适用了
这篇文章的方法是编译 ServeRAID 驱动程序的源代码,所以可以在更新的内核的上加载
发表于 2003-1-21 18:39:44 | 显示全部楼层
没有这样的设备,也不知道如何解决。。如果没有搞定,请兄台帖一下错误信息。 这样有经验的弟兄就能指点几下了。
多谢。
发表于 2003-1-21 22:37:18 | 显示全部楼层
羡慕呢
这么好的机子...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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