- BIOSのクリーンアップとは
SPIチップ(EEPROM/不揮発性メモリ)に記憶されている BIOS(最近の PCは UEFI BIOS)は、電源管理などを担うコプロセッサ(小型ワンチップマイコン)のプログラムやデータ、メインCPU の型番毎に異なる Microcode、メインCPUなどに搭載されているグラフィックプロセッサのファームウェア(F/W)、マザボに搭載されているチップセットのF/W、さらには BIOS自身をアップデート/ダウングレードするために書き換えたり、(UEFI)BIOSの設定を行うためのプログラムや起動中に書き込まれる一部のデータなどが含まれる。
これらの元になるコードは Intel/AMDなどの CPU/Chipsetメーカーから PC(マザーボード)メーカーに供給されるが、その PCメーカーはベースとなる AMI/Award などの 互換BIOSに対して、搭載する CPU/チップセットの種類や ストレージの種類や数、I/Oポートの種類や数などマザボの設計に応じて編集して SPIチップに書き込む。
また、工場で SPIチップに書き込まれた後に実際に電源投入されて BIOSが実行されると、その状態に応じて BIOS内の一部のデータが書き換えられる。
BIOSのクリーンアップとは、<私の理解では> PC(マザーボード)メーカーが独自に編集して書き込んだデータや出荷後に書き換えられたデータなどを極力 Intelが供給した初期状態のコードに戻す処理のこと。
今回の Sleep不具合は、同じチップセットなどを用いている他のメーカーのマザボ あるいは ASRockの他のマザボであっても発生していない(と思われる)ことから、クリーンアップして Intel謹製のコードに近づければ発生しなくなるという(一縷の)望みがある。
なお、私の作業環境については一つ前のページの
ここを参照。
- チップセット Platform/バージョンの把握と対応ツールのダウンロード
前のページを参照して、
アップデートするマザボのChipset Platform/バージョン等を調べそれに対応し かつ最新の
Intel CSME System Tool と
Intel CSME Firmware Repository をダウンロードする。
例として今回私がクリーンアップしようとする BIOSは、PC工房ブランドの 「ASRock B360M」とシルク印刷されたマザボからダンプしたファイル。なお ダンプする前に
このページで説明した PMC F/Wのアップデートを行っているので購入時のままのものとは CSME/PMCのマイナーバージョンは異なっている。
この BIOSを ME Analyzer(MEA.exe)に D&Dすると図-1のような コマンド画面になるので Option(s): は空のままでEnterキーを押す。
ME Analyzerによる解析が終わると 図-2 のような画面になるので、赤線部分の情報(Version / SKU / Chip set)に基づいてツールをダウンロードしたり以下で使用するファイルを選択する。
また「File System State」が 「Initialized」になっていることを確認する。 マザボメーカーの Webページからダウンロードしたアップグレード用の BIOSファイルは一度もターゲットシステムで書き換えられていないので「Configured」となっていて、作業途中でエラーとなる。
現在のダウンロードリンクは
ここの
「C2. Intel (CS)ME System Tools」にあるが、
「CSME System Tools vXX.XX rYY - (2020-12-30)」 などとなっている名前の 「XX.XX」は 図-2 の BIOSバージョンと同じものを選ぶ(のだと思う)。
B360M の場合は 図-2 の情報から 「CSME System Tools v12 r30」と「Intel CSME 12.0 Firmware Repository r25」を選択した。
また前のページで説明した ME Analyzerも使用するので、Virus対策なども参照のこと。
- 解凍と該当ファイルの選択
上記ダウンロードリンク先には、Intelチップの関連の F/Wや ツール関連の一連のファイルが沢山あって選択に迷うが、ダウンロードしたファイルを解凍した中にも多くのファイルがあるので、
上記で調べたバージョンなどに対応した必要なファイルを選択する。
ダウンロードしたらそれぞれの圧縮ファイルを解凍する。ここで使用する一連のファイルの解凍には rar圧縮の解凍ツール(7z など)が必要になる。
CSME System Tools からは、fit.exe / MEInfoWin64.exe / FWUpdLcl64.exe / FPTW64.exe / MEManufWin64.exe / cctWin.exe などの実行ファイルやその実行に必要な dllなどの関連ファイルが解凍できる(それぞれ Win64bit/32bit/linux版などが含まれている)。
「Intel CSME 12.0 Firmware Repository r25」には図のように 12.0.0~12.0.71 の初期~最新バージョンの CON/SLM/COR とその H/LP のチップセットの全ての ファームウェアデータが揃っている。今回は上記 ME Analyzer の解析結果から最新バージョン 1681 のCON(コンシュマー) H である「12.0.71.1681_CON_H_BA_PRD_EXTR.bin」を選択した。(このファイルはこの下で「MESubPartition.bin」とリネームして使う。)
- FITツールの実行
A. System Toolsの、”\Flash Image Tool\win32”サブフォルダー中に fit.exe があるのでそれを実行して、表示された ウインドウに 改造するダンプした BIOSファイルを D&Dでロードする。
解析が終わったらメニューの「Build > Build Settings」をクリックする。
B. 「Build Settings」というウインドウがポップアップするので、その中の「image Build Settings」中の「Generate Intermediate Files」で「No」を選択し、他のすべての設定はそのままにして、「Close」をクリックして「Build Settings 」ウインドウを閉じる。
C. 親ウインドウに戻るので "File > Save As" に移動し、構成済 xmlファイル(この場合は「config.xml」という名前をつけて)を FITツールの実行フォルダー配下のBIOSファイル名(図の場合は \b360m_10 )のついたサブフォルダーに「Save」をクリックして保存し FITツールを一旦閉じる。
- Firmware Repository ファイルへの置換
ここまでの作業で FITツールの実行ファイルフォルダーに使用したBIOSファイル名のフォルダーが生成されて、更にその中の「Decomp」サブフォルダー(私の場合は \Flash Image Tool\WIN32\b360m_10\Decomp )に「BIOS Region.bin」、「CSE Region.bin」、「Desctipter Region.bin」、「OemBinary.bin」など、多数のファイル(BIOSリージョン、フラッシュ記述子、OEMリージョンなど)が生成されている。
そこに上記 3.項で選択した Firmware Repository ファイルをコピーして「MESubPartition.bin」とリネームする。
こうすることで、この下の作業でこの Intelが配布したリポジトリファイルに上記で生成された 「config.xml」ファイルに基づいて、元のダンプされた BIOSから抽出した各種構成ファイルが適正な位置に埋め込まれる。
- FITツールの再実行
FIT.exe を再実行して、「File > Open」で上の 4.- C で保存した「config.xml」を開く。
メニューの「Build > Build Image」をクリックして BIOSイメージをビルドする。
( FITツールは 4.の中でロードしたダンプ BIOSを解析し、各領域中の構成ファイルや Dataの Offsetや Sizeなどの構成情報を 「Config.xml」ファイルに記録するとともに、各構成要素を「Decomp」フォルダーに OemBinary.bin / BIOS Region.bin / EcRegionPointer.bin などとして抽出・保存する。 CSMEリージョン中の各構成ファイルと ダウンロードした 「Intel CSME 12.0 Firmware Repository r25」中からリネーム&コピーした「MESubPartition.bin」ファイルを読み込んだ「config.xml」に基づいてクリーンアップした BIOSを再構成しているものと思われる。)
私の場合、ここで図のような情報が表示されたが そのまま「Yes」をクリックして進んだ。
( FITツールの画面で「Platform Protection」中の「Boot Guard Profile Configration」を参照すると
Boot Guard Profile 0 - Legacy is for platforms that do not wish to enable Boot Guard boot block verification or measurement protection.
When manufacture is completed, this value is burned into an FPF, and is permanent.
This setting is only configurable when OEM signing is enabled( See PlatformIntegrity/ OemPublickKeyHash.)
となっていて、致命的な問題ではなさそうだと判断。)
最終的にウインドウの下の進行状況表示ペインに 図のような処理結果の情報が表示される。
下線部の通り、FIT実行フォルダーに「outimage.bin」というクリーンアップされた BIOS出力ファイル(SPIライターでアップデートできる BIOSファイル全体)が出力されたと分かる。(FITツールの出力ファイル名はいつも同じになるので、分かりやすい名前に変更するか、アップデート用フォルダーに移動しておくのが吉)
この他同じフォルダーに「cse_image_FWU_Base.bin」「cse_image_FWU_Full.bin」という2つのファイルも出力されている。(多分 UEFIがファームウェアアップデート機能を有していればそこからこのファイルを使って CSME領域だけのアップデートもできるのだと思うが、B360Mにはそうした機能はないのでこちらのファイルは使わなかった。)
- SPIライターでアップデート
上記で出力された「
outimage.bin」を使って CH341A などの SPIライターとそのユーティリティを使って マザボの SPIチップに対して書き込みを行う。
SPIライターの使い方に関しては
別途。
- 問題の Sleep不具合は?
かなり苦労&紆余曲折した Sleep不具合だが、苦労の甲斐あって ここでの作業(ME領域のクリーンアップ)によって目出度く解決した。
処理した BIOSをアップデートして 2ヶ月近く経つが、全く再発しなくなったので、自信を持って「解決」と宣言!
>続き その5:ビデオ関連(GOP-VBT/VBIOS) 更新