🔨

LSI の RAID カード(9341-8i)を HBA にする

2024/02/23に公開

LSI の RAID カードに HBA(ホストバスアダプタ)としてのファームウェアを焼くことで、HBAとして活用できるようにする。
今回は MegaRAID 9341-8i に 9300-8i のファームウェアを焼くが、たぶん他の型番の RAID カードにも応用できそう。

概要

LSI の HBA(ホストバスアダプタ)用ファームウェアには IT(Initiator Target)とIR(Integrated RAID)の 2 種類が存在する。前者のファームウェアを焼くことで、ハードウェア RAID 機能は使用されず、そのままパススルーで接続しているディスクに OS からアクセスできるようになる。
記憶域プールや ZFS を用いて複数のディスクを束ねた NAS などのストレージを作るとき際にはハードウェア RAID を使用せず、接続しているディスクがそのままパススルーで OS から見えるほうが都合が良いため、IT ファームウェアを使用したい。
RAID カードであっても、同じコントローラを搭載している HBA 用ファームウェアを焼くことで HBA として使用できるものがある。今回は RAID カード 9341-8i に 9300-8i の IT ファームウェアを焼くことで HBA として使用できるようにする。
搭載しているコントローラや、同コントローラの HBA は ServeTheHome のフォーラム で調べる。

DOS か EFI か

後ほど使用する sas3flash は DOS 版と EFI 版が提供されている。どちらを使用するかはマザーボードによって変わる。
かなり昔のマザーボードで EFI に対応していなければ DOS 版一択。EFI に対応したマザーボードでも、DOS 版ならファームウェアに同梱されている sas3flash を使えばいいし、EFI シェルを用意する必要もなくて楽ではある。
しかし EFI に対応しているマザーボードとDOS 版の組み合わせで sas3flash の操作時に ERROR: Failed to intialize PAL. というエラーが出て失敗する場合は EFI 版を使用しなければならない。
今回は Haswell 世代用マザーを使用しており、同様のエラーが出たため EFI 版を用いる手順を記す。

必要なものを用意する

USB メモリ

32MB あれば十分。作業の過程でフォーマットするので必要なファイルがあれば事前に退避のこと。

Rufus

USB メモリに起動可能な OS イメージや DOS を書き込んツール。公式サイト から入手できる。

EFI シェル

UEFI BIOS 上で動作するコマンドプロンプトのようなツール。GitHub から入手できる。

megarec(MegaRAID HWR Contoller Recovery tool)

megarec.exe。カードの flash 領域を読み書きしたりクリアしたりするツール。BROADCOM が直接公開しているものは見当たらず、詳細不明なアーカイブが紹介されていることが多いが、HPE のサポートセンター から入手できる。EFI 版はなさそう。

sas3flash(Avago Technologies SAS3 Flash Utility)

sas3flash.efi。カードにファームウェアや BIOS を書き込むツール。BROADCOM のナレッジベース から入手できる。
12Gb/s のカードには sas3flash.efi を、6Gb/s のカードには sas2flash.efi を使う。

SAS 9300-8i のファームウェア

これをカードに書き込むことで HBA として動作するようになる。BROADCOM のサポート から入手できる。探しにくいがこれ

SAS 9300-8i の MPT BIOS

カードに以下の機能を追加するもの。ファームウェアに同梱されている。

  • HBA カードに接続されたディスクからの OS ブートサポート
  • スタッガードスピンアップ[1]のサポート

必須ではないのでこれらの機能が不要であれば入れなくてよい。むしろ入れないほうが起動が速くなるらしい。

ファームウェアを書き換える

準備

Rufus を使用して USB メモリに FreeDOS を焼く。
megarec を使用するために DOS を起動できるようにするため。

rufus

さらにそのほかのファイルを USB メモリにコピーする。

usb

リカバリーモードジャンパーをショートさせる

SFF-8643 端子の近くに JP12 というピンがある。
これをショートして、カードをリカバリーモードにする。

フラッシュのクリア

USB メモリに書き込んだ FreeDOS を起動し、以下のコマンドを実行して、カード上のフラッシュメモリをクリアする。

C:\> MEGAREC.EXE -cleanflash 0
実行結果
C:\>MEGAREC.EXE -cleanflash 0
DOS/4GW Protected Mode Run-time Version 1.97
Copyright (c) Rational Systems, Inc. 1990-1994

MegaRAID HWR Contoller Recovery tool. Version 01.02-008 Feb 20, 2012
Copyright (c) 2006-2010 LSI Corp.
Supports 1078 controller and its Successors.
Flash Signature Error. Trying to clear it.....
 Chip is in FUSION mode
 Step1: Host diag reg reads 1e2
Step 2: Host diag reg reads 1a2
Using BARZ mem space.

Erasing Flash Chip (16 MB)....
 Completed: 100%

Success

ファームウェアの書き込み

次に、再起動して今度は EFI シェルを起動する。fs0: と入力し Enter キーを押して使用するファイルシステムを切り替える。

以下のコマンドを実行してファームウェアを書き込む。

sas3flash.efi -o -f SAS9300_8i_IT.bin

ここでは一旦ファームウェアだけを書き込む。Adapter Reset Failed! と出て失敗したように見える[2]が、Firmware Download Successful. と出ていれば一旦 OK。
MPT BIOS の書き込みを後回しにするのも、このエラーが出て進めないため。

