目前方案: 方案一:直接在启动安装程序时加载官方提 供驱动,已失败。linux dd,指定驱动的位置和名称失败;指 定驱动盘失败。linux text,切换到2号控制台,挂载U盘, 复制驱动目录
目前方案:
方案一:直接在启动安装程序时加载官方提 供驱动,已失败。 linux dd,指定驱动的位置和名称失败;指 定驱动盘失败。 linux text,切换到2号控制台,挂载U盘, 复制驱动目录到/tmp/hptdd下,执行step1, 失败。 结论:官方驱动程序不适应相应的内核版本。最不解的是5U5版本的驱动居然在CENT5.5的系统中都不能支持,就别说Elastix了。 ===================================== ======================== 方案二:编译内核并替换掉原有光盘中的内核文件。然后生成新的initrd.img文件。 1、内核源码的选择问题 标准版本的内核源码编译后用在光盘安装应 该是没问题。但是为了能使用这份源码编译 生成rr272x_1x.ko文件,我还是选择了使用与光盘中内核版本相同的源码,下载地址如下: http://vault.centos.org/5.6/centosplus/SRPMS/kernel-2.6.18-238.12.1.el5.centos.plus.src.rpm 2、下载,并解压驱动源码 注意由于源码是.src.rpm文件,所以步骤如下: #rpm -ivh kernel-2.6.18-238.12.1.el5.centos.plus.src.rpm "安装源码RPM #rpmbuild -bp /usr/src/redhat/SPECS/kernel-2.6.spec "生成源码文件 3、先编译出.ko(驱动模块文件)备用 在以下位置下载相应驱动源文件http://www.highpoint-tech.cn/China_new/product_support_sas6c.htm # yum install ncurses-devel "(此步要求您的Linux工作站目前已联网)准备编译环境,如果没有gcc、ncurse类推处理。 # tar xzvf rr272<tab> "解压驱动源码包,注意是名为rr…….src.……这样的驱动包。 # cd rr272x-linux-src-v1.1<tab>/product/rr272x/linux/ "进入驱动安装目录 # make patchkernel KERNELDIR=<内核源文件目录> KERNEL_VER=2.6 "把驱动补丁嵌入内核,本例源文件目录为/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64 #cd 内核源码路径 #make SUBDIRS=驱动源码目录 "编译出驱动模块文件rr272x_1x.ko,此文件非常重要。 4、编译内核,把rr272x_1x的驱动直接写入内核文件,而不是以模块方式存在(保险起见) #cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64 "进入 源码目录 #cp /boot/config* .config "为避免编译失败,复制系统原有的内核配置文件。 #make menuconfig "开始编译 我选择了以下项目: --kernel hack里所有项目都拿掉不要(重要!) --device driver下scsi device、scsi disk和low level项目下的"HighPoint RocketRAID 272x support" 全部加载到内核中 --low level下的"bus logic"加载到内核中(只有虚拟机vmware需要此驱动) --iptables防火墙的一些相关选项,这个必须根据个人经验,与本案例无关 --其它项目如NTFS支持、不完整源码、源码校验等常用项目在本案例中不是很紧要,新手建议尽量少的修改选项。如果需要支持或移除某些功能可以自行实验(需要反复编译验证选项是否正确,有些项目选择会导致编译失败,此乃天命,君勿自扰) 如果编译失败或出现错误,就重新make menuconfig,建议不要按错误提示去修改include文件(会导致编译模块失败)。 #make modules "编译内核所需的模块文件 #make modules_install "把模块放到应该去的地方 #make install "安装新内核到系统中(本案例中,此步无意义) 5、提取安装光盘所需的内核文件,然后生成光盘所需的initrd.img文件。 我们需要的内核文件是/boot/vmlinuz-2.6.18-prep 把它提取到某个目录。 下面生成initrd.img文件: #mkdir /tmp/initrd "创建新镜像文件目录 #mkdir /tmp/initcd "创建光盘中原有镜像文件的解压目录 插入原安装光盘 #mount /dev/cdrom /mnt/cdrom "挂光盘 #cd /tmp/initcd #gzip -dc /mnt/cdrom/isolinux/initrd.img|cpio -dvi "解压原光盘中的镜像文件 #cd modules "进入模块目录 #gzip -dc modules.cgz|cpio -dvi "解压模块文件 #cd 2.6.18-prep/x86_64 "进入模块所在目录 #find .>cp.sh "把安装光盘的initrd.img中所需要的所有模块文件名列出并写入cp.sh这个文件,此步用于准备脚本。 #rm -rf * "删除原有的所有模块文件,方便观察效果 #vim cp.sh "写脚本 利用vim的查找替换功能(如果不会可以复制到windows中用wordpad解决),把所有的行改为以下的样子: 原先的行是./crc16.ko 改为find /lib/modules/2.6.18-prep/ -name "crc16.ko" -exec cp {} . \; 这句的意思是在我们自己编译的模块中找到安装光盘所需要的,然后复制到我现在这里。 #chmod 700 cp.sh "给我们的脚本加执行权限 #./cp.sh "执行我们的脚本,如果顺利的话,应该会把刚才删除的文件都“找回来”,但已经是我们自己编译的模块文件了。 #rm -rf cp.sh "过河拆桥 #cd ../.. "回到模块目录 #find 2.6*|cpio -o -H newc|gzip -9>modules.cgz "生成新的modules.cgz文件 #rm -rf 2.6* "过河拆桥 #cd .. "回到镜像文件解压的根目录 #find .|cpio -o -H newc|gzip -9>initrd.img "生成新的镜像文件 6、用ultraISO等光盘镜像工具打开原安装光盘 把前步的vmlinuz-2.6.18-prep文件放到光盘isolinux目录下,改名为vmlinuz,替换原文件。 把前步的initrd.img文件放到光盘isolinux目录下,替换原文件。 7、为了让操作系统在将来安装完成后仍然能识别rr272x的驱动,进行光盘的后续工作: 编辑光盘根目录下的ks_default.cfg文件,找到reboot --eject这行,在前面加"#"注释掉。 在光盘中创建AI目录(我的意思是After Install,不是人工智能哦) #mkdir /tmp/new "随便建个目录 #cp /boot/initrd-2.6.18-238.12.1.el5.img . "把现在用的镜像文件复制过来 #gzip -dc initrd-2.6.18-238.12.1.el5.img|cpio -ivd "解压 #rm -rf initrd-2.6.18-238.12.1.el5.img "过河拆桥 #把前面提取的rr272x_1x.ko文件放到lib目录下 #vim init "编辑初始化文件,加入以下内容 echo "Loading rr272x_1x.ko module" insmod Loading rr272x_1x.ko module #find .|cpio -o -H newc|gzip -9>../initrd-2.6.18-238.12.1.el5.img "生成新的镜像文件 把刚才生成的initrd-2.6.18-238.12.1.el5.img放到光盘的AI目录。 8、刻盘,用此盘安装系统后,千万不要马上重启。alt+f2进入2号控制台。 把我们自己生成的initrd-2.6.18-238.12.1.el5.img放到/boot下替换原文件。 至此,方案二完成。 ===================================== 方案三:手工编译制作driver disk以适应 内核版本,并回到方案一。 1、生成驱动源码,参见方案二。 2、生成.ko文件 进入内核源码目录 make SUBDIRS=驱动源码目录 在驱动源码目录中找到.ko文件,提取到某个目录比如/tmp/myimg 3、cd /tmp/myimg --写文件modules.dep,内容为: rr272x_1x: scsi_mod --写文件rhdd,内容为: rr272x_1x-v1 driver disk for Elastix (Generated By bob) --写文件modinfo,内容为: Version 0 rr272x_1x scsi "RocketRAID 271x/272x SAS Controller" --写文件pcitable,内容为: 0x1103 0x02720 "rr272x_1x" "HighPoint|RocketRAID 272x_1x SAS Controller" 0x1103 0x02721 "rr272x_1x" "HighPoint|RocketRAID 272x_1x SAS Controller" 0x1103 0x02722 "rr272x_1x" "HighPoint|RocketRAID 272x_1x SAS Controller" 0x1103 0x02710 "rr272x_1x" "HighPoint|RocketRAID 272x_1x SAS Controller" 0x1103 0x02711 "rr272x_1x" "HighPoint|RocketRAID 272x_1x SAS Controller" 4、生成cgz文件(加上前步所编辑的共五大文件) #mkdir -r 2.6.18-238.12.1.el5/x86_64 "创建规定模式的目录名,不然可能找不到 #cp 我们的.ko文件 2.6.18-238.12.1.el5/x86_64 "把模块文件复制过来 #find 2.6<tab> |cpio -H crc -o|gzip - 9>modules.cgz #rm -rf 2.6* "过河拆桥 #cd .. #find .|cpio -H crc -o|gzip - 9>bob.img "生成驱动盘镜像文件 把这个文件放到U盘就行。 5、安装时用标准的安装光盘启动系统,在出现安装方式选择界面前一定要插入U盘。 输入linux dd,选择U盘,找到bob.img即可。