徒然なるままに etc DynabookのR73/PWQにCrucialのDDR3L 16G(CT204864BF160B)を二枚乗せる!~その6~

DynabookのR73/PWQにCrucialのDDR3L 16G(CT204864BF160B)を二枚乗せる!~その6~

※:BIOSの改造は自己責任でお願いします。このブログをまねして壊れた等の一切の保証はできませんのでご注意ください。

さらに調べてみました。

ちゃんと説明を読んでいなかったのですが、Intel FPTは、「-d」のオプションだけだと、BIOS Chip全体をバックアップするみたいです。

BIOSだけをバックアップするにはオプションに「-bios」を付けてあげれば良いみたいです。

なので、改めてFPTW64コマンドに「-bios」オプションを付けて実行してみます。
『Memory Dump Complete』『FPT Operation Passed』と表示されましたね、成功しました!

念のため、ファイルが壊れてないか、「-verify」オプションで検証してみます。
「-bios」オプションを付けるのを忘れないように。
FPT Operation Passed』が表示されました、大丈夫なようです。

ちなみに、失敗した場合は以下のように『Error 204: Data verify mismatch found.』と表示されます。

本当は、検証に成功したBIOSを書き込んで確認したかったのですが、面倒なのでやめました。後で後悔することにならなければ良いのですが。。。

あと、「-i」オプションを付けるとBIOS Chip全体の情報が表示されます。
BIOS以外にMEなどがあるのが分かりますね。

ここで今更ですが、基本的なところをおさらいしてきました。
まず、Intel CPU対応 UEFI BIOSの基本構造は、上の表示結果の通りいくつかのResionに分かれています。
もっと細かい事はあると思いますが、表示結果を基に見ると、以下のような構造になっているようです。
・Descriptor Resion
・BIOS Resion
・ME Resion
・GbE Resion
・PDR Resion

この中で今回対象としているのは「BIOS Resion」です。BIOS Resionは複数のModuleが入っていて、その中に「Microcode Update」が複数入っています。

なお、Resionの開始位置、Moduleの開始位置は決められています。そして、それとともに、それぞれのResion、Moduleの終点や最大サイズも決まっています。実際のサイズについてはHEADER部分に書き込まれます。
HEADER部分の見方は下の方で説明します。

UEFIのResionやModule、Module内のコードは、それぞれ開始位置が決まっていますと書きましたが、開始位置には制約があります。通常のバイナリエディタで編集する際は、alignmentを気にして修正しないといけないのですが、専用のツールを使って編集する際は、ツールが良い感じにしてくれるので気にしなくて良いそうです。なので、私はバイナリエディタではなく、専用のツールを使って編集しようと思います。

また、各ModuleのHeaderの位置を変えると、変更後のBIOSが正しく動かなくなってしまうので、Moduleのサイズが変わる場合はModuleの後ろの空白(FFでパディング)で調整する必要があります。

特に重要な事として、以下の4つがあります。
1.BIOSファイルのトータルサイズを変えてはいけません。
2.Microcode Moduleの後ろのModuleの開始位置を変更してはいけません。
3.Microcode Moduleの開始位置を変更してはいけません。
  (それぞれのMicrocodeの開始位置も変わっていまいます)
  (ただし、Intel FITを修正することで修正は可能です)

4.Microcode単体の内容を変更してはいけません。

以上の注意事項がありますが、3については解決方法があるので、実質注意事項は3つですね。

空き容量などについては、色々とルールがあるので、実際に操作しながら説明していきます。

ということで、とりあえずDynabookのBIOSを入手しました。

ここからMicrocodeを抽出したいと思います。
利用するツールは「MC Extractor」です。
URL:https://github.com/platomav/MCExtractor

とりあえず、最新の物をダウンロードした方が良いと思います。
2020年07月19日時点での最新は「Ver.1.44.0 r153」です。

解凍すると以下のファイルが展開されます。
・MCE.exe
・MCE.db
※:「MCE.exe」はウイルスソフトによってウイルスとして認識されますので、注意してください。

とりあえず、適当なフォルダに展開します。私は、「C:\Temp\MC Extractor v1.44.0 r153」に解凍しました。

「MCE.exe」のフォルダに移動して、コマンドプロンプトで以下のコマンドを入力します。

『MCE -skip <BIOS file path>』

実行してみます。
色んな情報が表示されました。「Press enter to exit」と表示されているところで、ちゃんとエンターキーを押して終了しないと、Windowsのテンポラリにゴミが残ってしまうそうです。注意しましょう。

そうすると、「MCE.exe」のフォルダに「Extracted」→「Intel」というフォルダが作成され、そこにMicrocodeが展開されます。

今回作成されたのは以下の5ファイルです。
・cpu306C2_plat32_verFFFF0006_2012-10-17_PRE_30531EB4.bin
・cpu306C3_plat32_ver00000024_2018-01-21_PRD_FCD4700E.bin
・cpu40650_plat72_verFFFF000B_2012-12-06_PRE_A1180C86.bin
・cpu40651_plat72_ver00000023_2018-01-18_PRD_0A6E6647.bin
・cpu40660_plat32_verFFFF0011_2012-10-12_PRE_21AC5E53.bin

ファイル名の形式は以下の通りです。

cpu_plat_ver_年-月-日_PRD[or PRE]_Checksum.bin

対応CPUは「cpu(CPUID)」と「plat(Processor Flags)」の二つで判断するようです。
ただ、「Processor Flags」を「Platform ID(0~7の数字1桁)」に変換して考える必要があるようです。
例1: Processors Flags(32) → Platform ID(1,4,5)
例2: Processors Flags(72) → Platform ID(1,4,5,6)

また、「PRE(Pre-Production)」、「PRD(Production)」ですが、これはMicrocodeのステータスで、「PRD」の方が安定性があるらしいです。

以下のMicrocodeのHeader部分を見ていきましょう。
・cpu306C3_plat32_ver00000024_2018-01-21_PRD_FCD4700E.bin

バイナリエディターで開くと以下のようになります。(以前、説明しましたが、Little Endianです)

赤線部分 MCU Revision 24
青線部分 DATE(作成日) 2018/01/21
紫線部分 Processor Signature(CPUID) 306C3
緑線部分 Processor Flags 32
黄線部分 Data Size(暗号化部分)※1 5BD0
茶線部分 Tota Size※2 5C00

※1:MCUのうち、暗号化されているデータ部のサイズ
※2:MCU全体のサイズ(Header + 暗号化されたデータ)で、1024の倍数

とりあえず、こんなところですかね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Related Post