远程转换 H330 为 HBA330
由于 PERC H330 的 passthrough mode 并不适用于 ZFS 所以只好强刷为 HBA330 啦。
注意!此方法不适用于 H730/H830 系列 RAID 卡,且 H730 卡支持直接转换为 HBA。
操作前先备份!操作前先备份!操作前先备份!重要的事情说三遍!!!
准备必要程序和固件
…
我不装了,这里有 Sleyk 大神准备好的文件包。
准备 FreeDOS 启动镜像
首先下载 FreeDOS 的 USB Lite 镜像,作为基础系统环境。当前版本 1.3 解压后给出 FD13LITE.img
文件。
扩容 img 镜像到 128M:
1 | ~> truncate -s 96M FD13LITE.img |
扩展镜像的 FAT 分区
1 | ~> fatresize -n 1 -s max FD13LITE.img |
挂载 img 镜像
1 | ~> udisksctl loop-setup -f FD13LITE.img |
注意 DOS 并不能识别部分文件名,如果不修改的话,在 DOS 中会显示成类似 HBA~1
的形式。
复制好文件后卸载镜像
1 | ~> udisksctl unmount -b /dev/loop0p1 |
完事儿后把修改版 FD13LITE.img
远程挂载到 iDRAC KVM 里,然后重启服务器,从 Virtual Floppy 启动即可。
- 注意:如果
Virtual Floppy
选项没有识别为[Hard Disk] Virtual Floppy
的话则可能需要再次重启,因为镜像没有正确识别,无法进入 FreeDOS。具体原因不明。
Crossflash!
进入 FreeDOS 环境后会提示是否安装,选 No 回到 FreeDOS 就可以执行命令啦。
- 刷入 SMC3018 ROM
1 | > megacli -adpfwflash -f smc3108.rom -noverchk -a0 |
然后因为是远程挂载镜像,会报一堆写入错误,需要一直忽略这些错误。一直等待操作完成报告成功。
重启,然后耐心等待直到出现
Baseport not responding. No adapter available
再进入 FreeDOS 环境。清零 Serial Boot ROM (SBR)
1 | > megarec3 -writesbr 0 sbrempty.bin |
过程中的报错可以忽略,最终报告成功即可。
- 清零 flash
1 | > megarec3 -cleanflash 0 |
重启。
再次进入 FreeDOS 环境,刷入 HBA330 固件。
1 | > sas3flsh -o -f hba330.fw -b mptx64.rom |
如果是 H330Mini,则需要刷 hba330mini.fw
,否则会不识别硬盘。
- 最后一步,重编程 SAS 地址。看起来可以省略,默认是 16 个 0。
1 | > sas3flsh -o -sasadd 0000000000000000 |
只能用数字和字母,必须 16 位。可以自己造也可以用原本的地址(megacli -adpallinfo -a0
)。如果自己造的话需要保证不和同系统内的其他卡冲突。
完成
好耶!(≧∇≦)/
参考:
- https://sandelinos.com/nerd-stuff/Creating_customized_FreeDOS_images/
- https://forums.servethehome.com/index.php?threads/flash-crossflash-dell-h330-raid-card-to-hba330-12gbps-hba-it-firmware.25498/
顺便还折腾了一台老 HPE 的 P420i,步骤很简单,只需要官方的 ssacli
即可。
1 | # 清空所有逻辑磁盘 |
如果不知道 slot 编号,可以 ssacli ctrl all show
来看。
但!是!
虽然改成了 HBA,但你不能从这 HBA 的硬盘启动。
(╯°□°)╯︵ ┻━┻