LSI SAS 9211-8iのファームウェアを書き換える

2020年2月21日自作PCFreeNAS,コンピューター,レビュー

新しくFreeNASでファイルサーバーをつくるにあたって、SASのHBAが必要になったので、LSIロジックのSAS 9211-8iを買ってみました。

この製品は、出荷時にMPT BIOSとIRファーム(RAID用ファーム)が入っているのですが、FreeNASのストレージ用としてはどちらも不要なので消して、ITファームウェアを入れたいと思います。

ちなみに、「LSIロジック」という会社は「Avago Technology」に買収され、そのAvagoはBloadcomを買収して「Bloadcom」という名前を残したようなので、今はBloadcom製と言うのが正しいようです。

LSI SAS 9211-8iとは

このボードは2009年頃に発売された古い製品で、既に販売終了しています。ただ、FreeNASに使うボードとしては鉄板のようで、情報がたくさんありますし、まだ在庫が流通しているようです。IBMやDellのOEM版もあるみたい。私はAmazonマケプレで10,399円で購入しました。(2020/2/13時点)

LSIロジック HBA SAS 9211-8i – LSI00194 / LSI PCIEx8(Gen2.0) SATA/SAS 6Gb/s 内部8ポート
MiniSAS SFF-8087 to MiniSAS SFF-8087 ケーブル

製品情報リンク

メーカーのBloadcomの製品ページはなくなってしまっているようです。サイト内検索をすると、ファームウェアなどをダウンロードすることはできます。
サイト内検索:https://jp.broadcom.com/site-search?q=LSI SAS 9211-8i
製品情報PDF:https://docs.broadcom.com/docs/12353333

日本の代理店のページもリンクしておきます。
LSI SAS 92xxシリーズ | Avago Technologies HBAシリーズ | 株式会社アスク
LSI SAS 9211系 HBA (アームズ)

ついでに発売当時の記事はこちらです。
LSIロジック、2倍に高速化したSAS 6Gbpsホストバスアダプタ – PC Watch

製品仕様

製品の仕様はこんな感じです(情報は上記サイトから)。ヒートシンクのついたファンレスのボードですが、割と発熱する(ロープロブラケットまで熱が伝わってくる)ため、ケースのエアフローには気を配った方が良さそうです。

製品名LSI SAS 9211-8i
IOコントローラLSI SAS2008
形状ロープロファイル対応
(出荷時、フルハイトのブラケットが装着済みで、
同梱のロープロファイルブラケットに変更可能)
対応バスPCI Express 2.0 x8
内部コネクタMini-SAS(SFF8087)×2
消費電力通常時8.04W、最大14.63W

ロープロファイルブラケットも同梱されていて、簡単に付け替えられます。

やりたいこと

今回は、FreeNASのストレージ用HDDをつなぐためにこの製品を使います。本製品はハードウェアRAID機能を持ったものなのですが、FreeNASのRAIDはHDDを直接制御できる環境の方が不都合がないそうなので、RAID機能を持たないファームウェアに書き換えます。また、起動時間を短縮するため、ボードのBIOSを削除します。

IRファーム、ITファームとは

本ボードには、出荷時にIRファームウェア(Integrated RAIDファームウェア)というものが入っています。これはハードウェアRAID機能を持ったファームウェアです。

対して、ITファームウェア(Initiator targetファームウェア)というファームも存在し、こちらはRAID機能を持たないHBAボードとして機能させるためのファームウェアです。JBOD、non RAIDなどとも呼ばれるようです。

FreeNASのストレージ接続用としては、RAID機能を持たないHBAとして動いてくれた方が良いですので、ファーム書き換えソフトを使ってITファームを入れます。

MPT BIOSとは

このボードには、ファームウェアとは別にMPT BIOSというものも入っています。ITファームの場合、MPT BIOSはこれらの働きをしてくれます(情報元)。

  • SASトポロジーを表示してくれる
  • SASボードに接続したストレージからOSを起動できるよう、フックしてくれる
  • スタッガードスピンアップ(順番にHDDの電源を入れてくれる機能)の設定ができる

今回、ブート用のSSDはマザーボードのSATAポートを使って、このボードからはストレージ用HDDしかつなぎませんので、MPT BIOSは不要です。

