前两天一台DELL R720因业务需求安装RH5.1,DELL官网和Utilty光盘里都是支持RH5.8以上.

    光盘安装时到分区这一步时找不到硬盘,也就是说光盘的initrd的ramdisk盘没带这个RAID卡的驱动,

    先说一下过程,后面会有操作方法:

    这台机器用的是低端RAID卡,PERC H310 MINI,在LSI官网下载对应的驱动是一个IMG的镜像文件,megaraid_sas-v00.00.04.38-1-rhel50-all.img,修改了光盘isolinux/initrd.img文件后重新打包,引导安装可以识别到硬盘了,顺利安装完成,重启后initrd文件引导完后无法加载内核,因为此时硬盘的initrd里也没有RAID卡驱动,因此无法加载内核。用安装盘进入rescue模式后chroot到新安装的系统,然后拷ko驱动到对应的目录后重新生成initrd,再启动,可以正常引导了。另外BCM5720的网卡驱动也没有,需要到BCM下载安装。

    注意:需要确认驱动版本和当前ISO的内核版本一致

DELL R720安装REDHAT5.1 RAID驱动问题_raid卡

    总结下:

        一:安装时RAID驱动问题,解决方法有三种:

            1:修改光盘的initrd文件,把对应驱动拷到modules就可以了

            2:制作一张驱动光盘,安装盘引导后输入linux dd加载这张盘

            3:直接把megaraid_sas-v00.00.04.38-1-rhel50-all.img放在光盘根目录,在isolinux/isolinux.cfg里指定加载

        二:安装系统后RAID驱动问题

            修改硬盘上的initrd并重新打包

        三:网卡驱动编译和安装,两种方法

            1:DELL官网下载驱动,用dkms安装

            2:BCM官网下载,自己编译安装


一:

   1: 从ISO中提取initrd.img,并修改。

[root@test test]#file initrd.img
initrd.img: gzip compressed data, from Unix, last modified: Sat Sep 13 22:09:43 2014, max compression
文件是gzip压缩的
[root@test test]#gzip -dc initrd.img |cpio -ivd
[root@test test]# ls
bin  dev  etc  init  initrd.img  modules  proc  sbin  selinux  sys  tmp  var
[root@test test]#rm -rf initrd.img
[root@test test]#cd modules
[root@test modules]#ls
module-info  modules.alias  modules.cgz  modules.dep  pci.ids
[root@test modules]#mkdir modules.cgz.folder
[root@test modules.cgz.folder]#cd modules.cgz.folder/
[root@test modules.cgz.folder]#mv ../modules.cgz .
[root@test modules.cgz.folder]#gzip -dc modules.cgz |cpio -ivd
[root@test modules.cgz.folder]#rm -rf modules.cgz
[root@test modules.cgz.folder]#cd 2.6.18-53.el5/
我这个是32位的系统,如果64位,应该是x86_64
[root@test modules.cgz.folder]#cd 2.6.18-53.el5/i686/
复制ko驱动到当前目录(megaraid_sas.ko这个驱动一定要和ISO光盘的内核版本一致)
[root@test i686]#cp /var/www/data/os/rh5-1/megaraid_sas.ko .
[root@test i686]#cd ../../
把modules重新打包回modules.cgz
[root@test modules.cgz.folder]#find 2.6.18-53.el5 |cpio -oH crc |gzip -9 >modules.cgz
[root@test modules.cgz.folder]#ls
2.6.18-53.el5  modules.cgz
[root@test modules.cgz.folder]#cd ..
[root@test modules]#mv modules.cgz.folder/modules.cgz .
[root@test modules]#rm -rf modules.cgz.folder
拷贝驱动文件的modules.alias(此文件在megaraid_sas-v00.00.04.38-1-rhel50-all.img文件的根目录下)别名信息到modules.alias
[root@test modules]#cat /var/www/data/os/rh5-1/modules.alias >>modules.alias
[root@test modules]cd ..
[root@test modules]ls
bin  dev  etc  init  modules  proc  sbin  selinux  sys  tmp  var
重新把所有文件打包回initrd.img
[root@test test]#find .|cpio -oH newc|gzip -9>initrd.img
[root@test test]ls
bin  dev  etc  init  initrd.img  modules  proc  sbin  selinux  sys  tmp  var
此时这个initrd.img就包含了megaraid_sas的驱动了,重新替换iso光盘文件中的isolinux目录下的同名文件,刻盘安装就可以识别到了

一:加载img驱动盘的方式

    2:用ultraiso把img写入U盘(或linux下用dd命令安装),用光盘安装系统时在安装界面输入linux dd,即可加载(此方法我没有尝试成功)


一:isolinux/isolinux.cfg文件加载img驱动盘,在append行增加dd=cdrom:/megaraid_sas-v00.00.04.38-1-rhel50-all.img(我没测试这种方法)

    append initrd=initrd.img dd=cdrom:/megaraid_sas-v00.00.04.38-1-rhel50-all.img


二:安装系统后RAID驱动问题,也有两种方法

    1:用安装光盘进rescue模式,它会自动查找硬盘上的linux系统,按提示挂载到/mnt/sysp_w_picpath(不要选择只读模式)

    挂载U盘,拷贝U盘里的驱动到安装后的目录(安装好的系统内核是2.6.18-53.el5PAE,注意KO文件要选择对应内核的。安装时的内核是2.6.18-53.el5)

bash3.2#mkdir /mtn/tmp
bash3.2#mount /dev/sdb1 /mnt/tmp
bash3.2#cp /mnt/tmp megaraid_sas.ko /mnt/sysp_w_picpath/lib/modules/2.6.18-53.el5PAE/updates/
bash3.2#chroot /mnt/sysp_w_picpath
生成模块依赖
bash3.2#depmod -v 2.6.18-53.el5PAE
备份原ramdisk
bash3.2#mv /boot/initrd-2.6.18-53.el5PAE.img /boot/initrd-2.6.18-53.el5PAE.img.bak
生成新的ramdisk
bash3.2#mkinitrd  /boot/initrd-2.6.18-53.el5PAE.img 2.6.18-53.el5PAE



重启即可


三:网卡驱动如果有KO文件,可以直接按上面的方法直接加入,或者进入系统后再操作,方法类似。

本次加载网卡驱动时出现了各种问题,dkms安装的时候报错,用源码包安装同样报错,最后进源码包直接make,查找error的原因,发现是/usr/src/kernels/2.6.18-53.el5PAE-i686/include/linux/pci.h里没有关于pci_channel_offline函数的定义,没有去细看了,把调用这些函数的段注释掉了,编译通过。