Extensible Firmware Interface
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Extensible Firmware Interface(EFI)はオペレーティングシステムとプラットフォームファームウェアとの間のソフトウェアインタフェースを定義する仕様である。EFIはすべてのIBM PC互換機に採用された歴史的に古いBIOSインタフェースの置き換えを狙っている。EFI仕様は元々インテルによって開発されたが、今やUnified EFI Forumによって管理され、Unified EFI(UEFI)として公式に知られるようになった。
目次 |
[編集] 歴史
そもそもEFIが開発された動機は、1990年代中盤にIntelとHPが初代Itanium機の開発初期にまでさかのぼる。PCのBIOSの制限(16bitプロセッサモード、1MBのアドレス空間、PC/ATハードウェアへの依存)によって、Itaniumをターゲットとした巨大なサーバプラットフォームには採用できないことが判明した。これらの課題に対しての最初の成果が、最初にIntel Boot Initiativeと呼ばれ、後にEFIと名前を変えるものであった。
EFI仕様は2000年12月12日にIntelによってリリースされた。(一番最初に発行されたものはバージョン1.01であったが、法的な不備や商標などのミスによりすぐに取り下げられている)。
EFI仕様1.10は2002年12月1日にIntelによってリリースされた。それにはバージョン1.02からいくつかの細かい機能強化とEFIドライバモデルが記載されていた。
2005年には、Intelはこの仕様をUEFIフォーラムに寄贈した。このフォーラムは仕様の開発と普及に責任をもって行う。EFIはこれを反映してUnified EFI(UEFI)と名前を変え、多くのドキュメントが両方の用語を同じものとして使うようになった。
UEFIフォーラムは2007年1月7日にUEFI仕様バージョン2.1をリリースし、これは2007年3月現在の最新の仕様となっている。その仕様には改善された暗号化、ネットワーク認証、ユーザーインタフェースのアーキテクチャ(UEFI中にある対人インタフェース)が追加されている。
[編集] 詳細
EFI仕様によって定義されたインタフェースは、プラットフォーム情報などのデータテーブルを持っている。この情報やEFIの機能はブートローダーやOSが利用することができる。
従来のPC BIOSに対しての強化点としてはACPIやSMBIOSはすでにEFIの中にあるので、16bitで動作するインタフェースに拠らなくても利用できる。
[編集] サービス
EFIはブートサービスを定義していて、これにはさまざまなデバイス上でテキストおよびグラフィカルなコンソールが利用できる機能や、バスやブロックデバイス、ファイルシステムの機能が含まれる。また、ランタイムサービスとしては、日付や時間、NVRAMの管理サービスなどがある。
[編集] デバイスドライバ
標準的なアーキテクチャ依存のデバイスドライバに加えて、EFIの仕様ではプロセッサに依存しないデバイスドライバ実行環境を提供していて、EFI Byte CodeないしEBCと呼んでいる。システムのファームウェアは、その環境にロードされたもしくはその環境内にあるEBCイメージ用のインタプリタを実行できることを、UEFI仕様によって要求されている。その点、EBCはOpen Firmwareに似ている。これはハードウェアに依存しないファームウェアで、PowerPCベースのアップルのMacintoshやサン・マイクロシステムズのSPARCコンピュータなどの間で採用された。
いくつかのアーキテクチャに特化した(非EBCな)EFIデバイスドライバはオペレーティングシステムから利用可能なインタフェースを持つことができる。これにより、OSに特化したドライバをロードしなくても、基本的なグラフィックスやネットワーク機能についてはOSがEFIに頼ることができる。
[編集] ブートマネージャー
EFIブートマネージャーはまたオペレーティングシステムを選択してロードするのにも使うことができる。これにより専用のブートローダ機構は必要がなくなる。(OSのブートローダはEFIアプリケーションになる)。
[編集] ディスクサポート
マスターブートレコード(MBR)など標準的なPCのディスクパーティションの処理に加えて、EFIではGUIDパーティションテーブル(GPT)をサポートしている。これによりPCでのディスクパーティションの限界に会うことはない。EFI仕様はファイルシステムそのものには言及していない。たいていのEFIの実装ではファイルシステムとしてFAT32をサポートしている。
[編集] EFIシェル
EFIコミュニティはオープンソースなシェル環境を作った。これはちゃんとしたOSを直接起動するのではなく、なんらかしらの実装上でユーザがEFIシェルと呼ぶものを起動することができる。このシェルはEFIアプリケーションであり、プラットフォームのROM内に直接焼きこまれているか、ROM内のデバイスドライバが制御できるデバイス内に存在する必要がある。
シェルは他のEFIアプリケーション、例えばシステムの起動やOSのインストール、システムの診断や設定、システムのフラッシュROMのアップデートなどに使われる。このことにより、完全なオペレーティングシステムを起動することなしにCDやDVDを再生したり、必要な機能を持つEFIアプリケーションを実行することができる。また、シェルのコマンドを使って、ファームウェアがサポートしているファイルシステム間同士で直接ファイルのコピーや移動を行うこともできる。デバイスドライバは動的にロードとアンロードができ、完全なTCP/IPスタックもまたシェル内から利用することができる。
EFIシェルは.nshの拡張子がついたスクリプトファイルをサポートしていて、DOSのバッチファイルに似ている。
シェルコマンドの名前はDOSのコマンドインタプリタもしくはUNIXのシェルから来ていることがある。そのため、EFIシェルはDOSのコマンドインタプリタを機能的に置き換えることができるようにも見える。
[編集] 拡張機能
EFIの拡張機能はコンピュータにつけられている、仮想的ななんらかしらの不揮発性のストレージデバイスからロードされる。たとえば、マザーボード上のROMに格納されている標準EFIファームウェアに機能を追加するために、OEMがハードディスクにEFIパーティションを作って、そのシステムを売るなどということができる。
[編集] 実装と採用実績
[編集] Intel Platform Innovation Framework for EFI
Intel Platform Innovation Framework for EFI(元々Tianoというコードネームで呼ばれていた)はEFIサポートを含んでいて、完全でレガシーフリーなファームウェア実装である。それは、compatibility support module(CSM)と呼ばれるものを通してレガシーなPC BIOSをサポートを可能としている。
特に、このフレームワークは電源投入後のプラットフォームの初期化に必要なすべての処理を含んでいる。これらのファームウェアの内部動作はEFIの仕様には定義されていないが、Platform Initialization Specificationには記載されている。
インテルはこのフレームワークを完全な形でエンドユーザーに提供しているわけではない。(アメリカンメガトレンド(AMI)やInsyde Software)など独立BIOSベンダーに対してファームウェアの提供が行われているので、それを通じて利用が可能である。
フレームワークの一部はEFI Developer Kit(EDK)として、TianoCore projectのにオープンソースとしてリリースされている。この実装はEFIといくつかのハードウェア初期化コードを含んでいるが、それ自身で完全な機能を持つファームウェアを構成できるわけではない。このコードにはBSDライセンスとEclips Public Licenseを含むいくつかのライセンスが適用されている。
[編集] EFIおよびこのフレームワークを用いたプラットフォーム
インテルの最初のItaniumワークステーションとサーバ。2000年にリリースされ、EFI 1.02をサポートしている。
ヒューレット・パッカードの最初のItanium 2システム。2002年にリリースされ、EFI1.10をサポートしている。これらはWindows、Linux、FreeBSD、HP-UXが起動できた。
DIG64仕様に従ったEFI互換ファームウェアを搭載したすべてのItaniumとItanium2システム。
2003年11月、ゲートウェイは、Gateway 610 Media Centerに、x86のWindowsベースのコンピュータシステムとしては初めてこのフレームワークをベースとしたファームウェアである、Insyde SoftwareのInsydeH2Oというファームウェアを導入した。このファームウェアではまだWindowsを起動するために、compatibility support moduleを使ってレガシーBIOSを実装していた。
2006年1月、アップルはインテルアーキテクチャをベースとした最初のMacintoshを出荷した。このシステムはEFIを採用していて、以前のPowerPCベースのシステムに採用していたOpen Firmwareに代わって、このフレームワークを採用した。2006年4月5日、アップルはBoot Campと呼ばれるソフトウェアをリリースした。これにはWindows XPをユーザがパーティションを壊さずに簡単にインストールできるツールと、WindowsXP用のドライバディスクを提供している。ここでもまたファームウェアアップデートを通じて、EFI実装に加えてレガシーBIOSのサポートが追加された。続くMacintoshの機種ではより新しいファームウェアが入った状態で出荷されている。いまやすべてのMacintoshは、WindowsXPのようなレガシーBIOSを使ってオペレーティングシステムを起動できるようになっている。
非常にメジャーなインテルのマザーボードは、このフレームワークをベースとしたファームウェアを搭載して出荷されている。2005年では、100万台以上インテルのボードがこのフレームワークを搭載して出荷されている。新型のモバイルやデスクトップ、サーバ製品ではこのフレームワークを用いて2006年に出荷が開始されている。すぐにすべてのIntel 945チップセットを採用しているボードはこのフレームワークを搭載することになるだろう。しかし、製品用のファームウェアはEFIをサポートせず、レガシーBIOSに限定している。
2005年以来、EFIはXScaleをベースとする組み込みシステムのようなPC以外のアーキテクチャにも実装されている。
NT32を含むEDKによってWindowsアプリケーション内でEFIファームウェアおよびEFIアプリケーションを動作させることができるようになった。2007年、ヒューレット・パッカードはEFI互換ファームウェアを用いた高機能プリンタ8000シリーズをリリースした。
[編集] オペレーティングシステム
Linuxは2000年初期からeliloというEFIブートローダを使って、EFIを使って起動することができる。eliloはIA-64プラットフォーム上でLinuxを単に起動できるだけであり、IA-32プラットフォームでも同じことが可能である。2006年12月現在、x86-64モードで動作するeliloは存在しない。
HP-UXは2002年からIA-64システム上でEFIを使ってブート機構を作っていた。OpenVMSは2005年1月からEFIを使って製品リリースがされている。
MicrosoftのIA-64用のWindows Server 2003、Windows XP 64bit Edition、Windows2000 Advanced Serverのうち、ItaniumプロセッサファミリーをサポートするものはすべてEFIをサポートしており、DIG64仕様を通じてプラットフォームの要件となっている。
アップルは、インテルアーキテクチャベースのMacでEFIを採用した。
MicrosoftはWindowsサーバであるWindows Server 2008のx64版でUEFIに対応した。Windows Vistaのx64版では、2008年3月19日にWindows Update及びダウンロードセンターで配布が開始されたSP1でEFIに対応した。PCメーカやベンダのサポートが不足しているため、公式にはEFIを用いて32ビットCPUで起動できるものは存在しない。
Microsoftは、Andrew RitzとJamie Schwarzに、VistaとServer 2008上でUEFIを用いてOS起動前の処理を説明するビデオをリリースした。