起動時間を短縮するため、今回はこのMPT BIOSも削除してしまいます。

ツールやファームを用意する

この作業では、EFIシェルなどの実行環境と書き換えソフト、ファームウェアの3つが必要です。

今回はそれぞれ、EFIシェル、sas2flash、P20 ITファームウェアを使います。

EFIシェル

Sas2flashが動く実行環境としては、Windows、Linux、DOS環境、EFIシェルなどがあります。また、FreeNASには最初からsas2flashが入っています。

どれでも大丈夫なのだろうと思いますが、「DOSやEFIで行っている例が多い」、「最低限のハードで行いたい」と思って、私はEFIシェルで行うことにしました。(FreeNASでの書き換えは試していませんが、sas2flash -listは正しく動きました)

今回は、Arch Linuxのインストールディスクを使います。Arch Linux JP Project – ダウンロードからインストール用のISOファイルを落としてきます。

こちらをRufusでUSBメモリに焼きます。ISOモードで焼くかddモードで焼くか聞かれますが、後ほどUSBメモリにファームなども保存しますので、ISOモードで焼きます。

P20 ITファームウェア

Bloadcomのウェブサイトからファームウェアをダウンロードします。製品情報ページはないですが、サイト内検索をするとダウンロードリンクが見つけられます。最新バージョンはP20で、該当するものとして「9211_8i_Package_P20_IR_IT_FW_BIOS_for_MSDOS_Windows」と「9211-8i_Package_P20_IR_IT_Firmware_BIOS_for_MSDOS_Windows」が出てきます。両者の違いはよく分かりませんが、より新しい前者をダウンロードします。

ダウンロードしたら解凍して、Firmware\HBA_9211_8i_ITフォルダにある2118it.binを、Arch LinuxインストールUSBメモリの直下にコピーします。

MPT BIOSも必要な方は、sasbios_relフォルダからmptsas2.romもUSBメモリにコピーします。

sas2flash

ファームウェア書き換えソフトのsas2flashを用意します。今回はEFIシェルを使いますので、EFIシェルで動くsas2flashが必要です。こちらからファイルをダウンロードします。

ZIPファイルを解凍して、sas2flash_efi_ebc_relフォルダにあるsas2flash.efiを、Arch LinuxインストールUSBメモリの直下にコピーします。

(2020/08/05追記:よくよく見返したら、sas2flashの用意の説明が抜けていましたので、加筆しました)

ファームを書き換える

HBAのファームを書き換えます。ここからは、失敗したり中断したりすると直せなくなることがあるようですので、コマンドの意味を理解した上で、自己責任で実行するようにしてください(最後まで読んでからの実行をおすすめします)。sas2flashコマンドのリファレンスはこちらからダウンロードできます。
SAS2Flash Utility Quick Reference Guide Version2.1

さて、ファーム書き換えをしていきます。

書き換えの際、不測の事態を避けるため、9211-8i以外の関係ないボードやストレージは外しておきます。

ファーム(とBIOS)を保存したArch LinuxインストールUSBを接続して起動します。起動OS選択画面で上下キーを押して、UEFI Shell V1を選択します。5秒以内に上下キーを押さないと、そのままArch Linuxが起動してしまいますので注意しましょう。また、私の環境ではUEFI Shell V2を選択しても動かなかった(黒画面のまま進まない)ので、V1を使用しました。V2が動く人は、それでも大丈夫だと思います。

UEFI Shell V1を選択します

UEFI Shellが起動すると、このような画面になります。fs0が接続したUSBメモリです。

UEFI Shell 起動直後の画面

プロンプトが表示されていますので、fs0に移動します。

Shell> fs0:
USBメモリへ移動します

Linuxなどと同じく、lsコマンドでファイル一覧が表示されます。

fs0:\> ls
lsでファイル一覧が見れます

挿したHBAボードが認識されているか確認します。

fs0:\> sas2flash.efi -listall
HBAボードが認識されているか確認します

SAS2008コントローラーを搭載したボードが一つだけ認識されています。一つも表示されない場合は、ボードがうまくささっていないなどの可能性があります。

また、複数検出された場合は、HBAボード以外にもLSIのコントローラーが使われている可能性があります(SSDやマザーボードに搭載されている場合があるらしい)。その場合は、この後の-cオプションを正しく指定してください。そうしないと、誤ったコントローラーのファームを消してしまうかもしれません。

