前兩天一臺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,並修改。
[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/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函數的定義,沒有去細看了,把調用這些函數的段註釋掉了,編譯通過。