為 new build 的Linux 加入未內建的 SCSI / RAID driver .

HighPoint RocketRAID 系列一直都是我的最愛 , 透過Hardware 的方式來做 RAID , 簡潔又明僚 . 早期 Highpoint RocketRAID 的產品, 都能在 FreeBSD 的GENERIC  kernel 內找到 . 直接可以安裝系統 , 使用原廠提供的 WebGUI 來維護 RAID .

10 年了,  一片 RocketRAID 1720 開始呈現不穩的狀況了 ,  看來是得換了  !  搜了 一下 ,  看來 Highpoint 現在已經退出台灣了 , 之前的繁中網站已停止維護 , 電話打去也是空號 . 只好到對岸淘寶搜 , 目前看來主流的型號是 RocketRAID 640L . 原廠的 datasheet 有寫支持 FreeBSD  . 好! 買吧 ! ..

但,  事實上 , 這是悲劇的開始 . 裝上機器 ,  FreeBSD 8 , 沒辦法識別到該RAID Card . 但 FreeBSD 10 是可以的 . 看了下 , AHCI (kernel de=ada) 直接支援.  那好 ! 就這樣, 照著 kernel source code 改 FreeBSD 8 , 重新 compile , ok 有抓到該卡 … but 執行 WebGUI , 卻說找不到這個RAID Card . 到原廠網站下載 FreeBSD 對應的 driver , 安裝後. 有成功識別到 htprr RAID Card , 眼看就要 ok 了 … 執行 WebGUI , 仍舊 NG , 沒有抓到這張卡 … 媽呀 ! ..

問原廠 , 我得到了一個 FreeBSD 10.1 的driver …那意味著我也得 update 到 FreeBSD 10.1? .. 好吧 , 就這麼試試看 . 一切都是順利的, 都可以抓到 hptrr . 但執行 WebGUI 的結果仍舊是 ….. NG ! .. 把這個狀況回復給原廠 ,說是不是根本就不支援 ? 對方竟然回我 : 不幸地, 沒錯 , 不支援 … ma der ! 那幹嘛寫上 FreeBSD 在支援之列 ? 騙人的囉 ~?

換 Linux 也不是一個太差的選擇 . 於是我決定試試看 , 搞好後, 再把資料轉移過來就是了 . 這, 是另一個噩夢的開始 … 原廠給了我一個Linux 自動安裝的程式 . 好, 那還是得先把 Linux 裝起來阿 ! .. 我用了 CentOS 7 / 8  , 都無法識別到 RocketRAID 640L . (rr640l) , 跟原廠溝通幾次 , 他總是告訴我可以透過該自動安裝程式進行安裝 .. 所以, 原廠一直避開我的問題 . 就是無法直接將系統安裝在 rr640l .

透過 pank (pank.org) 的協助 / 網路上的搜索, 我也找出解決方法了 . 重新編譯 kernel 看來不會是我可以做的事 , 想辦法把  driver module 掛上去就是了 ! 有 3 個地方得掛
1. CentOS installer
2.新安裝起來的 CentOS
3. bootloader

我用關鍵字 rr64xl module linux 找到了 3rd-party 的 kmod_rr64xl
kmod-rr64xl-1.4.0-1.el7_5.elrepo.x86_64.rpm 
這個是 for CentOS 7 的 包裝 , 所以我就選用 CentOS 7 囉 ~..抓下這個 rpm 後 , 我先用 VirtualBOX 安裝了一個 mini 的 CentOS 7 ,  以便做相容的操作 . 將該 rpm 內的 rr640l.ko 弄出來 : rpm2cpio file.rpm | cpio -idv  (pank.org)
放在 FAT32 的 USB  裡 .

  1. CentOS installer 無法看到 rr640l , 所以在這階段要進入 console mode (ctr-alt-f2)  , 執行 insmod rr640l.ko , 再透過 lsmod 確認是否有掛上該 module . 回到 installer GUI (ctr-alt-f6) , rescan 一下就能找到 rr640l 了 . 把系統安裝上去吧
  2. 新安裝起來的 CentOS .  安裝好後,  先別急著 reboot . 新系統還沒有這個 driver . 再回到 console mode , 先把新系統掛上 /hdd , chroot /hdd   ,   把 rr640l.ko copy  to /lib/modules/`uname -r`/ 底下 , 執行 depmod -a 來產生 module 相依姓 ; 執行 modprobe rr640l .這樣就 ok 了 !
  3. 以為 item 1 / 2  搞定就好 ? no no no ! .. 這樣開機時還是會卡住,  說找不到要掛在 / 的 disk . boot loader 已找不到 rr640l …  這個放在 /boot/initramfs`uname -4`.img  裡面.. 參考vbird 的介紹 , 正好就用 rr640l 當例子 . 可以將 .ko 檔直接新增到 img 檔裡 . .. 所以, 再 item 2 弄好後, 還沒結束 , 要到 /boot 下執行  :  dracut –force -v –add-drivers rr640l >/boot/initramfs-`uname -r`.img  這樣就 ok 了 !以上 item 1 ~3 執行好後 , 應該就沒問題了 , reboot , 從 hdd 開機, 直接就是用 rr640l 的 raid 上的 linux 開機了 ! .. 打完收工 !沒怎麼在用 linux , 還要再適應一下.. 還 ok !
Share your vote!


Do you like this post?
  • Fascinated
  • Happy
  • Sad
  • Angry
  • Bored
  • Afraid

Leave a Reply

Your email address will not be published. Required fields are marked *


Please help to input verification code