IBM ServeRAID M1215 (LSI Logic SAS9340-8i) をファーム書き換えでHBAにしてPCで利用する

普段は、DELL製品で固めているのですが、DELLRAIDカードは認定外のSAS HDDをBLOCKしてしまう場合があるので、DELL以外のSAS HBAが必要でした。

新品は高すぎるので中古で探したところ、HP製のLSI SAS 9212-4i などが多く出回っているのですがかなり古いものです。
偶然にも、SAS3(12Gbps)対応のIBM ServeRAID M1215 (LSI Logic SAS9340-8i) が安く手に入ったので早速取り付けてみたのですが、このカード、IBM(Lenovo)のサーバ以外では動作しないようです。安い訳です。

しかし、以前もDELLのPerc H310でやったようにLSIはファーム書き換えという手法がありますので、今回も備忘録的に手順を書いておきます。

まず、参考としたのは次のサイト。(英語です)
How to flash a LSI SAS 3008 HBA (e.g. IBM M1215) to IT mode

英語読める人は直接見た方が早いです。以下は補足です。

まず基礎知識としてLSIRAIDカードはITモード(HBA)と、IRモード(RAID)の2種類があります。最近はHDDが大容量すぎてRAIDが逆効果になってきているのと、Windows Storage SpacesやVMware vSANのようにRAIDが邪魔な場合もあり、HBAが最適なことが多いです。

今回もITモードでHBAにしてしまいます。
言うまでも無いですが、失敗するとカードが壊れるかもしれません。自己責任です。
参考サイトを簡単に補足していきます。

STEP1 必要なファイルを集めます。
 LSIはAvagoに買収されてBroadcomに社名が変わり、Avagoというブランドでカードを作っています。(ややこしい)
 SAS9300-8iのダウンロードサイトは、現在はこちら

参考サイトでは、最新バージョンがP13だったようですが、今回の作業時はP15でしたのでそちらを利用しています。
OSによってはP10が良いと書いてますが、Windows10であれば最新でも大丈夫でしょう。

  • Firmware から 9300_8i_Package_P15_IR_IT_FW_BIOS_for_MSDOS_Windows
  • Management Software and Tools から SAS3FLASH_P15

上記2つのファイルをダウンロードして、それぞれの中身から以下のファイルを集めます。

  • sas3flash.efi
  • SAS9300_8i_IT.bin
  • mptsas3.rom
  • mpt3x64.rom

今回は、DOSではなくUEFIによるファーム書き換えを利用しますのでuefiにあるefiファイルです。他の方法は試していません。(Windows10でLSIアプリから認識もされなかったので無理だと思います)
UEFI Shellを利用してアップデートするわけですが、UEFI Shellが別途必要となります。(これは書いてませんでしたし、知りませんでした)
こちらからx64版をダウンロードします。
https://github.com/tianocore/edk2/tree/master/EdkShellBinPkg/FullShell/X64

  • Shell_Full.efi

これら全部で5つのファイルをUSBに保存して、UEFIのブートメニューを表示、ファイルから実行するオプションで、Shell_Full.efiを起動することでShell画面になります。(実行する手法はPCによって違うと思われます。今回はDELL R420サーバを利用)

STEP2 アダプタの事前準備

写真にあるようにJ6ジャンパを短絡します。リセットするのに必要なようです。
あと、SAS Addressが書き換えで空欄になってしまうのでカードの該当部分を写メでもとって控えておくと作業が楽です。

STEP3 サーバを起動してアダプタをリセットする

先ほど述べたようにUEFI Shellを起動して作業を開始します。
Shellを起動するとfs0 fs1....といったようにUSBの一覧が出たりします。
> fs0:
といった感じで切り替えて
> ls
でファイル一覧を出して該当ドライブかどうかを確認してください。

sas3flash.efi -list

このコマンドで識別しているアダプタのリストを表示します。
私の環境ではSAS3008(C0)までしか表示されませんでした。
詳細が表示されるのであれば、これも写メをとると良いと言っていますね。(SAS Addressが表示されるため)

sas3flash.efi -f SAS9300_8i_IT.bin -noreset

このコマンドが何を意味するのかよくわかりませんが、そのまま実行!!
これは参考サイトどおりになりました。
キーボードレイアウトがUSになっていて(_)とかが打てなかったのですが、TABで補完ができるので切り抜けます!

うまく完了したら、サーバを停止して、J6ジャンパを外します。

STEP4 コントローラをフラッシュする

再度、UEFI Shellを起動して作業を続けます。
コントローラのファームを消すのかな?

sas3flash.efi -o -e 7

これは私の環境では結構長い表示になりましたが完了しました。
次に新しいファームを書き込みます。

sas3flash.efi -f SAS9300_8i_IT.bin -b mptsas3.rom -b mpt3x64.rom

これもTAB補完を駆使しましょう。TAB補完の挙動がUnix系と違いますね。
完了すれば書き換えは完了です。

sas3flash.efi -list

再度リスト表示を実行すると今度はちゃんと詳細まで表示されました。
モードも(IT)となっています。
しかしSAS Addressがすべて0になっているので最初に控えたアドレスに書き換えます。

sas3flash.efi -o -sasadd 50060XXXXXXXXXXXX

再度リスト表示するとアドレスがちゃんと書き換えられたことが確認できると思います。

これで完了です。

手元のPCに差し直して起動するとSAS3008-ITとコントローラが表示されるようになりました。
また、初期にはメニュー画面にも入れなかったのですが、Ctrl+Cでメニューに入ることができます。
Windows10でもHBA(SAS3008)として認識しています。

今回は試していませんが、IRモードにすることもできると思われます。
一度リセットできれば、他のLSIカードと手順は同じと思われますので探してみてください。

当初の目的であったDELL以外のSAS HDDもちゃんと認識され現在フォーマット中です。まぁ、12Gbps対応のHDDとか持っていないので性能なんてわからないんですけどね・・・。