<b>目前方案:</b>
<b>方案一:直接在啟動安裝程式時加載官方提 供驅動,已失敗。</b>
<b>linux dd,指定驅動的位置和名稱失敗;指 定驅動盤失敗。</b>
<b>linux text,切換到2号控制台,挂載U盤, 複制驅動目錄到/tmp/hptdd下,執行step1, 失敗。</b>
<b> </b>
<b>結論:官方驅動程式不适應相應的核心版本。最不解的是5U5版本的驅動居然在CENT5.5的系統中都不能支援,就别說Elastix了。</b>
<b>===================================== ========================</b>
<b>方案二:編譯核心并替換掉原有CD光牒中的核心檔案。然後生成新的initrd.img檔案。</b>
<b>1、核心源碼的選擇問題</b>
<b>标準版本的核心源碼編譯後用在CD光牒安裝應 該是沒問題。但是為了能使用這份源碼編譯 生成rr272x_1x.ko檔案,我還是選擇了使用與CD光牒中核心版本相同的源碼,下載下傳位址如下:</b>
<b>http://vault.centos.org/5.6/centosplus/SRPMS/kernel-2.6.18-238.12.1.el5.centos.plus.src.rpm</b>
<b>2、下載下傳,并解壓驅動源碼</b>
<b>注意由于源碼是.src.rpm檔案,是以步驟如下:</b>
<b>#rpm -ivh kernel-2.6.18-238.12.1.el5.centos.plus.src.rpm "安裝源碼RPM</b>
<b>#rpmbuild -bp /usr/src/redhat/SPECS/kernel-2.6.spec "生成源碼檔案</b>
<b>3、先編譯出.ko(驅動子產品檔案)備用</b>
<b>在以下位置下載下傳相應驅動源檔案http://www.highpoint-tech.cn/China_new/product_support_sas6c.htm</b>
<b># yum install ncurses-devel "(此步要求您的Linux工作站目前已聯網)準備編譯環境,如果沒有gcc、ncurse類推處理。</b>
<b># tar xzvf rr272<tab> "解壓驅動源碼包,注意是名為rr…….src.……這樣的驅動包。</b>
<b># cd rr272x-linux-src-v1.1<tab>/product/rr272x/linux/ "進入驅動安裝目錄</b>
<b># make patchkernel KERNELDIR=<核心源檔案目錄> KERNEL_VER=2.6 "把驅動更新檔嵌入核心,本例源檔案目錄為/usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64</b>
<b>#cd 核心源碼路徑</b>
<b>#make SUBDIRS=驅動源碼目錄 "編譯出驅動子產品檔案rr272x_1x.ko,此檔案非常重要。</b>
<b>4、編譯核心,把rr272x_1x的驅動直接寫入核心檔案,而不是以子產品方式存在(保險起見)</b>
<b>#cd /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.x86_64 "進入 源碼目錄</b>
<b>#cp /boot/config* .config "為避免編譯失敗,複制系統原有的核心配置檔案。</b>
<b>#make menuconfig "開始編譯</b>
<b>我選擇了以下項目:</b>
<b>--kernel hack裡所有項目都拿掉不要(重要!)</b>
<b>--device driver下scsi device、scsi disk和low level項目下的"HighPoint RocketRAID 272x support" 全部加載到核心中</b>
<b>--low level下的"bus logic"加載到核心中(隻有虛拟機vmware需要此驅動)</b>
<b>--iptables防火牆的一些相關選項,這個必須根據個人經驗,與本案例無關</b>
<b>--其它項目如NTFS支援、不完整源碼、源碼校驗等常用項目在本案例中不是很緊要,新手建議盡量少的修改選項。如果需要支援或移除某些功能可以自行實驗(需要反複編譯驗證選項是否正确,有些項目選擇會導緻編譯失敗,此乃天命,君勿自擾)</b>
<b>如果編譯失敗或出現錯誤,就重新make menuconfig,建議不要按錯誤提示去修改include檔案(會導緻編譯子產品失敗)。</b>
<b>#make modules "編譯核心所需的子產品檔案</b>
<b>#make modules_install "把子產品放到應該去的地方</b>
<b>#make install "安裝新核心到系統中(本案例中,此步無意義)</b>
<b>5、提取安裝CD光牒所需的核心檔案,然後生成CD光牒所需的initrd.img檔案。</b>
<b>我們需要的核心檔案是/boot/vmlinuz-2.6.18-prep 把它提取到某個目錄。</b>
<b>下面生成initrd.img檔案:</b>
<b>#mkdir /tmp/initrd "建立新鏡像檔案目錄</b>
<b>#mkdir /tmp/initcd "建立CD光牒中原有鏡像檔案的解壓目錄</b>
<b>插入原安裝CD光牒</b>
<b>#mount /dev/cdrom /mnt/cdrom "挂CD光牒</b>
<b>#cd /tmp/initcd</b>
<b>#gzip -dc /mnt/cdrom/isolinux/initrd.img|cpio -dvi "解壓原CD光牒中的鏡像檔案</b>
<b>#cd modules "進入子產品目錄</b>
<b>#gzip -dc modules.cgz|cpio -dvi "解壓子產品檔案</b>
<b>#cd 2.6.18-prep/x86_64 "進入子產品所在目錄</b>
<b>#find .>cp.sh "把安裝CD光牒的initrd.img中所需要的所有子產品檔案名列出并寫入cp.sh這個檔案,此步用于準備腳本。</b>
<b>#rm -rf * "删除原有的所有子產品檔案,友善觀察效果</b>
<b>#vim cp.sh "寫腳本</b>
<b>利用vim的查找替換功能(如果不會可以複制到windows中用wordpad解決),把所有的行改為以下的樣子:</b>
<b>原先的行是./crc16.ko</b>
<b>改為find /lib/modules/2.6.18-prep/ -name "crc16.ko" -exec cp {} . \;</b>
<b>這句的意思是在我們自己編譯的子產品中找到安裝CD光牒所需要的,然後複制到我現在這裡。</b>
<b>#chmod 700 cp.sh "給我們的腳本加執行權限</b>
<b>#./cp.sh "執行我們的腳本,如果順利的話,應該會把剛才删除的檔案都</b><b>“</b><b>找回來</b><b>”</b><b>,但已經是我們自己編譯的子產品檔案了。</b>
<b>#rm -rf cp.sh "過河拆橋</b>
<b>#cd ../.. "回到子產品目錄</b>
<b>#find 2.6*|cpio -o -H newc|gzip -9>modules.cgz "生成新的modules.cgz檔案</b>
<b>#rm -rf 2.6* "過河拆橋</b>
<b>#cd .. "回到鏡像檔案解壓的根目錄</b>
<b>#find .|cpio -o -H newc|gzip -9>initrd.img "生成新的鏡像檔案</b>
<b>6、用ultraISO等CD光牒鏡像工具打開原安裝CD光牒</b>
<b>把前步的</b><b>vmlinuz-2.6.18-prep檔案放到CD光牒isolinux目錄下,改名為vmlinuz,替換原檔案。</b>
<b>把前步的initrd.img檔案放到CD光牒isolinux目錄下,替換原檔案。</b>
<b>7、為了讓作業系統在将來安裝完成後仍然能識别rr272x的驅動,進行CD光牒的後續工作:</b>
<b>編輯CD光牒根目錄下的ks_default.cfg檔案,找到reboot --eject這行,在前面加"#"注釋掉。</b>
<b>在CD光牒中建立AI目錄(我的意思是After Install,不是人工智能哦)</b>
<b>#mkdir /tmp/new "随便建個目錄</b>
<b>#cp /boot/initrd-2.6.18-238.12.1.el5.img . "把現在用的鏡像檔案複制過來</b>
<b>#gzip -dc initrd-2.6.18-238.12.1.el5.img|cpio -ivd "解壓</b>
<b>#rm -rf initrd-2.6.18-238.12.1.el5.img "過河拆橋</b>
<b>#把前面提取的rr272x_1x.ko檔案放到lib目錄下</b>
<b>#vim init "編輯初始化檔案,加入以下内容</b>
<b>echo "Loading rr272x_1x.ko module"</b>
<b>insmod Loading rr272x_1x.ko module</b>
<b>#find .|cpio -o -H newc|gzip -9>../initrd-2.6.18-238.12.1.el5.img "生成新的鏡像檔案</b>
<b>把剛才生成的initrd-2.6.18-238.12.1.el5.img放到CD光牒的AI目錄。</b>
<b>8、刻盤,用此盤安裝系統後,千萬不要馬上重新開機。alt+f2進入2号控制台。</b>
<b>把我們自己生成的initrd-2.6.18-238.12.1.el5.img放到/boot下替換原檔案。</b>
<b>至此,方案二完成。</b>
<b>=====================================</b>
<b>方案三:手工編譯制作driver disk以适應 核心版本,并回到方案一。</b>
<b>1、生成驅動源碼,參見方案二。</b>
<b>2、生成.ko檔案</b>
<b>進入核心源碼目錄</b>
<b>make SUBDIRS=驅動源碼目錄</b>
<b>在驅動源碼目錄中找到.ko檔案,提取到某個目錄比如/tmp/myimg</b>
<b>3、cd /tmp/myimg</b>
<b>--寫檔案modules.dep,内容為:</b>
<b>rr272x_1x: scsi_mod</b>
<b>--寫檔案rhdd,内容為:</b>
<b>rr272x_1x-v1 driver disk for Elastix (Generated By bob)</b>
<b>--寫檔案modinfo,内容為:</b>
<b>Version 0</b>
<b>rr272x_1x</b>
<b> scsi</b>
<b> "RocketRAID 271x/272x SAS Controller"</b>
<b>--寫檔案pcitable,内容為:</b>
<b>0x1103 0x02720 "rr272x_1x" "HighPoint|RocketRAID 272x_1x SAS Controller"</b>
<b>0x1103 0x02721 "rr272x_1x" "HighPoint|RocketRAID 272x_1x SAS Controller"</b>
<b>0x1103 0x02722 "rr272x_1x" "HighPoint|RocketRAID 272x_1x SAS Controller"</b>
<b>0x1103 0x02710 "rr272x_1x" "HighPoint|RocketRAID 272x_1x SAS Controller"</b>
<b>0x1103 0x02711 "rr272x_1x" "HighPoint|RocketRAID 272x_1x SAS Controller"</b>
<b>4、生成cgz檔案(加上前步所編輯的共五大檔案)</b>
<b>#mkdir -r 2.6.18-238.12.1.el5/x86_64 "建立規定模式的目錄名,不然可能找不到</b>
<b>#cp 我們的.ko檔案 2.6.18-238.12.1.el5/x86_64 "把子產品檔案複制過來</b>
<b>#find 2.6<tab> |cpio -H crc -o|gzip - 9>modules.cgz</b>
<b>#cd ..</b>
<b>#find .|cpio -H crc -o|gzip - 9>bob.img "生成驅動盤鏡像檔案</b>
<b>把這個檔案放到U盤就行。</b>
<b>5、安裝時用标準的安裝CD光牒啟動系統,在出現安裝方式選擇界面前一定要插入U盤。</b>
<b>輸入linux dd,選擇U盤,找到bob.img即可。</b>
<b></b>
<b>本文轉自 霜寒未試 51CTO部落格,原文連結:http://blog.51cto.com/51bbs/769243,如需轉載請自行聯系原作者</b>