実行結果
Shell> fs0:
FS0:\> sas3flash.efi -o -f SAS9300_8i_IT.bin
Avago Technologies SAS3 Flash Utility
Version 15.00.00.00 (2016.11.17)
Copyright 2008-2016 Avago Technologies. All rights reserved.

    Advanced Mode Set

    Adapter Selected is a Avago SAS: SAS3008 (C0)

    Executing Operation: Flash Firmware Image

        Firmware Image has a Valid Checksum.
        Firmware Version 16.00.10.00
        Firmware Image compatible with Controller.
        
        Valid NVDATA Image found.
        NVDATA Major Version 0E.01
        Checking for a compatible NVData image...

        NVDATA Device ID and Chip Revision match verified.
        Valid Initialization Image verified.
        Valid BootLoader Image verified.

        Chip is in RESET state. Attempting Host Boot...
        Firmware Host Boot Successful.

        Writing Current Mfg Page 2 Settings to NVRAM.
        Updated Mfg Page 2.

        Resetting Adapter...
        Adapter Successfully Reset.

        Chip is in RESET state. Performing Host Boot...
        Firmware Host Boot Successful.

        Beginning Firmware Download...
        Firmware Download Successful.

        Resetting Adapter...
        Adapter Reset Failed!

    Due to error remaining commands will not be executed.
    Unable to Process Commands.
    Exiting SAS3Flash.

リカバリーモードジャンパーのショートを外す

一旦電源を切る。
JP12 ピンのショートを外し、リカバリーモードを終了する。

MPT BIOS の書き込み(オプション)

再度 EFI シェルを起動し、ファームウェアの書き込み時と同様にファイルシステムを選択した後、以下のコマンドを実行して MPT BIOS を書き込む。上記の通り追加機能が要らなければ省略してもよい。

sas3flash.efi -o -f SAS9300_8i_IT.bin -b mptsas3.rom -b mpt3x64.rom
実行結果
Shell> fs0:
FS0:\> sas3flash.efi -o -f SAS9300_8i_IT.bin -b mptsas3.rom -b mpt3x64.rom
Avago Technologies SAS3 Flash Utility
Version 15.00.00.00 (2016.11.17)
Copyright 2008-2016 Avago Technologies. All rights reserved.

    Advanced Mode Set

    Adapter Selected is a Avago SAS: SAS3008 (C0)

    Executing Operation: Flash Firmware Image

        Firmware Image has a Valid Checksum.
        Firmware Version 16.00.10.00
        Firmware Image compatible with Controller.

        Valid NVDATA Image found.
        NVDATA Major Version 0E.01
        Checking for a compatible NVData image...

        NVDATA Device ID and Chip Revision match verified.
        NVDATA SubSystem Vendor and SubSystem Device ID match verified.
        NVDATA Versions Compatible.
        Valid Initialization Image verified.
        Valid BootLoader Image verified.

        Beginning Firmware Download...
        Firmware Download Successful.

        Verifying Download...

        Firmware Flash Successful.

        Resetting Adapter...
        Adapter Successfully Reset.

        NVDATA Version 0E.01.00.07
    Executing Operation: Flash BIOS Image

        Validating BIOS Image...

        BIOS Header Signature is Valid

        BIOS Image has a Valid Checksum.

        BIOS PCI Structure Signature Valid.

        BIOS Image Compatible with the SAS Controller.

        Attempting to Flash BIOS Image...

        Verifying Download...

        Flash BIOS Image Successful.

    Executing Operation: Flash BIOS Image

        Validating BIOS Image...

        BIOS Header Signature is Valid

        BIOS Image has a Valid Checksum.

        BIOS PCI Structure Signature Valid.

        BIOS Image Compatible with the SAS Controller.

        Attempting to Flash BIOS Image...

        Verifying Download...

        Flash BIOS Image Successful.

    Finished Processing Commands Successfully.
    Exiting SAS3Flash.

SAS アドレスを書き込む

最後に以下のコマンドを実行して SAS アドレスを書き込む。SAS アドレスは、カードの裏面にある SAS ADDRESS 欄に書かれている 500605B で始まる 16 桁の 16 進数である。

sas3flash.efi -o -sasadd 500605bxxxxxxxxx
実行結果
FS0:\> sas3flash.efi -o -sasadd 500605b00e6d0b30
Avago Technologies SAS3 Flash Utility
Version 15.00.00.00 (2016.11.17)
Copyright 2008-2016 Avago Technologies. All rights reserved.

    Advanced Mode Set

    Adapter Selected is a Avago SAS: SAS3008 (C0)

    Executing Operation: Program SAS Address

    SAS Address Successfully Programmed!

    Resetting Adapter...
    Adapter Successfully Reset

    Finished Processing Commands Successfully.
    Exiting SAS3Flash.

めでたしめでたし

無事に MegaRAID 9341-8i に 9300-8i のファームウェアを焼くことで、HBA(ホストバスアダプタ)として活用できるようになった。OS 側からディスクも見えるし、CrystalDiskInfo を使用して SMART 情報を見ることもできた。

関連記事

脚注
  1. 時間差で HDD の電源を入れることで、起動時の電源への負荷を分散する機能 ↩︎

  2. リカバリーモードになっていてカードが再起動できないため ↩︎

Discussion