前两天一台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的内核版本一致
总结下:
一:安装时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,并修改。
[[email protected] test]#file initrd.img initrd.img: gzip compressed data, from Unix, last modified: Sat Sep 13 22:09:43 2014, max compression 文件是gzip压缩的 [[email protected] test]#gzip -dc initrd.img |cpio -ivd [[email protected] test]# ls bin dev etc init initrd.img modules proc sbin selinux sys tmp var [[email protected] test]#rm -rf initrd.img [[email protected] test]#cd modules [[email protected] modules]#ls module-info modules.alias modules.cgz modules.dep pci.ids [[email protected] modules]#mkdir modules.cgz.folder [[email protected] modules.cgz.folder]#cd modules.cgz.folder/ [[email protected] modules.cgz.folder]#mv ../modules.cgz . [[email protected] modules.cgz.folder]#gzip -dc modules.cgz |cpio -ivd [[email protected] modules.cgz.folder]#rm -rf modules.cgz [[email protected] modules.cgz.folder]#cd 2.6.18-53.el5/ 我这个是32位的系统,如果64位,应该是x86_64 [[email protected] modules.cgz.folder]#cd 2.6.18-53.el5/i686/ 复制ko驱动到当前目录(megaraid_sas.ko这个驱动一定要和ISO光盘的内核版本一致) [[email protected] i686]#cp /var/www/data/os/rh5-1/megaraid_sas.ko . [[email protected] i686]#cd ../../ 把modules重新打包回modules.cgz [[email protected] modules.cgz.folder]#find 2.6.18-53.el5 |cpio -oH crc |gzip -9 >modules.cgz [[email protected] modules.cgz.folder]#ls 2.6.18-53.el5 modules.cgz [[email protected] modules.cgz.folder]#cd .. [[email protected] modules]#mv modules.cgz.folder/modules.cgz . [[email protected] modules]#rm -rf modules.cgz.folder 拷贝驱动文件的modules.alias(此文件在megaraid_sas-v00.00.04.38-1-rhel50-all.img文件的根目录下)别名信息到modules.alias [[email protected] modules]#cat /var/www/data/os/rh5-1/modules.alias >>modules.alias [[email protected] modules]cd .. [[email protected] modules]ls bin dev etc init modules proc sbin selinux sys tmp var 重新把所有文件打包回initrd.img [[email protected] test]#find .|cpio -oH newc|gzip -9>initrd.img [[email protected] 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/sysimage(不要选择只读模式)
挂载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/sysimage/lib/modules/2.6.18-53.el5PAE/updates/ bash3.2#chroot /mnt/sysimage 生成模块依赖 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函数的定义,没有去细看了,把调用这些函数的段注释掉了,编译通过。