念のため-listオプションでこのボードの詳細を表示してみます。-c 0は、上図のゼロ番目のデバイスを選択するオプションです。

fs0:\> sas2flash.efi -c 0 -list
ボードの詳細を表示してみます

Firmware Product IDに「IR」と書かれており、IRファームが入っていることが分かります。また、BIOS Versionに「7.27」とあり、BIOSも入っています。

念のため、SAS Addressがシールに書かれている値と一致しているか見てみて、今書き換えようとしているボードかどうか確認します。

SAS Addressがシールに書かれている値と同じか確認します

次に、フラッシュ領域を消去します。-oは、高度なコマンドを実行するためのオプションで、-e 6は製造用エリア以外すべて削除するオプションです。

fs0:\> sas2flash.efi -c 0 -o -e 6
フラッシュ領域を消去します

消去に成功したと表示されたらOKです。ちなみに、ここで-listを実行すると、「ファームウェアのダウンロードが必要」という表示が出てきます。

「ファームウェアのダウンロードが必要」表示

次に、新しいファームウェアを書き込みます。BIOSも書き込む人は、このときに-bオプションも使います。

fs0:\> sas2flash.efi -c 0 -o -f 2118it.bin
新しいファームウェアを書き込みます

しばらくして成功したと表示されれば完了です。

確認のため、-listallしてみます。

fs0:\> sas2flash.efi -listall
確認のため、-listallしてみます

また、-listをしてみます。

fs0:\> sas2flash.efi -c 0 -list
-listをしてみます

Firmware Product IDに「IT」と表示されており、ITファームウェアに書き換えられたことが分かります。また、BIOS Versionが「N/A」で、BIOSの削除もできました。

以上でファームウェアの書き換えは完了です。ストレージを接続して認識するか確認しましょう。

参考リンク

この記事は、こちらのページを参考にさせていただきました。

Detailed newcomers’ guide to crossflashing LSI 9211/9300/9305/9311 HBA and variants | iXsystems Community
https://www.ixsystems.com/community/resources/detailed-newcomers-guide-to-crossflashing-lsi-9211-9300-9305-9311-hba-and-variants.54/
こちらのサイトが一番詳しく説明されていると思います。megarecコマンドを使ったフラッシュ消去、いったんP7ファームを入れるなどを推奨しているようですが、私は前述の通りで問題なく書き換えられました。

LSI SAS 9211-8iをIT Firmwareに書き換える – 気まぐれ
https://blog.onodai.com/posts/2017-09-20-wed

宅内サーバリプレース(ハードウェア編)5: LSI logic 9211-8i| HaioH:変遷備忘録
https://silver0480.blog.fc2.com/blog-entry-388.html

Tutorial: Updating IBM M1015/LSI 9211-8i Firmware on UEFI Systems | ServeTheHome and ServeThe.Biz Forums
https://forums.servethehome.com/index.php?threads/tutorial-updating-ibm-m1015-lsi-9211-8i-firmware-on-uefi-systems.11462/
こちらのサイトによると、P20ファームにはいくつかのリビジョンがあって、初版はバグがあったようです。ただ、20.00.04以降であれば良いようです。(上記最後の図のFirmware Version欄)

うまくいかなかったこと

UEFI Shellを起動するところで大分つまずきました。

UEFI Shellについて調べると、こちらなどからシェルをダウンロードして/efi/boot/か/boot/efi/に保存して起動する、という記事を見かけたので試していたのですが、どうも起動できませんでした。

マザーボードはASUSのROG STRIX B365-G Gamingを使っているのですが、UEFI画面から「EFI Shellを起動」を選択しても「セキュアブートオプションを無効にしてください」と出てきてしまいます。

「セキュアブートオプションを無効にしてください」エラー

その説明の通り、セキュアブートの無効化(OSタイプ=非UEFIモード)やセキュアブートキーの削除をしてもうまくいきませんでした。

セキュアブートの無効化
セキュアブートキーの削除

ごにょごにょやっていて起動できたと思っても、黒い画面のまま進まなくなってしまうこともありました。(UEFI Shell V2を起動しようとしていたのかもしれません)

結局原因が分からず、上記のようにArch Linuxのインストールディスクを使用しました。