9/19/2011

EDKをビルドする その4

(*この記事は以前、私が運営していたhttp://www.poppolab.comというサイトで公開していたものですが、ドメイン維持の都合により閉鎖しましたため、こちらに投稿し直します。内容は1年近く古いものですので、現在の事情とは食い違う可能性があります。)

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 件のコメント:

コメントを投稿