Workbench on Elysium

「Nice try.」

重刷Dell PERC H200阵列卡固件为LSI 9211-8i IT固件

Apache553's Avatar 2020-12-04 折腾记录

最近搞了几块洋垃圾SAS硬盘,在我的洋垃圾服务器上插上之后发现不认盘,内核日志里面吐了一堆blk_update_request: protection error。后来经过一番搜索,走了一些弯路,最后发现可能是阵列卡固件版本过低,无法正确处理type 2 protection导致不认盘,遂决定重新刷一下阵列卡的固件。

准备工作

  1. 一个安装有FreeDOS和EFI Shell的U盘用来启动电脑执行刷固件的程序。(如果你的系统盘没有挂在阵列卡下那倒也有别的办法)
  2. 要刷入的固件。这里我是采用了某国外网友做成的固件包里面的一部分加上自己的找到的一部分。
    固件包
    博通 LSI 9211-8i 20.00.07.00 固件+BIOS
    Dell LSI 9211-8i 20.00.00.03 IR固件+BIOS+UEFI OpROM

刷写步骤

注意:此处假设你安装且仅安装了一张卡,若在同时安装了多张卡的计算机上进行操作,请参考对应命令的说明去指定你要操作的卡,以防误操作造成数据损失

  1. 在U盘上安装FreeDOS并将各个文件放在U盘上
  2. 重启进入FreeDOS
  3. 运行sas2flsh.exe -list查看当前卡的信息,并记录下SAS地址(重要
  4. 运行megarec.exe -readsbr 0 sbrbackup.bin以备份你当前的SBR信息,可能以后会用到
  5. 运行megarec.exe -writesbr 0 sbrempty.bin清空SBR
  6. 运行megarec.exe -cleanflash 0清空flash
  7. 运行sas2flsh.exe -o -f 6GBPSAS.FW刷入IT过渡固件
  8. 运行sas2flsh.exe -o -f 2118it.bin刷入要真正使用的固件,有的文章提到要先刷入P7固件,但是我直接刷了P20固件,也没有出问题(目前)。
  9. 运行sas2flsh.exe -o -sasadd <前面记录的SAS地址>恢复SAS地址

到这里就几乎刷完了,如果你有从阵列卡下的硬盘启动系统的需求,则需刷入对应的BIOS/OpROM,启动时才能识别到硬盘。

  1. 对于使用BIOS/MBR启动的,需要运行sas2flsh.exe -o -b mptsas2.rom刷入BIOS用的启动ROM
  2. 对于使用UEFI启动的,则需要运行sas2flsh.exe -o -f x64sas2.rom刷入UEFI用的OpROM

遇到的一些问题

megarec.exe 运行了之后卡住不动

可能你的主板或者其他的一些东西对这个东西不太适应,解决办法就是把卡拔下来换台电脑搞。已知Dell PowerEdge R510的主板有这个问题。

sasflsh.exe 报错 PAL cannot be initialised

你的电脑工作在UEFI模式下,用到sasflash.exe的步骤应启动到EFI Shell环境下用sasflash.efi替代完成

EFI Shell 报错 Application not started from Shell

你的EFI Shell版本可能过高了,固件包中的EFI Shell可能可以使用(版本较低)

sasflsh.exe 报错 Cannot flash IT firmware over IR firmware

sasflash工具在新版本中会拒绝IT/IR固件不同类型的覆盖刷写,但是已知P5版本的sasflash不会进行此检查,可以考虑使用固件包中的sasflsh.exesasflash.efi

最后

数据无价,谨慎保存

本文最后更新于 天前,文中所描述的信息可能已发生改变