UEFI(Unified Extensible Firmware Interface)とは
Unified Extensible Firmware Interface(UEFI)は、
オペレーティングシステム(OS)とプラットフォーム
ファームウェア間のソフトウェアインターフェースを定義する
仕様です。従来のBIOS(
Basic Input/Output System|Basic Input_Output System)に代わるものとして、よりセキュアで柔軟な
ブート環境を提供します。
UEFIの歴史
UEFIの起源は、
1990年代中盤の
インテルと
ヒューレット・パッカードによる
Itaniumプロセッサの開発に遡ります。従来のBIOSが抱える16ビットプロセッサモードや1MBの
アドレス空間といった制限が、当時のサーバープラットフォームには不十分であったため、新しい
ファームウェアインターフェースが必要とされました。この課題に対応するため、Intel Boot Initiativeが開発され、後にExtensible Firmware Interface(EFI)と改名されました。
EFI
仕様は、
インテルによって開発が進められ、
2000年にバージョン1.02、
2002年にバージョン1.10がリリースされました。その後、
2005年に
インテルはEFIの権利をUnified EFI Forumに移管し、EFIはUnified EFI(UEFI)として発展しました。現在、UEFIの
仕様はUnified EFI Forumによって管理・開発されています。
UEFIの特長
UEFIは単なるインターフェース
仕様であり、特定のプロセッサに依存しません。従来のBIOSとは異なり、近代的なソフトウェア開発手法が採用されており、
C言語などで実装されることが一般的です。UEFI
ファームウェアには、以下のような技術的な利点があります。
2TiBを超える大容量ディスクからのブート: MBR(マスターブートレコード)の制限を受けず、GPT(GUIDパーティションテーブル)をサポートし、大容量ディスクからのブートを可能にします。
高速なブート: 従来のBIOSよりも高速な
ブート処理を実現します。
CPUに依存しないアーキテクチャ: 特定のCPUアーキテクチャに依存しない設計です。
CPUに依存しないドライバ: 各種
デバイスドライバをプロセッサに依存せずに利用できます。
ネットワーク対応の柔軟なプレOS環境: ネットワーク機能も利用可能なプレOS環境を提供します。
モジュール化設計: モジュール単位での開発・管理が可能です。
UEFIの構造
UEFIは、プラットフォーム情報などのデータテーブルを保持しており、OSローダーやOSがこれらの情報や機能を利用できます。UEFIには、
ブートサービスとランタイムサービスという2種類のサービスがあります。
ブートサービス: デバイスの初期化、コンソール機能、ファイルシステムアクセスなど、OS起動前に必要なサービスを提供します。
ランタイムサービス: OS起動後にも利用可能なサービスで、グラフィックス出力、メモリマップ、ACPI(
Advanced Configuration and Power Interface)、SMBIOS(System Management BIOS)などが含まれます。
UEFIでは、モジュール間の通信にプロトコルが使用されます。EFIドライバは、このプロトコルに則ってサービスを提供する必要があります。また、EFIは、EBC(EFI Byte Code)と呼ばれるプロセッサに依存しないドライバ実行環境を提供しています。
UEFIブートマネージャーとセキュアブート
UEFI
ブートマネージャーは、OSの選択とロードを担います。OSローダーは、UEFIアプリケーションとして
ファイルシステム上に格納され、NVRAMに記録された
ブート変数でパスが指定されます。また、UEFIはセキュア
ブート機能を搭載しており、起動するOSの電子署名を検証することで、不正なソフトウェアの起動を防止します。
UEFIの多様な利用シーン
UEFIは、従来のPCだけでなく、
組み込みシステムや仮想環境でも利用されています。
仮想化: 仮想マシン環境でも、仮想UEFIが提供され、UEFIに対応したゲストOSを起動できます。
組み込みシステム:
組み込みシステムでも、UEFIの機能を利用し、システム初期化やOSの起動が行われています。
ハードウェア: UEFIファームウェアはマザーボード上のROMに格納され、システムの初期化やテスト、ブートローダーのロードを行います。
UEFIには、EFIシェルと呼ばれるシェル環境があり、EFIアプリケーションの実行、ファイル操作、デバイスドライバのロードなどが可能です。EFIシェルは、システムの起動やOSのインストール、診断、設定、ファームウェアのアップデートなどに利用されます。
実装と採用事例
UEFIの実装は、Intel Platform Innovation Framework for EFIをベースとしており、このフレームワークは、レガシーBIOSのサポートを可能にするCompatibility Support Module(CSM)も備えています。
UEFIは、Intel Itaniumワークステーションやサーバーで採用された後、AppleのMacintosh、各種PCマザーボード、サーバー、組み込みシステムなど、様々なプラットフォームに普及しました。
UEFIからブート可能なOSを「UEFI-aware OS」と呼びます。LinuxはEFIブートローダーを使って、UEFIから起動することが可能です。また、Linuxカーネル自体をEFIアプリケーションとしてブートする機能も追加されています。Windowsも、x64版を中心にUEFIをサポートしており、Windows 8以降ではセキュアブートとともにUEFI対応が進んでいます。
UEFIへの批判と今後の展望
UEFIは、利便性やセキュリティの向上に貢献する一方で、いくつかの批判も存在します。セキュアブートがユーザーによるOSの選択の自由を制限する可能性があるという懸念や、従来のBIOSと比較して複雑なため、トラブルシューティングが困難になるという意見もあります。
しかし、UEFIは、現代のコンピューターシステムにおいて、不可欠な要素となっており、今後も様々な分野での利用が拡大すると考えられます。特に、セキュリティ機能の強化や、より柔軟なブート環境の提供に向けた開発が、今後も進められるでしょう。
UEFI関連技術
UEFIの理解を深める上で、以下の関連技術についても知っておくと役立ちます。
ACPI (Advanced Configuration and Power Interface): 電源管理に関するインターフェース
SMBIOS (System Management BIOS): ハードウェア情報をOSに提供するインターフェース
TPM (Trusted Platform Module): セキュリティチップ
Coreboot: オープンソースのファームウェアプロジェクト
Open Firmware: 以前のMacintoshで採用されていた
ファームウェア
UEFIは、コンピューターシステムの根幹を支える重要な技術です。今後もUEFIの動向に注目していく必要があるでしょう。