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の動向に注目していく必要があるでしょう。