安装qlogic的hpt37x的sata驱动
2005-07-11install rocketraid 1520 on redhat enterprise linux as 3 update 5
如果使用默认的驱动,SATA硬盘会被认成hde,hdg等。更新驱动之后,会认成sda,sdb等等 :)
1. 获取驱动程序的源码
从网站下载驱动的源码。
http://www.highpoint-tech.com/BIOS%20+%…source-v2.0.tgz
最新版本的驱动增加了对2.6.x内核和x86_64的支持。
网站上针对redhat linux的驱动包只针对到redhat 9,对于redhat as 3来说,内河版本不对,也没有研究是不是有用。
反正从源码编译得了。
2. 安装内核源码
为了编译驱动,需要安装内核源码。rpm安装得了。
3. 编译驱动
# make KERNELDIR=/usr/src/linux-2.4.21-32.EL
gcc -DDRIVER_VERSION=”2.0″ -DLIST_H_INCLUDED -DMODVERSIONS -DMODULE -DLINUX -D_LINUX_ -D__KERNEL__=1 -DCONFIG_PCI -DNO_CROSS_CTRL=1 -DSUPPORT_ARRAY -DSUPPORT_OLD_ARRAY -Wall -O2 -Wstrict-prototypes -fomit-frame-pointer -I. -I/usr/src/linux-2.4.21-32.EL/include -I/usr/src/linux-2.4.21-32.EL/drivers/scsi -c hpt.c -o hpt.o
ld -r hpt.o raid.o -o hpt37x2.o
4. 测试驱动
# insmod hpt37x2.o
Warning: loading hpt37x2.o will taint the kernel: non-GPL license – Proprietary
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Module hpt37x2 loaded, with warnings
这里这个警告不用理会它。
# lsmod
hpt37x2 80984 0 (unused)
……
scsi_mod 106664 4 [hpt37x2 sg aic7xxx sd_mod]
# fdisk -l
Disk /dev/sda: 9127 MB, 9127034880 bytes
255 heads, 63 sectors/track, 1109 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1020 8193118+ fd Linux raid autodetect
/dev/sda2 1021 1109 714892+ fd Linux raid autodetect
Disk /dev/sdb: 9127 MB, 9127034880 bytes
255 heads, 63 sectors/track, 1109 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 1020 8193118+ fd Linux raid autodetect
/dev/sdb2 1021 1109 714892+ fd Linux raid autodetect
Disk /dev/sdc: 81.9 GB, 81964301824 bytes
255 heads, 63 sectors/track, 9964 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 6226 50010313+ fd Linux raid autodetect
/dev/sdc2 6227 9964 30025485 fd Linux raid autodetect
Disk /dev/sdd: 81.9 GB, 81964301824 bytes
255 heads, 63 sectors/track, 9964 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 6226 50010313+ fd Linux raid autodetect
/dev/sdd2 6227 9964 30025485 fd Linux raid autodetect
注:sda sdb是我的两个scsi硬盘。sdc sdd就是两个sata的硬盘了。
5. 修改grub,让系统引导的时候不加载默认的模块。
# vi /boot/grub/grub.conf
#boot=/dev/sda
default=0
timeout=10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Red Hat Enterprise Linux AS (2.4.21-32.EL)
root (hd0,0)
# kernel /boot/vmlinuz-2.4.21-32.EL ro root=/dev/md0
kernel /boot/vmlinuz-2.4.21-32.EL hde=noprobe hdf=noprobe hdg=noprobe hdh=noprobe ro root=/dev/md0
initrd /boot/initrd-2.4.21-32.EL.img
6. 修改系统让它每次都能够自动加载新的驱动模块
首先看看grub.conf,看看系统是从那个镜像文件引导的。就是initrd /boot/initrd-2.4.21-32.EL.img后面的initrd-2.4.21-32.EL.img了。
然后我们来修改这个东西。
# cd
复制这个镜像文件
# cp /boot/initrd-2.4.21-32.EL.img .
解开这个玩意
# gzip -dc initrd-2.4.21-32.EL.img > initrd.old
建一个临时的目录
# mkdir initrd
mount上这个东西
# mount -o loop initrd.old initrd
将编译好的驱动模块复制进来
# cp /path/to/hpt37x2.o ./initrd/lib
编辑 ./initrd/linuxrc 这个文件,在适当的地方插入加载模块的语句
…
echo “Load aic7xxx module”
insmod /lib/aid7xxx.o
insmod /lib/hpt37x2.o initrd-2.4.21-32.EL.img.new
OK了,然后将这个.new文件拷贝到/boot目录,将原来的改名之后,将这个改名成initrd-2.4.21-32.EL.img。
重新启动看看
7. 理论上应该OK了。如果没有其他scsi设备得话。那么将看到sata硬盘被分配了 /dev/sda …,如果还有其他的scsi设备,那么就会接着后面分配了。
下面就是分区,mount的事情了。不多少了。
附:
经过测试,我发现一下一些问题。
如果不加载最新的那个hpt37x2的驱动,那么这两个硬盘被当作ide设备,是可以用SMART查看他们的信息的,比如硬盘温度等等。但是这个时候,做的softraid的同步速度只有2M左右。
如果加载了hpt37x2.o,那么被当成scsi设备,softraid的同步速最高能达到15M,可是就没法查看SMART信息了。
分类:技术 | 标签: |
发表评论