9/20/2011

EDKIIをLinuxでビルドする その1

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


EDKのビルドについて、ゴリゴリ書いてましたが、実はEDKIIなるものがありまして、こちらはまだ良く理解できてないのですが、どうやらEDKIではWindows+VS2003 or VS2005というビルド環境しかサポートしていなかったのが、EDKIIではWindowsの他にLinuxやMacOSXなどのOSもサポートしていて、コンパイラもVisual Studio以外にもgccやインテルCコンパイラもサポートしておるようです。

WindowsよりLinuxの方が好きな私としては大いにそそられるやつなわけです。そんなわけで良く分からんなりにもとりあえず、ビルドしてみました。その一部始終を自分へのメモという意味も含めて書いておこう。おおそうしよう。

まずはリンクから

http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=EDK2

http://sourceforge.net/projects/edk2/files/

http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Getting_Started_with_EDK_II


んで、EDKIIのパッケージはなんだか複雑なことになっていてEDKIのようにzip一個というわけでは無いぽいです。モジュールごとに細かいことになっていてどれがなんなのか良く分かりません。しかもSorceforgeにリリースされているソースは中心的なパッケージのみでこれが全てというわけではなさそうです。3つめのリンクにGetting Startedがあるのでこれを参考にやってみました。それによるとソースはsubversionで取得せよちゅうことのようです。

よし取得するべし。そうそう、ビルド環境はUbuntu 10.04でやります。

ターミナルを立ち上げ、まずコンパイラやら、subversionをaptでインストールします、

$ sudo apt-get install build-essential subversion uuid-dev iasl


次にソースをダウンロードするためのディレクトリをホームに作ります。そしてそのディレクトリに移動します。

$ mkdir ~/src
$ cd ~/src


で、svnコマンドでソース一式をダウンロードします。


$ svn co https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2 --username guest


取得が終わったら、ビルドの準備をします。以下のコマンドを実行します。


$ make -C edk2/BaseTools
$ cd ~/src/edk2
$ export EDK_TOOLS_PATH=$HOME/src/edk2/BaseTools
$ . edksetup.sh BaseTools

そして~/src/edk2/Confにあるtarget.txtというファイルを編集してビルドターゲットを指定する。とりあえず、Getting Startedに書いてある通りにしてみる。


ACTIVE_PLATFORM = Nt32Pkg/Nt32Pkg.dsc
TOOL_CHAIN_TAG = MYTOOLS

と書いてある行を見つけてそれぞれ以下のように変更する


ACTIVE_PLATFORM = MdeModulePkg/MdeModulePkg.dsc

TOOL_CHAIN_TAG = GCC44


次にビルドする。

$ build


ビルドされたバイナリは「Build/MdeModule/DEBUG_GCC44/IA32/」に出来てます。

んー。思いのほか簡単ですな。ただ、このビルドターゲットだとエミュレータが含まれてないようです。エミュレータ起動しないと今ひとつ感動にかけるし、gdbでデバッグしたいしなので、ごにょごにょ調べてみるとUnixPkgというのをビルドターゲットにすればよさそうです。これを試します。先ほどのtarget.txtのACTIVE_PLATFORMを以下のように書き換えます。

ACTIVE_PLATFORM = UnixPkg/UnixPkg.dsc

これでビルドしてみます。


$ build

するとエラーがでてビルドが通りません。ログをよく見ていくとどうやらX11関係のヘッダファイルが無いよということのようです。なのでUbuntuのパッケージでそれが含まれてそうなパッケージを見つけてインストールします。

$ sudo apt-get install libx11-dev libxext-dev


そしてビルドです。

$ build


こんどは成功しました。で、エミュレータを起動するには以下のようにします。


$ build run

で例のエミュレータが起動します。EDKIとちがってロゴが入ってますねぇ。なかなかいい感じです。











































よし。

0 件のコメント:

コメントを投稿