最近搞了几块洋垃圾SAS硬盘,在我的洋垃圾服务器上插上之后发现不认盘,内核日志里面吐了一堆blk_update_request: protection error
。后来经过一番搜索,走了一些弯路,最后发现可能是阵列卡固件版本过低,无法正确处理type 2 protection
导致不认盘,遂决定重新刷一下阵列卡的固件。
准备工作
- 一个安装有FreeDOS和EFI Shell的U盘用来启动电脑执行刷固件的程序。(如果你的系统盘没有挂在阵列卡下那倒也有别的办法)
- 要刷入的固件。这里我是采用了某国外网友做成的固件包里面的一部分加上自己的找到的一部分。
固件包
博通 LSI 9211-8i 20.00.07.00 固件+BIOS
Dell LSI 9211-8i 20.00.00.03 IR固件+BIOS+UEFI OpROM
刷写步骤
注意:此处假设你安装且仅安装了一张卡,若在同时安装了多张卡的计算机上进行操作,请参考对应命令的说明去指定你要操作的卡,以防误操作造成数据损失
- 在U盘上安装FreeDOS并将各个文件放在U盘上
- 重启进入FreeDOS
- 运行
sas2flsh.exe -list
查看当前卡的信息,并记录下SAS地址(重要) - 运行
megarec.exe -readsbr 0 sbrbackup.bin
以备份你当前的SBR信息,可能以后会用到 - 运行
megarec.exe -writesbr 0 sbrempty.bin
清空SBR - 运行
megarec.exe -cleanflash 0
清空flash - 运行
sas2flsh.exe -o -f 6GBPSAS.FW
刷入IT过渡固件 - 运行
sas2flsh.exe -o -f 2118it.bin
刷入要真正使用的固件,有的文章提到要先刷入P7固件,但是我直接刷了P20固件,也没有出问题(目前)。 - 运行
sas2flsh.exe -o -sasadd <前面记录的SAS地址>
恢复SAS地址
到这里就几乎刷完了,如果你有从阵列卡下的硬盘启动系统的需求,则需刷入对应的BIOS/OpROM,启动时才能识别到硬盘。
- 对于使用BIOS/MBR启动的,需要运行
sas2flsh.exe -o -b mptsas2.rom
刷入BIOS用的启动ROM - 对于使用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.exe
或sasflash.efi
最后
数据无价,谨慎保存