9/20/2011

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

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


んじゃ、EDKIIでEFIShellをソースからビルドします。で、EDKIIのネイティブなEFIShellというのはまだ無いようです。いろいろ調べてみると、2通りのやり方があって、1つはgcc-shellというプロジェクトがあって、これはEDKI向けのEFIShellを修正してgccや、unix系のシステムでビルドできるように修正したもののようです。これをまずは試してみましたが、結論から言ってしまうと、ビルドは通るものの、うまく動作しませんでした。原因は分かりませんが、原因追求するガッツが無いので、ちょっとあきらめぎみです。このプロジェクト自体、EDKIIのネイティブなシェルができるまでの一時しのぎ的なもののようです。一応やり方だけ書いときます。

Getting Startedへのリンク

http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Gcc-shell

これを参考にやってみました。


まず、EDKIIのソースディレクトリに移動して、svnでgcc-shellのソースを取得します。

$ cd edk2
$ svn co https://gcc-shell.svn.sourceforge.net/svnroot/gcc-shell/trunk/GccShellPkg GccShellPkg
$ make -C BaseTools/Source/C

で、おもむろにビルドします。

$ export EDK_TOOLS_PATH=$HOME/src/edk2/BaseTools
$ . edksetup.sh BaseTools
$ build -p GccShellPkg/GccShellPkg.dsc -a IA32 -t ELFGCC


すると、「~/src/edk2/Build/GccShellPkg/DEBUG_ELFGCC_IA32」にバイナリができるのです。で、これをEDKIIに元々入っているEFIShellのバイナリと入れ替えてみたんですが、どうも強制終了してしまいます。んーなんらかのバグなのか、ビルド環境が悪いのか分かりませんが、ソースのレビジョンが上がったらまた試してみるとして、これを使うのはしばらく諦めます。

そして、冒頭でお話した2つめのやり方をやってみます。これはEDKI向けのEFIShellのソースにパッチをあてて、EDKIIのビルドシステムに適合させるというやつです。「~/src/edk2/EdkShellPkg」の中に ReadMe.txtとパッチが置いてあるので、ReadMeを参考にやってみました。まぁ、結論から言ってしまうと、これもビルドは通るものの動作しなかったのですが… このReadMeの内容から察するに、もともと入ってるバイナリはWindows環境でビルドしたものっぽい感じがします。そしてこのパッチの内容もgcc-shellとEFIShellの差分から作成したものっぽいです。一応やり方を書いときます。

まず、EFIShellのソースをsvnで取得します。ReadMeによるとrevision33を指定してますので、これを取得します。

$ cd edk2
$ svn co -r 33 https://efi-shell.svn.sourceforge.net/svnroot/efi-shell/trunk/Shell

で、パッチをあてます。

$ cd Shell
$ patch -p1 < ../EdkShellPkg/ShellR33.patch


そしてビルドします。

$ cd ..
$ EDK_TOOLS_PATH=$HOME/src/edk2/BaseTools
$ . edksetup.sh BaseTools
$ build -a IA32 -p EdkShellPkg/EdkShellPkg.dsc

すると、「~/src/edk2/Build/EdkShellPkg/DEBUG_ELFGCC/IA32」にバイナリができます。これを例によって既存のバイナリと入れ替えてみたところ、やっぱり強制終了しちゃいます。んーEDKIIのShellは現時点では微妙なところですな。

これまでEDKIIを検証してみて、分かったことは、まだまだ開発途上で全体的に不安定な印象を受けました。手を出すにはまだ時期尚早だったのかもしれません。

そして、私の真の目的は実はEFIアプリを作ることだったことを思いだしました。EDKII自体を開発したいわけじゃないのです。なので、EDKIIの検証はここまでにします。できればEDKII&Linux環境で開発したかったけど、EDKI&Windowsでアプリ開発をおっぱじめようと思います。EDKIIもたまにチェックして、UnixPkgがメジャーリリースされるところまで開発が進んだらまた改めて試してみたいと思います。

0 件のコメント:

コメントを投稿