Skip to content

Commit f51010d

Browse files
committed
new post lsi-9266-8i
1 parent 20efba1 commit f51010d

8 files changed

+200
-0
lines changed
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
---
2+
title: 给 LSI 9266-8i 刷 IT Mode
3+
tags:
4+
- 折腾
5+
- HBA
6+
- Server
7+
categories:
8+
- 技术
9+
layout: post
10+
date: 2022-06-22
11+
---
12+
13+
## 前提的前提
14+
15+
这个故事的经历以失败暂告一段落,但是着里面的过程我觉得还是值得记录一下。估计以后也用得上 --- ZFS还是一定要IT Mode,没办法。如果你想尝试一下的话不妨接着往下看,我稍微把工具都整理了一下
16+
17+
18+
## 事故前提
19+
20+
18年的时候有我和另外一个朋友合组了一台HP 380P G8,这是一台相当老的服务器。21年左右的时候尝试升级了一下,结果后续内存和硬盘各种爆炸,所以想着晚些时候直接换个新的上去好了。结果新的服务器到了以后,文件系统我们换成了ZFS,不再是和以前一样的硬件RAID。ZFS需要直通模式,他既是文件系统,本身也包含了卷管理的功能。大部分RAID卡虽然提供了类似的模式,比如说给你每个盘开RAID 0,或者是提供了一个HBA Mode,但这些模式通常都是由软件模拟的,除了性能可能存在问题,有些甚至无法读取`smartctl`。所以一般来说会找那种可以刷成直通模式,让卡本身不做任何处理的固件。但是……
21+
22+
这次我给搞忘了!反应过来的时候旧机器都已经寄到家门口了……新机器内置的RAID卡`P440ar`虽然是有HBA模式,看着性能也没啥问题,但是这机器发出去就很难再调整硬件配置,为了保险起见,还是单独弄一张带`IT Mode`固件的卡好了。
23+
24+
## 理论可行
25+
26+
翻箱倒柜找到了一张旧机器里面的`9266-8i`,搜索了一下,似乎并没有特别多的资料。但是似乎有人留下了一篇`cross-flashing`的经历:
27+
28+
> https://mywiredhouse.net/blog/flashing-lsi-2208-firmware-use-hba/
29+
30+
大概意思就是Supermicro主板内置刚好也有一块LSI的RAID卡,控制器是`SMB2208`。这个版本刚好是没有`IT Mode`的。但是`SMB2308`有。然而,2208和2308虽然型号不一样,背后的架构其实是差不多的,甚至芯片都是用的一样的……那么,有没有可能可以直接想办法把2308给的固件刷到2208里面呢?
31+
32+
答案是可以,作者发现这是真的能用。那么采用2208控制器卡有很多变种,比如我手里这块`9266-8i`其实也是同样的芯片组:
33+
34+
> 参考 https://docs.broadcom.com/doc/12353227
35+
36+
所以如果这个用2208的卡可以,那么其他用同样的控制器的卡,理论上有概率也是可以的。
37+
38+
所以我们开始试试看把!
39+
40+
## 准备环境
41+
42+
配置2208首先要使用DOS环境把卡清空,才可以再刷入2308固件。所以[FreeDOS](https://www.freedos.org/download/)走起。
43+
44+
如果你有多个U盘的话,可以选择直接下载LITEUSB的镜像写入。这里的问题是因为你还需要把各种工具和固件放进去 --- 虽然你U盘可以很大,但是镜像的文件系统本身为了压缩大小,是限定了分区大小的。也就是如果你没有第二个U盘,你可能还得想想办法扩容分区。我实在是懒得折腾了,Archlinux有个提前分了2G大小压缩后的镜像,但是写入是结结实实要2G。FreeDOS提供的FullUSB镜像在本次过程中分区大小是足够的。
45+
46+
主要要准备的东西有:
47+
48+
1. 9207_8i_Package_P20_IR_IT_FW_BIOS_for_MSDOS_Windows.zip (has the 9207-8.bin firmware and mptsas2.rom bios in it)
49+
2. lsi2208fixer.zip (has `megarec`, `megacli`, `sas2flash`, and this has the 2208 recovery firmware)
50+
3. sas2008.zip (提取 `sbrempty.bin` file in it)
51+
4. Installer_P20_for_UEFI.zip (this has the version of sas2flash.efi in it for UEFI shell)
52+
53+
注意的点:
54+
55+
1. 在我测试的过程中,P14和P20的刷写软件都认为9266是兼容的固件。如果你的卡刷不了,可能你要准备P14的固件。我都放在了文章最后的链接里面
56+
2. lsi2208fixer那个镜像里面包含了所有的工具,但是问题就是分区太小了一点。我选择直接复制里面的文件到FullUSB镜像
57+
58+
镜像直接dd即可:
59+
60+
```bash
61+
sudo dd if=FD13FULL.img of=/dev/sda bs=1M
62+
```
63+
64+
开个文件夹,正常挂载文件系统即可,不需要额外参数。文件我是开了个文件夹直接放在根目录。
65+
66+
### FreeDOS指令快速入门
67+
68+
```bash
69+
dir
70+
cd
71+
mkdir
72+
type # Same as cat
73+
more
74+
# > < 这些管道符都是可以正常使用的
75+
# 调用程序直接输入名字即可
76+
# 可以用tab补全
77+
# 有些时候程序名字太长会被缩写,要留意下输出
78+
```
79+
80+
### dos/16M error: [40] not enough available extended memory (XMIN)
81+
82+
这个问题在我的机器上遇到了,找了一圈看到了这个:
83+
84+
> https://forums.unraid.net/topic/12114-lsi-controller-fw-updates-irit-modes/page/63/
85+
> Pulling a stick did nothing, that still left me with 4GB in the PC. I couldn't get around this no matter what I tried. I ultimately had to replaced DOS4GW.EXE with [DOS/32A a more recent DOS Extender](http://dos32a.narechk.net/index_en.html) which didn't have a problem with what I guess is TOO MUCH ram. I just dumped everything from the extract binw directory into the root of my USB drive and renamed DOS32A.EXE to DOS4GW.EXE and the DOS parts worked.
86+
87+
拔内存我留4G也没有用,和这个人症状一样。之前在服务器256G都能跑起来,让我很困惑(我换PC的原因是因为服务器重启很慢而且很吵)。但是他里面说道这个Extender确实解决了问题:先[下载这个extender](https://dos32a.narechk.net/content/download.html),然后把里面文件解包全部放到和工具一个目录下,再把`DOS32A.EXE`改名成`DOS4GW.EXE`,问题解决。字符串搜索了一下,`megarec`里面确实提到了这个EXE,有点意思。
88+
89+
## 第一步,清Flash
90+
91+
### 先看看设备在不在
92+
93+
```bash
94+
megarec -adplist
95+
```
96+
97+
### 备份一下原本的固件
98+
99+
备份结果会在当前目录产生
100+
101+
```bash
102+
megarec -readsbr 0 smc2208.sbr
103+
megarec -readspd 0 smc2208.spd
104+
megacli -adpallinfo -a0 > allinfo.txt
105+
```
106+
107+
`allinfo.txt`包含了SAS Address,记得存留
108+
109+
### 刷Flash
110+
111+
```bash
112+
megarec -writesbr 0 sbrempty.bin
113+
megarec -cleanflash 0
114+
```
115+
116+
如果没有报错,重启后进入下一步
117+
118+
## Cross Flashing
119+
120+
在这里我遇到了个奇怪的问题,之前我是用服务器直接刷的,DOS里面`SAS2Flash`是可以看得到卡,但是换到PC就找不到了,所以我用了`sas2flash.efi`
121+
122+
如果你遇到类似的问题,需要进入`EFI Shell`来处理这个问题,目前的主板一般都会内置一个Shell,所以不需要额外下载EFI执行文件。下面是一些常用的指令:
123+
124+
```bash
125+
map # 查看所有的映射
126+
# efi需要FAT
127+
fs0: # 切换到对应的文件系统
128+
# 直接看fs开头的找你的U盘
129+
cd
130+
# 程序执行直接文件名即可
131+
```
132+
133+
### 列出设备
134+
135+
```bash
136+
sas2flash -list
137+
```
138+
139+
### 刷写固件
140+
141+
```bash
142+
sas2flash -o -f 9207-8.bin -b mptsas2.rom
143+
```
144+
145+
如果你不需要选项,可以忽略`-b`的rom部分,这样开机就不会进bios,速度快一点。
146+
147+
#### 其他选项
148+
149+
`sas2flash`其实有很多清理模式:
150+
151+
```bash
152+
sas2flsh -o -e 6
153+
```
154+
155+
会清理rom和固件,但是会保留基本信息,例如SASa。`7`就是清除所有信息
156+
157+
### 写回SASa
158+
159+
```bash
160+
sas2flash -o -sasadd 50030480195exxxx
161+
```
162+
163+
## 后续
164+
165+
刷完以后,卡上的蜂鸣器就开始疯狂叫,吵的不行。我不得已先贴了个胶带上去降低音量。原文中评论有人说道一样的卡型号也遇到了类似的问题,虽然卡可以用但是警报是关不掉的。所以他最后选择直接把哪个蜂鸣器取下来。
166+
167+
我这里一开始刷完也是可以正常启动的,如果刷了rom甚至是可以看到卡型号和控制器型号正常显示了。但是一旦真正接入了硬盘以后,rom就会在开机的时候卡住。整机报`PCI Bus Error`。不刷rom可以正常进系统,但是会提示`mptsas error`。反正横竖认不出来。在当时赶时间,所以直接下单了一块刷好的`HP H220`先装上发了,但是卡在这个地方丝毫没有头绪。看来这还真的是YMMW?
168+
169+
那先试试看能不能恢复固件把,事实证明确实是可以恢复回去的。
170+
171+
## 恢复固件
172+
173+
```bash
174+
megarec -cleanflash 0
175+
(reboot)
176+
megarec -writesbr 0 smc2208.sbr # 之前备份的
177+
megarec -m0flash 0 2208_16.rom # 在恢复工具里面有 (this is the rom from the LSI recovery ROM thread linked above)
178+
```
179+
180+
### 写回SASa
181+
182+
```bash
183+
megaoem -AdpSetSASA 50030480195exxxx -a0
184+
```
185+
186+
## 最后的最后
187+
188+
大家记得一定手里要有多几块U盘,来回刷系统测试真的是搞心态。还有就是少碰HBA:)真的兔子洞
189+
190+
### 所有用到的固件/工具文件
191+
192+
https://github.com/HomeofNever/Blog/tree/master/pages/_assets/file/lsi-9266-8i-to-it-mode
193+
194+
### 其他相关资料
195+
196+
> https://forums.serverbuilds.net/t/flashing-sas2208-to-it-mode-when-sas2flsh-does-not-detect-it/2357
197+
198+
### 用到的资源下载链接
199+
200+
> https://forums.laptopvideo2go.com/topic/29059-sas2008-lsi92409211-firmware-files/

0 commit comments

Comments
 (0)