Unified Extensible Firmware Interface

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シェル



UEFIには、EFIシェルと呼ばれるシェル環境があり、EFIアプリケーションの実行、ファイル操作、デバイスドライバのロードなどが可能です。EFIシェルは、システムの起動やOSのインストール、診断、設定、ファームウェアのアップデートなどに利用されます。

実装と採用事例



UEFIの実装は、Intel Platform Innovation Framework for EFIをベースとしており、このフレームワークは、レガシーBIOSのサポートを可能にするCompatibility Support Module(CSM)も備えています。

UEFIは、Intel Itaniumワークステーションやサーバーで採用された後、AppleのMacintosh、各種PCマザーボード、サーバー、組み込みシステムなど、様々なプラットフォームに普及しました。

UEFIとオペレーティングシステム



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

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。