超微X9DRH-7F内置LSI 2208 SAS控制器刷直通模式
今年初弄了台4卡P102机架式服务器,就是下图这家伙:
图上第一版,矿架小了一点,卡间距也远远不够,后来换过架子。这个机器搞深度学习挺好用的,搞定不少事,这大半年也烧掉几千块电费了。我不搞什么虚拟化AIO,也不画什么家庭网络拓扑图,HTPC、NAS、服务器、桌面电脑都是独立但是互通的,服务器和NAS之间单独光纤万兆对联,也没有什么转码的需求,外网访问FRP代理Jupyter和VSCode,这个服务器纯粹就是干活用的。还有个FX推土机服务器用来跑Minecraft和一些好玩的东西,还有树莓派、Jetson若干,反正都是用交换机放在同一网段互通的,路由也就是个刷了梅林的网件,梯子也挂在上面,大概就是这么个情况。
目前深度学习机的配置是超微X9DRH-7F板子,双路E5 2640 V2,8通道16G ECC内存,2个1250W矿龙,万兆光卡,PCIE转NVME SSD。年初的时候疫情影响,东拉西凑弄了3块SSD总计1632G,最近处理一些大数据集诸如OpenImages、Objects365等等,光OpenImages就要占用800多G,感觉颇为吃力,就动了加存储的心思。
目前二手NL SAS盘差不多在50元每T,先搞4块3T的试试水。除了盘之外还买了Mini SAS一分四SAS线(SAS线可以兼容SATA但反过来不行),还有光驱位4位硬盘笼子(X宝五十多块钱带风扇,5位的散热不好)。硬件都还没到货,我的惯例都是软件先行的,由于不使用硬RAID阵列,就先把超微板子上的2208控制器给刷直通了。
这件事情看着简单,油管上还有个视频专门介绍,也能搜到一篇英文文章讲解的,都还有些帮助。不过要把信息整理清楚还是比较麻烦。
首先,板子上是LSI 2208的SAS控制芯片,要把它互刷成LSI 2308 IT模式的固件。理论上有一大票用这个芯片的垃圾SAS卡都可以用这里的办法刷直通,如果要买独立的SAS卡,最好直接去买别人刷好的避免费事。其次,我遇到的一个天坑,就是二手主板上的跳线是把SAS给关闭了的……以至于所有的工具都看不到SAS控制器,我还以为主板坏了。最后就是这块板子刷固件需要用到EFI。
然后刷直通的思路是:
- 用megarec确认设备信息,保存SBR和SPD(具体是什么懒得解释了,总之万一刷坏了应该可以用这个救砖……)
- 用megacli保存SAS地址(很重要)
- 用megarec清除sbr和flash(从这里开始就是真刷了)
- 用sas2flash刷LSI 2308的固件和ROM,具体来讲是刷9207_8i_Package_P20_IR_IT_FW_BIOS_for_MSDOS_Windows.zip这个包里面的Firmware\HBA_9207_8i_IT\9207-8.bin,和sasbios_rel\mptsas2.rom这两个文件
- 用sas2flash重新刷回SAS地址
你需要去找来这些包:
- 9207_8i_Package_P20_IR_IT_FW_BIOS_for_MSDOS_Windows.zip,这个可以从Boardcom官网下载,需要的文件前面说了
- sas2008.zip,这个包里面2008_lsi/sbrempty.bin是用来清空SBR的。从这里下载,接下来2个lsi开头的包都在这个页面上
- lsi_dos.zip,这个包里主要是megarec.exe,用的时候需要复制整个包的内容,因为megarec有一些依赖
- lsi_efi.zip,主要是sasflash.efi,建议复制整个包内容
然后也许还需要制作一块USB DOS启动盘,我是用的HP USB Disk Format Tool,好像Rufus也是可以的。HP那个工具有个巨坑,当你制作过一次启动盘之后,U盘上会有一个删不掉的光驱分区……需要用diskpart来干掉,这个就先不展开了。因为超微板子有IPMI,你不用U盘启动也是可以的,可以去下载一个lsi2208fixer.iso,用IPMI的远程虚拟光驱直接启动!(U盘也可以远程虚拟挂载,设备名是killer 3000……)
这里强烈推荐IPMI,有点像VNC,但是它甚至连BIOS都能操作,也可以直接远程开关机(和按硬件开关一样),还有上文提到的远程虚拟U盘和光驱。用法就是把IPMI的那个网口插在路由器上,远程浏览器访问它的IP就行了,如下图:
打开这个页面之后,点击那个缩略图就可以下载一个Java(相关的?)文件,打开它就会加载一个远程桌面(需要Java环境),然后就可以起飞了……默认账号ADMIN/ADMIN,如果你也是二手主板的话有可能IPMI的密码被上家改过,就要进入Linux系统去安装一个ipmitool来重置密码。
总之先把前面提到的包里面所有需要的文件提取到U盘根目录下,然后远程或者本地插上去。然后启动就可以了。要注意SAS跳线,BIOS里面也要开启SAS 2208 OPROM(在PCIE设置里面)。如果你是用IPMI加载虚拟光驱启动的,默认光驱是挂载到了C:盘,U盘会挂载到B:盘(至少我这里是这样)。所以切换到B:(不会的话自学一下DOS基本操作,不展开了),现在开始输入命令:
megarec -adplist
你应该可以看到2208 SAS控制器了。
megarec -readsbr 0 smc2208.sbr
megarec -readspd 0 smc2208.spd
这样就保存了sbr和spd,注意0是SAS控制器的设备号,要根据前面adplist结果来。
megacli -adpallinfo -a0 > allinfo.txt
上面命令生成的allinfo.txt里面找到SAS Address把后面的字符串记录下来(这里可能需要拔出U盘,我是在IPMI里面弹出的,插回去之后重启了一次)。
接下来就是危险操作了:
megarec -writesbr 0 sbrempty.bin
megarec -cleanflash 0
SBR和Flash就清空了!现在重启,按DEL进入BIOS,直接进入Build-in EFI Shell(不会的话,主板说明看一下啦)。
EFI Shell进去之后3秒之内按回车,你需要猜对U盘的盘符,我这里是输入fs1:(注意是fs1:,有个冒号),主板这个EFI Shell还蛮强大的,输入盘符之后可以直接dir看一下是不是U盘。找到U盘之后继续:
sas2flash.efi -list
应该可以看到2208的,继续刷P20版本的新BIOS和ROM:
sas2flash -o -f 9207-8.bin -b mptsas2.rom
再来,刷入刚才保存的SAS Address,注意要根据你保存的值来刷入,不要照抄命令!
sas2flash -o -sasadd 50030480195exxxx
好了,再执行一次sasflash.efi -list,就应该可以看到正确的SAS地址了。
再重启就搞定了,OPROM变成2308-IT了:
要从2308刷回2208也是可以的,具体请参考这篇文章,刷2308我也是基本按照他的思路来的。
还可以参考:油管的视频。
接下来就是等待硬件到位了。貌似LSI控制器的空载温度很高(环境温度不到10度,allinfo.txt里面报告93度,散热片没接触好?),看样子是需要放一个小风扇吹着比较靠谱,下次硬件到位一起再弄了。
最后放上我的U盘根目录的所有文件:
链接:https://pan.baidu.com/s/1EMXp2OKQJEFGo-Yrp-sqsQ
提取码:htwm