- GOP/VBIOS更新
Sleep不具合に端を発して BIOS更新・改造にハマってしまった。
端緒の Sleep不具合は
この前のページの ME領域のクリーンアップで目出度く解決したが、
改造に関して見つけた
ここやその中で触れられている
このページを読むうちに、どうせなら・・・・と思い始めて、当面<必要もない>のにビデオ出力関連のファームウェアである GOP VBT/VBIOSのバージョンも更新してみようと思った。
(このマザボの場合、顕在化した不具合は 「Sleepから復帰できず」だけだが、イベントビューアーに多量のエラーが記録される。古いデスクトップ機の ASUS P8Z68-M Pro ではほとんどエラーは出ない。もしかして BIOSの ビデオ・ストレージ・LANなどのモジュールを更新したらこれらのエラーは改善されるかも知れないという獏とした期待がある)
しかし、ビデオ関連のモジュールは microcodeなどと違い各ベンダーが色々手を加えられる余地があるらしく、Win-Raid.comによれば単純に Intelの配布する基本モジュールで更新することは出来ないらしい。
さらに問題の ASRock B360M マザボは どうやらかなりクセのある BIOSになっており、上記参照ページの標準的な方法では更新できないことがわかった。
特段不具合もないのに、普通なら無駄なことだと ここで止めるのだろうけど、性格柄「出来ないと言われると一層やりたくなる」損な性格が災いして 関連ページを読み漁り多大な時間を浪費した結果、最終的に更新に成功した(と思う)。
せっかく突き止めた方法なので自分メモとして & (いないとは思うが)万が一同じことを志す人の助けになればと具体的な方法をアップすることにした。
ここで書いたことは単に私の環境で確認したことであって、ほんの僅かでも異なる条件の場合には当てはまらないことも多くあります。
また私の勘違い・間違いもあるかもしれないので説明通り操作しても変換出来るとは限りません。
元より BIOS更新・改造は一つ間違えば PCが起動しなくなる(=粗大ゴミになる)可能性がある危険な作業です。
したがって参考にする場合も個人の責任と判断で行って下さい。
- Intel MM Tool の改造(日本語環境の場合に必要)
今回使う Intel MM Toolは Intelがマザーボードベンダーに対して 自社の CPUやチップセットを搭載したマザーボードを設計して製造・販売するために配布している
BIOSファイル編集ツールで、一般ユーザーに対しては公開していないようだ。
しかし今の時代、どこかのサイトにはそうしたツールがアップされており、私も mediafire.com server からダウンロードした。
しかしやっと見つけてダウンロードしたファイルを解凍して実行しても、一部の操作に必要なボタンが画面に表示されず満足には使えない状態だった。
不思議なことに、本家の Win-Raid.comには幾つもの MMToolの実行画面が掲載されているのに、それらは全て正常にボタンが表示されているので私のダウンロードしたファイルに問題あるようだ。
「MMTool button not display」などの Word検索を繰り返しても解決策が出てこなかったが、他のアプリではたまに起きる現象らしく、その原因は 日本語O/Sに添付されているフォントのサイズが USなど ASCII圏の O/Sとは異なることによる現象だと判明。(アプリの Windowのサイズがフォントのピクセルサイズ基準になっている?) その場合 "Resource Hacker"という別のツールを使ってフォントのサイズや種類を変更すればウインドウサイズやレイアウトが変わって表示されるようになることがわかった。
改造方法は Resorce Hacker に実行ファイルの MMtool.exe をロードして、「Dialog」「102: 1033」を展開する。
右側ペイン中の「FONT 8, "MS Sans Serif"」の部分をいくつか変更してみたが、「FONT 8, "Century"」あるいは「FONT 10, "MS Sans Serif"」などと変更すれば ウインドウサイズが変更されて表示されるようになる。
- その他の使用するツールとファイルの準備
- VBT・GOP OROMバージョンの確認と VBIOS更新
GOP VBTや VBIOS OROMを更新するには元の BIOSに含まれている CPU/チップセットが対応している世代やそれらのコードのバージョンを知る必要がある。
調べ方はいくつかあるが、本家の Win-Raid.comの説明によると まずマザボからダンプした BIOSファイルを MMTool にロードする。
(英文ページの説明にはないがこちらの方法でも構わないと思う。<
cloneVBTでバージョン確認する>
或いは
ここの 図-3のようにダンプした BIOSファイルを UBU.batで解析しても表示される。)
ただし、MMToolは D&Dには対応していないので、① 「Load Image」をクリックして開いた「ファイルを開く」というダイアログで ②「All Files」にして表示される
BIOSファイルから ③ ロードするファイルを選択する。
BIOSファイルがロードされたら ④ 「Option ROM」タブを開くと、下に Option ROM 一覧が表示される。 ⑤ Vender ID / Device ID が 8086(Intel) / 406(VBIOS)を
クリックして選択して、⑥ 「Browse」ボタンを押して抽出するフォルダーを選択してファイル名を入力し、⑦ 「Apply」ボタンを押すと VBIOS Option ROM が抽出される。
(約 64KBのファイルが保存される)
抽出した Option ROMをバイナリエディタで開いて文字列の「
$VBT」を検索する。図のように「&VBT」が検索されると、そのすぐ後ろにシリーズ名(
COFFEELAKE)、その後ろの 「Intel」の前に4桁の Option ROM Versionがある。(この場合
1008)
また VBT Versionは その前の 「BIOS DATA BLOCK」という文字列の後のスペース[20]の後ろの16進2文字(リトルエンディアンなのでこの場合「00 D1」=
209)となる。
バージョン情報が分かったら、Intel_VBIOS_and_BSF_r3.7z を解凍した中の「Table VBT OROM VBIOS Version and Size.docx」を開いて、改造するマザボのCPU世代名とそのバージョン情報の該当する欄を探す。
右図はその表から私のマザボの該当のバージョン部分を抜き出したものだが、この表から OROMバージョン「1008」は「1007-1019」に該当しており 「CFL_1019への変換は cloneVBTを使え」となっていると読める。とにかく「1008 > 1019」にバージョンアップができそう。
ここで、本家の英文ページの基本的な手順によれば VBT/OROM を iBMPツールでバージョンアップするには スクリプトファイル(*.bsf)が必要だが Intel_VBIOS_and_BSF_r3.7z を解凍した Intel_VBIOS_and_BSF_r3\CFL\1019 の中には cfl_1019.bsf が存在していない。
こうした場合は、右表の説明通り cloneVBT というツールを使うことになるが、その方法は英文ページの下の方の
Alternative method という代替手法に説明されている。
cloneVBT とは同じダウンロードリンクの「Tools」の中に 「CloneVBT.exe」という実行ファイルがあるのでこれを Downloadして使う。
以下はその手順。
cloneVBT.exe は CUIツールだが使い方は簡単で、cloneVBT.exe の存在するフォルダーに 抽出した VBIOS OROMと更新バージョンの OROMファイルをコピーしておいて、コマンドプロンプトを開いて以下の通り操作する。
① CD コマンドでその ディレクトリに移動する。
② > cloneVBT <元の VBIOSファイル名> と入力すると
③ 元の VBIOSファイルのバージョンが表示できる。
VBIOSのクローニングをするには
④ > cloneVBT <元の VBIOSファイル名> <ターゲットの VBIOSファイル名> とタイプする。
⑤ 更新前のバージョン、更新後のバージョンが表示されてクローニングが実行される。
「Done」と表示されたら完了。cloneVBT実行ファイルと同じフォルダーに「
cln_xx.bin」(xx.binは元の VBIOSファイル名)というファイルが生成されている。
この「
cln_xx.bin」というファイルを UBU\Files\Intel\VBIOS フォルダーに移動して「
vbiosskl.dat」(Skylake/Kabylake/Coffeelake の場合)
とリネームしてから UBUツールを実行する。
<
参考>
私の場合、一度目は VBIOS OROMの更新が上記の UBUツールで実行できたが、なぜか2度めに更新しようとして(当然 UBU\Files\Intel\VBIOS フォルダーに更新用「
vbiosskl.dat」ファイルは存在している)UBUを実行して Video関連の更新をしようとしても更新リストに更新用のリビジョン番号が表示されず更新できないことがあった。
更新リストに表示されない理由は不明だがこうした場合でも、UBUでななくて MMTool(Aptio V) を使うと更新ができる。具体的な方法は
こちら。
- VBTファイルの抽出
続けて VBTファイルのバージョンアップを行う。
まず元の BIOSファイルから以下の手順で VBTモジュールを抽出する。
1) NETool Alpha(UEFITool_alpha58.exe)を起動し、「File」>「Open」で 元のBIOSファイルをロードする。
2) ロードしたら「Action」>「Search」で「Hex Pattern」タブを開いて「00F8........2456425420」を検索する。
(Alpha版の方でない場合は GUIDでしか Searchできないので「File」>「Search」から「GUID」タブを開いて「56752DA9-DE6B-4895-8819-1945B6B76C22」で検索する。)
3) 検索結果が下の Searchタブに表示されたら、そこをダブルクリックすると上の Structureペインの該当 GUIDがハイライトされるので、
4) 左側の > の部分をクリックするとその下に「Raw section」が表示される。
5) その「Raw section」の上で右クリックして
6) ポップアップするメニューから「Extract body」をクリックする。
7) 「Save section body to raw file」というファイル保存ダイアログが表示されるので 「org_VBT.bin」などの名前をつけて保存する。
(約 5KBのファイルが保存される)
- iBMPのインストールと VBTファイル更新
上記ダウンロードリンクから
BMPv2_67PV_External.zipをダウンロードして解凍すると「Intel BMP.msi」というインストールファイルが抽出される。
これをダブルクリックで実行するとインストール先フォルダの設定を行って BMP.exe という実行ファイルと関連ファイルが展開される。
一方、上記ダウンロードリンクの「Files_07072020」フォルダー内にある「Intel_GOP_VBT_r4.7z」をダウンロードして解凍するとCPU世代名毎にバージョン名のついたフォルダーの中に基本の VBTファイル(*.bin)とスクリプトファイル(*.bsf)が展開される。
8) 必須ではないが 上記 iBMPの実行フォルダーに 上記手順の ⑦で抽出した VBTファイルとその VBTファイルと同じバージョンの BSFファイル、更新ターゲットバージョンの VBT/BSF ファイルをバージョン番号付きのフォルダー毎コピーしておくと操作が分かりやすくなる。
9) BMPのインストールが終わったら BMP.exeを実行し、「File」>「Open」で上記 7) で抽出した VBTファイル(org_VBT.bin)を開く。
「Binary Data File」に開いたファイルが表示されるので、下の「BMP Script File」に元の VBTと同じバージョン番号の vbt.bsfファイルを指定する。
10) 解析が終わったらメニューから「Bios Settings」>「Save All....」を選択すると「Save All Settings」というファイル指定ダイアログが開くので拡張子「 .ssf」で保存する。
解析ウインドウの右上の X をクリックして一旦閉じる。
11) 再び「File」>「Open」から 今度は Binary Data Fileに更新したいバージョンのフォルダー内の vbt.binファイルを、BMP Script Fileには同じフォルダーの vbt.bsfファイルをロードする。
12) 解析が終わったら「Bios Settings」>「Apply All....」をクリックしてファイル指定ウインドウで 10) で保存した *.ssfファイルを指定する。
13) 警告が出ないで処理が終了したら 「File」>「Save As....」で 更新用 VBTファイルを名前をつけて保存する。
14) 私の場合、更新バージョンとして 228を指定したら図のような警告が表示された。221では警告は出なかったのでとりあえず 221で進めたが、後から 228でも警告が表示されない以下のような方法を見つけた。
15) <iBMPの警告を回避する方法>
この方法は私が警告の出る bsfファイルを見ていて思いついて試した結果、<警告は出なかった>というだけで<絶対に正しい>とか<どんな場合にも当てはまる>と言うわけではありません。私の場合、この方法で更新した BIOSを使い続けていても顕著な不具合は出ていませんが、試される場合は自己責任でお願いします。
テキストエディタで元のバージョンと更新バージョンの両方の *.bsf ファイルを開く。(元のバージョン:vbt_209.bsf 更新バージョン:vbt_228.bsf )
209.bsf で警告が出ている行の Symbol名(図-15 の例の 1行目では「$PM_DPST_Enable」)を検索して、見つかったらその Symbol名の行をコピーして 228.bsfの方で同じ位置の「SKIP」の行に上書きペーストする。(同じ位置とは 前後のシンボル名の bit位置がズレないようにする)
例えば 図-15の 2行目「$BIA_Aggress_Level」の場合 209では 3bit となっているが、228 の方の同じ位置を見ると 1byte が 「SKIP」となっている。しかし 209の方の前後を見ると「SKIP」が合計 5bit あるのでこれらを合わせると合計 1byte使われており、この 1byte = 8bit 分を全部コピーペーストすれば前後のデータの位置関係はズレないことが分かる。
(228の方の問題の行は「SKIP」となっていてコメントに「Obsolete(廃止)」と書かれていることから、多分 209 の方の該当行を「SKIP」と書き換えてもいいかも知れない。)
このように警告の行 全てについて同じ操作を繰り返し、全て修正が終わったら 228.bsfの方は別名(例えば 228_resume.bsf )で保存する。
保存したら 11) で開く BMP Script File はこの編集したファイルを指定して、以降説明通りに操作すると警告は出ずに更新が完了した。
更新が完了した VBTファイルは UBU\Files\Intel\GOP-VBT ファルダーに移動して「vbtskl.bin」とリネームしてから UBU.bat を実行する。
- coffeetimeを使う
(工事中:近日中掲載予定)
>続き その6:BIOS改造:予備知識-BIOSファイルの構造