Yafuflashなど通常のツールでのファームウェア更新に失敗してサーバーのBMCが文鎮化した時の救出方法です。開発中の製品で通常の方法ではまだファームがうまく更新できないなんて時にも実行します。
適用できるサーバ
ASPEED製のBMCを搭載しているサーバなら、どれでもいけると思います。サプライヤーはSuperMicro、Quantaなどいろいろありますね。readme.txt
に対応しているASPEED BMCのモデルが記載されています。
SOCFLASHの入手方法
SOCFLASHはサーバーのサプライヤーが提供するものを使うのが基本です。本家のASPEEDのダウンロードサイトでは登録デベロッパー限定となっています。登録用のリンクなど見当たらず、一般ユーザーが登録するのはハードルが高そうです。サプライヤーとASPEED以外にも、ググると第3者の共有もすぐに見つかりました。
使い方
DOS環境にブート可能なUSBメモリを作成します。Rufusというツールを利用すると簡単です。USBメモリにSOCFLASHとインストールしたいBMCファームをコピーします。
あとは、サーバーのブートモードをLegacy BIOSモードに変更して、USBメモリから起動して、下記を実行します。
C:\>socflash.efi if=rom.ima_enc option=cfr
if=
は入力ファイル名の指定。書き込みたいBMCファームを指定します。
option=
はオプション指定です。
readme.txt
に詳細が載っています。
+++ if=the update file
+++ of=the backup file
+++ option=f|c|2|r|d|x|l|i|m
++++ f: skip the comparision of flash data and force to update
++++ c: use chip erase instead of sector erase
++++ r: reset scratch
今回はサプライヤーから提供されたSOCFLASHがDOS用だけだったのでDOS環境にブート可能なUSBメモリを作成しましたが、SOCFLASHはDOS以外にも、bsd、inux、uefiシェル、windowsに対応しています。ほとんどのサーバーでUEFIシェルは標準装備ですし、uefiシェルはDOSよりもシェルとしての使い勝手が良いので、救出用としてはuefi版を使うのが一番良さそうですね。
注意
このSOCFLASHとは読んで字の如く、指定したファイルの内容をただ単にBMCに書き込むツールです。Yafuflashなどの通常方法でのファーム更新と違って、電子署名を検証して改竄されてないことを確認したりとか、機種適合性とかは一切確認しないのでご利用は自己責任で。