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 裡 .
- CentOS installer 無法看到 rr640l , 所以在這階段要進入 console mode (ctr-alt-f2) , 執行 insmod rr640l.ko , 再透過 lsmod 確認是否有掛上該 module . 回到 installer GUI (ctr-alt-f6) , rescan 一下就能找到 rr640l 了 . 把系統安裝上去吧
- 新安裝起來的 CentOS . 安裝好後, 先別急著 reboot . 新系統還沒有這個 driver . 再回到 console mode , 先把新系統掛上 /hdd , chroot /hdd , 把 rr640l.ko copy to /lib/modules/`uname -r`/ 底下 , 執行 depmod -a 來產生 module 相依姓 ; 執行 modprobe rr640l .這樣就 ok 了 !
- 以為 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 !