VC++ のIDEを使ったビルド、デバッグ方法を書くに先立って、EFIShellをソースからビルドするやり方を先に書くことにします。あとからEFIShellのコマンドをデバッグの例にするためなのです。
エミュレータ環境を立ち上げるとEFIShellが起動しますが、これ、実はEDKのなかにすでにビルド済みのバイナリが入っていてそれが起動しているのです。なので今回はEFIShellのソースをEDKに追加してEDKと一緒にビルドしてしまうというのをやります。
まずは以下のサイトからEFIShellのソースをダウンロードします。
http://sourceforge.net/projects/efi-shell/files/
「Releases」の中の「Offical Releases」の中で最新のものをダウンロードします。2010年8月4日時点では「EfiShell 1.06.zip」が最新だったのでこれを使用します。あとドキュメント類もついでにダウンロードしておくといいかもしれません。
EfiShell 1.06.zipを解凍するとShellというフォルダが出てくるのでこれを「C:\TianoCore\Edk\Other\Maintained\Application\Shell」に置きます。でこれをEDKのビルドシステムでビルドするには、「C:\TianoCore\Edk\Sample\Platform\Nt32\Build\Nt32.dsc」を編集します。(X64プラットフォームでビルドしたい場合は「C:\TianoCore\Edk\Sample\Platform\X64\Build\X64.dsc」)つまり、この「.dsc」ファイルが何をビルドするかを制御しているファイルになります。このファイルをテキストエディタで開いて、「Other\Maintained\Application\UefiShell\Bin\Shell.inf」という記述を探します。EDK1.06では337行目ですね。これが例のビルド済みEFIShellなのでこれをコメントアウトして以下のような記述を追加します。
#Other\Maintained\Application\Shell\Bin\Shell.inf
Other\Maintained\Application\Shell\Shell.inf
でここで一つ選択肢がありまして、EFIShellのソースには「ShellFull.inf」というのも用意されていて、ファイル名の通り、こちらを選ぶとコマンド全部入り版がビルドされるのです。なのでこちらを使いたい場合は以下のようにします。
#Other\Maintained\Application\Shell\Bin\Shell.inf
Other\Maintained\Application\Shell\ShellFull.inf
これで準備完了です。ビルドしてみます。
> set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft Platform SDK\include
> set LIB=%LIB%;C:\Program Files\Microsoft Platform SDK\lib
> set EDK_SOURCE=C:\TianoCore\Edk
> cd %EDK_SOURCE%\Sample\Platform\Nt32\Build
> nmake
でビルドします。この一連のコマンドを毎回タイプするのもあれなんで、バッチファイルとかにしておくと便利かと思います。
> nmake run
でエミュレータを起動すれば新しくビルドしたEFIShellが起動するはずですが、まあ見た目はかわらないのでよくわからないかもしれません。
とりあえずきりがいいのでその4はここまでにします。
0 件のコメント:
コメントを投稿