Windows以外のOSを動かす時や規格外のパーツを取り付ける場合、BIOS設定のカスタマイズが必要となることがあります。(注)ここで言うBIOS設定とは昔の伝統的なBIOSではなくUEFI起動時の設定画面のことです。
自作用マザーボードはBIOS設定でカスタムできる項目がたくさん |
マザーボードを買ってきて自作したPCであれば、このスクリーンショットのようにBIOS設定を細かくカスタマイズできるのですが、、、問題は市販の特にノートPC。既製品のPCはWindowsを安定動作させることが優先ですからBIOS画面に入っても設定変更ができる項目は多くありません。メーカー推奨値のBIOS設定に内部値が固定されておりカスタマイズはほとんどできないことが基本です。
(例えばGPD Pocket 3の場合、TDP設定ぐらいしかカスタマイズができません)
まぁ実際のところカスタマイズなどできなくても普段使いで困ることはないのですが、、、市販PCにWindows以外のOSをインストールしたり、特殊な周辺機器を接続するときにBIOS設定のカスタマイズが必要となることがあるのですよ。
目次
BIOSメニューにない項目の設定変更の方法
手順のコンセプト
手順をざっくり先に書くと、BIOS設定画面に出ていない項目は通常とは異なる方法でBIOSへアクセスすることで変更することができます。このようの方法は昔のBIOSでは難しかったのですが、UEFIで比較的楽にできるようになりました。
UEFIはソフトウェアのアーキテクチャが規格化されていて、設定画面のUIはフロントエンドのレイヤとして仕様が定義されています。UIのレイヤがあるおかげで、例えばRAID PCIカードをマザーボードに挿して電源を入れるとUEFIにRAIDカードの設定メニュが追加で出てくる・・・というような柔軟な運用が可能となるのです。
このように設定画面のUIレイヤが分離されているメリットは大きく、メーカーPCのBIOS画面の開発にも柔軟性が出るのです。世の中に出回っているマザーボードや既製品PCのUEFIのほとんどはAMI(American Megatrends Inc.)社やAward社製で、各メーカーのPCはそれら標準的なUEFIソフトウェアから不要なUI項目を非表示にさせた状態にして出荷されています。ということは、UEFIの詳細設定は設定画面に表示されていないだけで内部をいじれば設定変更が可能なのです。
すなわちUEFI画面に表示されていない設定パラメーターに対して設定画面UIではない別の方法でアクセスすることができれば、BIOS隠しメニューの設定変更が可能になります。
手順の概要
- BIOSのROMデータのダンプを入手
- ダンプデータからUEFIのUI設定情報を取得
- 非表示のUI設定項目のアドレスを解析
- BIOSのUIを介さずにUEFIのCUIから直接BIOS設定を変更
BIOS ROMダンプの入手
BIOS設定の調整
CHIPSECを入手
ホームページのダウンロードリンクをたどり、CHIPSECのgithubレポジトリから一式を入手します。Releasesからソースコードzipをダウンロードするのが手っ取り早いです。
CHIPSEC起動USBメモリを作る
CHIPSECのソースファイル一式を入手したら、UEFI Shellから起動する手順の通りにセットアップします。
FAT32フォーマットのUSBメモリを用意して、以下のようなディレクトリ構成でファイルを配置します。
最初にUSBメモリ直下にフォルダを作ります
/chipsec /EFI /EFI/BOOT
CHIPSECソース内の__install__/UEFI/chipsec_py368_uefi_x64.zipを解凍すると出てくる2つのフォルダStdLibとToolsを/EFI配下に置きます。
以下からダウンロードしたShell.efiを"BOOTx64.efi"にリネームして、/EFI/BOOT内に置きます。USB起動するとUEFI Shellが起動するようになります。
https://github.com/tianocore/edk2/blob/UDK2018/ShellBinPkg/UefiShell/X64/Shell.efi
CHIPSECのソースコード直下にあるchipsecフォルダをUSBメモリの/chipsec配下におきます。同様にchipsec_main.pyとchipsec_util.pyも配置します。それ以外のソースファイルは使用しません。
以上で起動USBの準備は完了です。
USBメモリから起動する
BIOS ROM吸い出し
UEFI Shellが起動します。UEFI ShellとはOSが起動する前にUEFIレベルで使用することができるShellです。レガシーBIOS起動と異なりUEFIブートはIシェルのような外部ソフトウェアを走らせることができるのです(若い人はUEFIのパソコンしか見たことがないと思うので年寄り向けの情報です)。
USBディスクへ移動
> fs0:
CHIPSECを実行。BIOSダンプファイルbios.binを保存
> cd chipsec
> python368.efi chipsec_util.py spi dump bios.bin
これでBIOS ROMダンプデータbios.binがUSBメモリに保存されます。この後、取得したBIOSダンプを解析してBIOS設定UIを経由せずに直接設定を変更する裏口を探す作業を行います。
それにしてもUEFI shell上でPythonが動くとは軽く驚きました。
先ほど書いた一連のコマンドを実行した画面を参考に載せておきます。UEFIシェル画面のスクリーンショットです。
以上の手順で無事にBIOS ROMダンプを取得できました。続きの次回ではBIOS ROMダンプを解析して隠しメニュー情報を抽出します。<次回へ続くリンクはこちら>
0 件のコメント:
コメントを投稿