Extensible Firmware Interface

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内, 検索
ソフトウェアスタックにおけるEFIの位置づけ

Extensible Firmware Interface (エクステンシブル・ファームウェア・インターフェース、EFI)はオペレーティングシステムとプラットフォームファームウェアとの間のソフトウェアインタフェースを定義する仕様である。EFIはすべてのIBM PC互換機に採用された歴史的に古いBIOSインタフェースの置き換えを狙っている。EFI仕様は元々インテルヒューレットパッカードによって開発されたが、現在はUnified EFI Forumの管理に移管され、Unified EFI (UEFI) として公式に知られるようになっている。

目次

[編集] 歴史

そもそもEFIが開発された動機は、1990年代中盤のインテルとヒューレットパッカードによる初代Itanium機の開発初期にまでさかのぼる。PCのBIOSの制限(16ビットプロセッサモード、1MBのアドレス空間PC/ATハードウェアへの依存)によって、Itaniumをターゲットとした巨大なサーバプラットフォームには採用できないことが判明した。これらの課題に対しての最初の成果が、最初にIntel Boot Initiativeと呼ばれ、後にEFIと名前を変えるものであった。

EFI仕様1.02は2000年12月12日にインテルによってリリースされた(最初に発行されたものはバージョン1.01であったが、法的な不備や商標などのミスによりすぐに取り下げられている)。

EFI仕様1.10は2002年12月1日にインテルによってリリースされた。それにはバージョン1.02からいくつかの細かい機能強化とEFIドライバモデルが記載されていた。

2005年には、インテルは同仕様の普及を務めるべく設立されたUEFIフォーラムへと、権利を移管した。以後は同フォーラムがEFI仕様の開発と普及につとめている。EFIはこれを反映してUnified EFI (UEFI) と名前を変え、多くのドキュメントが両方の用語を同じものとして使うようになった。

UEFIフォーラムは2007年1月7日にUEFI仕様バージョン2.1をリリースし、これは2007年3月現在の最新の仕様となっている。その仕様には改善された暗号化、ネットワーク認証、ユーザーインタフェースのアーキテクチャ(UEFI中にある対人インタフェース)が追加されている。

インテルによる開発から10年以上たった2011年、2TB以上の容量を持つハードディスクに対応するために、P67, H67, H61, Z68チップセットを使用したマザーボードでUEFIの採用が本格化した。

[編集] 詳細

EFIブートマネージャーとEFIデバイスドライバとの間の関連

EFI仕様によって定義されたインタフェースは、プラットフォーム情報などのデータテーブルを持っている。この情報やEFIの機能はブートローダーやOSが利用できる。

従来のPC BIOSに対しての強化点としてはACPISMBIOSはすでにEFIの中にあるので、16ビットで動作するインタフェースに拠らなくても利用できる。

[編集] サービス

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でのディスクパーティションの容量の限界と領域の数の制限は拡張され、時同じくして開発された2TB以上の世代のシリアルATA内部ハードディスクからの起動がサポートされた。EFI仕様はファイルシステムそのものには言及していない。たいていのEFIの実装ではファイルシステムとしてFAT32をサポートしている。

[編集] EFIシェル

EFIコミュニティはオープンソースシェル環境を作った。これはちゃんとしたOSを直接起動するのではなく、なんらかの実装上でユーザがEFIシェルと呼ぶものを起動することができる。このシェルはEFIアプリケーションであり、プラットフォームのROM内に直接焼きこまれているか、ROM内のデバイスドライバが制御できるデバイス内に存在する必要がある。

シェルは他のEFIアプリケーション、例えばシステムの起動やOSのインストール、システムの診断や設定、システムのフラッシュROMのアップデートなどに使われる。このことにより、完全なオペレーティングシステムを起動することなしにCDDVDを再生したり、必要な機能を持つ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ライセンスEclipse Public Licenseを含むいくつかのライセンスが適用されている。

[編集] EFIおよびこのフレームワークを用いたプラットフォーム

インテルの最初のItaniumワークステーションとサーバ。2000年にリリースされ、EFI 1.02をサポートしている。

ヒューレット・パッカードの最初のItanium 2システム。2002年にリリースされ、EFI 1.10をサポートしている。これらはWindowsLinuxFreeBSDHP-UXが起動できた。

DIG64仕様に従ったEFI互換ファームウェアを搭載したすべてのItaniumとItanium2システム。

2003年11月ゲートウェイは、Gateway 610 Media Centerに、x86のWindowsベースのコンピュータシステムとしては初めてこのフレームワークをベースとしたファームウェアである、Insyde SoftwareのInsydeH2Oというファームウェアを導入した。このファームウェアではまだWindowsを起動するために、compatibility support moduleを使ってレガシーBIOSを実装していた。

2006年1月、アップルはインテルアーキテクチャ (IA-32) をベースとした最初のMacintosh (Intel Mac) を出荷した。このシステムはEFIを採用していて、以前のPowerPCベースのシステムに採用していたOpen Firmwareに代わって、このフレームワークを採用した。2006年4月5日、アップルはBoot Campと呼ばれるソフトウェアをリリースした。これにはWindows XPをユーザが既存のパーティションを壊さずに簡単にインストールできるツールと、Windows XP用のドライバディスクを提供している。ここでもまたファームウェアアップデートを通じて、EFI実装に加えてレガシーBIOSのサポートが追加された。続くMacintoshの機種ではより新しいファームウェアが入った状態で出荷されている。いまやすべてのインテルCPU搭載Macintoshは、Windows XPのようなレガシー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とx86-64プラットフォームでも同じことが可能である。[1]

HP-UXは2002年からIA-64システム上でEFIを使ってブート機構を作っていた。OpenVMSは2005年1月からEFIを使って製品リリースがされている。

マイクロソフトのIA-64用のWindows Server 2003、Windows XP 64bit Edition、Windows2000 Advanced Serverのうち、ItaniumプロセッサファミリーをサポートするものはすべてEFIをサポートしており、DIG64仕様を通じてプラットフォームの要件となっている。

アップルは、インテルアーキテクチャベースのMacでEFIを採用した。

マイクロソフトはWindowsサーバであるWindows Server 2008のx64版でUEFIに対応した。Windows Vistaのx64版では、2008年3月19日Windows Update及びダウンロードセンターで配布が開始されたSP1でEFIに対応した。PCメーカやベンダのサポートが不足しているため、公式にはEFIを用いて32ビットCPUで起動できるものは存在しない。

マイクロソフトは、Andrew RitzとJamie SchwarzがWindows VistaとWindows Server 2008上でUEFIを用いてOS起動前の処理を説明するビデオをリリースした。

[編集] 脚注

  1. ^ [1] ELILO: EFI Linux Boot Loader

[編集] 外部リンク

個人用ツール
名前空間
変種
操作
案内
ヘルプ
ツールボックス
他の言語