9/20/2011

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

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


その1でLinux上でエミュレータを起動するところまでは成功したのですが、実はOVMFなるものがありまして、これはedk2のプロジェクトの一つのようです。で、なんとqemu用のBIOS ROMを置き換えてEFIをqemuで動かそうという代物らしいです。

How toへのリンクを見つけたので貼っておきます。

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

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


これはかなり期待大です。エミュレータではPCIデバイスや物理メモリにアクセスするようなアプリが思うように動作しないのに対して、qemuであればハードウェアごとエミュレートしてるわけですから、かなり実機に近い動作が期待できます。加えて、qemuにはgdbと接続する機能がありますから実機にICEを繋いでデバッグするのに近い環境ができちゃうのかも。そんで、Eclipseのgdbのソースレベルデバッグと連携すれば、もう完璧です。夢は膨らむばかりです。

そんなわけで早速試してみます。

ビルド手順はその1に書いたのと変わりませんので重複する部分は割愛しまして、target.txtの「ACTIVE_PLATFORM」を以下のように書き換えます。

ACTIVE_PLATFORM = OvmfPkg/OvmfPkgIa32.dsc


で、ビルド


$ build


よし。次にOVMFを動作させる用のディレクトリをホームにつくります。


$ mkdir ~/run-ovmf
$ cd ~/run-ovmf


で、ビルドして出来たROMをここにコピーします。


$ cp ~/src/edk2/Build/OvmfIa32/DEBUG_GCC44/FV/OVMF.fd bios.bin
$ cp ~/src/edk2/Build/OvmfIa32/DEBUG_GCC44/FV/CirrusLogic5446.rom vgabios-cirrus.bin


ハードディスクにみせるためのディレクトリを作ります。


$ mkdir hda-contents

そしてqemuを実行します。ああ、qemuまだインストールしてませんでした。以下のコマンドでインストールします。

$ sudo apt-get install qemu

よし。じゃあ実行します。

$ qemu -L . -hda fat:hda-contents

おお、起動しました。






















pciコマンドもこのとおりー






















なかなかよろしいです。

0 件のコメント:

コメントを投稿