9/19/2011

EDKをビルドする その1


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

これを読んでくださっている皆様は、EDKというか、EFIがなんのことやらな方が多いかと思いますので、そこから簡単に説明しますとですね、EFIとは、 「Extensible Firmware Interface」の略でして、古くからあるPCのBIOS(以下LegacyBIOS)を置き換えてしまおうというものです。

EFIの発端はIntelがItatiumというCPUを開発して、そのプラットフォーム向けのファームウェアを新規開発する必要性があったところから始まっていて、仕様はIntelからリリースされたんですが、その後UEFIフォーラムに仕様を寄贈して以後、UEFIが仕様の開発とリリースを行っているようです。

EFIはこれまでのLegacyBIOSと違い、インターフェイス仕様が明確に定められており、公開されているのです。これまで完全にクローズドで無秩序だったBIOSの世界に秩序をもたらす救世主的存在になりうる素敵なやつなのです。もうちょっと詳しいことが知りたい方はWikipediaに結構詳しめに書かれているので読んでみるといいかもしれません。
http://ja.wikipedia.org/wiki/Extensible_Firmware_Interface


そんな素敵なEFIさんなのですが、いまいち市場では微妙な扱いのようです。現在EFIの採用を明確に表明しているのはAppleのIntel CPU搭載MacとかItanimを搭載したサーバーやワークステーションと、一部の自作PC向けマザーボードくらいですかねぇ。
これはたぶん、現在既存のPC用OSが(正確にはそのブートローダが)、LegacyBIOSのブートの仕組みを想定していて、EFIで既存のOSをブートするにはCSM(Compatibility Support Module)というLegacyBIOSの互換モジュールをわざわざ組み込まないといけないのです。つまり、既存のOSがEFIをサポートしてないので、PC業界的にはあんまりメリットを感じてないのかもしれません。加えて、開発側では、LegacyBIOSの蓄積してきたソフトウェア資産を破棄して、技術的ノウハウを新たに開拓しないといけないEFIに移行するのは中々リスクが高く、時間もかかる(=開発費がかさむ)また、EFIの将来性への懸念等の理由が、なかなか本格的に移行が進まない要因なのではないかと個人的には推測してます。(しかしながら、公にEFIをうたってなくても、EFIブートをサポートしているPCもいくつかあるようなので、実は水面下では浸透してきているのかもしれません。)


なので過去のしがらみのないAppleはすんなりEFIを採用できたんでしょうな。ちなみにMacでWindowsを起動するためのBootCampというプログラムがありますが、これの正体はCSMだという噂です。

前置きが長くなってしまいましたが、EFIについてはある程度ご理解頂けたと思います。そんで、EDKについてですが、EDKとは「EFI Deveopler Kit」の略でしてEFIの開発キットなのです。これはもともとIntelが開発したEFIの実装(コードネーム: Tiano)の一部をオープンソースとしてリリースしたものです。残念ながらチップセットの初期化コード等は含まれないので、ビルドしたバイナリをマザーボードのROMに焼いても起動できるわけではないのですが、エミュレータ環境でEFIを動作させることができ、EFIのドライバやアプリケーションを開発する助けにはなるのです。というわけでこれを使ってみようじゃないかという話です。

長文になってしまったので、続きはその2に書きます。

0 件のコメント:

コメントを投稿