定製安裝光盤在RAID卡上安裝LInux

目前方案:

方案一:直接在啓動安裝程序時加載官方提 供驅動,已失敗。
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即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章