絵で見るSLP2.0対応BIOS改造講座(AWARD編)
OEM7方式
これは基本的には従来の「SLIC無圧縮挿入方式」の変形。
今までのAward-BIOSだと、この従来方式で問題なくできたんだが、最近の
GigaのM/BだとOCのオプションが機能しなくなるという問題が発生している。
従来方式の場合、ACPIテーブルを抽出して、一旦BIOSファイルから解放し、ACPIを
編集した後また挿入するという形を取る。これだと、CBROMはACPIテーブルを
BIOSファイルの一番最後に追加するので、BIOSファイル内部にある各モジュールの
オフセット値がズレてしまう。これまでのAward-BIOSだとこれでも問題なく機能
してたんだが、最近のGiga母板に載ってるBIOSの場合、GV3とMINITのモジュール
のオフセットがズレると上記の問題が発生することが判明。
そこで解決策として、"oem7"というモジュールをダミーとして挿入して上記のオフセット
のズレを補正してやる、というもの。このoem7はCBROMで挿入してもデフォルト
で無圧縮の形で挿入されるので、SLICテーブルを内部に格納するのに丁度いいし、
従来の無圧縮挿入方式のやり方がそのまま使える。
ただ、面倒くさいのは、oem7モジュールのファイルサイズを調整してBIOSファイル内に
格納された時に、ACPIモジュールの圧縮済みサイズと全く同じにしてやる必要が
ある、という点。でも慣れれば単純な計算で出来ると思う。
OEM7 DATA 作成法
OEM7として挿入されたOEMS.BINにはヘッダが自動的に付加され、BIOSファイル内
での構成は次のようになっている。
ヘッダ部分(24hバイト)+OEMS.BIN(SLIC部分(176hバイト)+ランダム・バイナリ部分)
[TARGET ACPITBL.BIN Compressed-Size] - 19Ah = [ADDITIONAL RAMDOM FILE Size]
[SLIC DATA] + [ADDITIONAL RAMDOM FILE] = [OEMS.BIN]
[ADDITIONAL RAMDOM FILE]
何でもいいから、適当なファイル(例えば、BIOS自身とか)を何でもいいから
LHA形式で圧縮できるソフトで圧縮。圧縮メソッドは-lh5-。
これで作ったデータをコピペするといい感じ、ただヘッダ部分はNG、ヘッダの後ろ限定。
以上を踏まえた上で、多少やり方を変更した実際の手順を解説する。
OEM7法改 (NOCOMPRESS使用)
sample.binをcbromを用いて改造する。SLICはASUS.BINを使用する。
またACPITBL.BINは前もって抽出しておくこと。(cbrom sample.bin /acpi extract)
<注意>
cbromのバージョンによってBIOSファイルが正常に扱えなかったり、
ロングファイルネームに対応していなかったりするので注意。
1. ACPI Tableの圧縮後のサイズを確認する。
2. ASUS.BINをACPI tableのサイズにするために必要なダミーファイルのサイズを計算する。
ACPI tableのサイズ - ヘッダ部分(2Ah Byte) - ASUS.BIN(176h Byte) - フッタ部分(8h Byte)
この例では
4052h - 2Ah - 176h - 8h = 3EAAh Byte (16042 Byte)
が作成すべきダミーファイルのサイズになる。
3. ダミーファイルを作成する。(後でcopyで結合した際に正しいサイズにするためにファイルサイズを -1 にする)
4. ダミーファイルをASUS.BINに結合する。
5. ダミーBIOSを作成する。
6. ダミーBIOSに4.で作ったASUS.BINを/nocompressで結合する。
7. さらにダミーBIOSにASUS.BINを/oem7で結合する。
(/nocompressで結合したASUS.BINのヘッダ部を適切なものにするために必要)
8. sample_dummy.binをバイナリエディタで読み込み「SLIC」を検索する。
9. SLICの先頭部分から上に2Ah Byte(42 Byte)さかのぼったところから、
全体で4052h Byte(ACPI tableのサイズ)になるよう選択してコピーの準備をする。
10. 最終的に改造すべきBIOSであるsample.binをバイナリエディタで読み込み、
「ACPITBL」を検索する。
11. ACPITBLの先頭部分から上に16h Byte(22 Byte)さかのぼったところから、9.で
選択したものを上書きコピーする。
12. 「SLIC」を検索し、SLICの先頭アドレスを調べる。(この例では5B92Ch)
13. 前もって抽出しておいたACPITBL.BINを、Basic法を参考にして書き換え、
sample.binに追加する。(cbrom sample.bin /acpi)
14. sample.binをマザーボードに書き込む。
以上。