SoC プラットフォームのすべての Windows エディションに適用される UEFI 要件
このトピックでは、デスクトップ エディション (Home、Pro、Enterprise、Education) の Windows 10 と Windows 10 Mobile に適用される UEFI の要件について説明します。Windows 10 Mobile にのみ適用されるその他の要件については、「Windows 10 Mobile の UEFI 要件」をご覧ください。
要件の要約
次の表は、UEFI 仕様で定義されている、UEFI 準拠のためのすべての現行の要件を示します (UEFI 2.3.1 仕様のセクション 2.6)。次の表では、"明示的な Windows 要件" という用語で、Windows コンポーネントから直接呼び出されるあらゆるプロトコルまたはサービスを識別しています。これらのサービスは、Windows によって明示的に使われますが、一覧にあるその他のサービスやプロトコルは、コア ファームウェア実装、EFI デバイス ドライバー、または開発ツール チェーンと展開ツール チェーンに暗黙で、または明示的に必要となります。
Microsoft では、実装したお客様からの、この一連の要件についてのフィードバックとコメントをお待ちしています。 OS とファームウェアのいずれでも必要でないと判断されたすべての UEFI 準拠要件については、このクラスのデバイスに対してこれらの準拠要件が緩和されるよう、UEFI.org とともに取り組むことになります。
特定の要件の詳細については、表の後の各セクションをご覧ください。
要件 | UEFI 仕様のセクション | 注意事項 |
---|---|---|
EFI システム テーブル | 4.3 | 明示的な Windows 要件 |
EFI ブート サービス | 6.0 | |
イベント、タイマー、およびタスク サービス | 6.1 | |
メモリ サービス | 6.2 | 明示的な Windows 要件 |
プロトコル ハンドラー サービス | 6.3 | 明示的な Windows 要件 |
イメージ サービス | 6.4 | 明示的な Windows 要件 |
その他のサービス | 6.5 | 明示的な Windows 要件 |
EFI ランタイム サービス | 7.0 | |
タイム サービス | 7.3 | 明示的な Windows 要件 |
変数サービス | 7.2 | 明示的な Windows 要件 |
その他のサービス | 7.5 | 明示的な Windows 要件 |
必要な UEFI プロトコル | ||
EFI 読み込み済みイメージ プロトコル | 8.1 | |
EFI 読み込み済みイメージ デバイス パス プロトコル | 8.2 | |
EFI デバイス パス プロトコル | 9.2 | 明示的な Windows 要件 |
EFI デバイス パス ユーティリティ プロトコル | 9.5 | |
EFI 解凍プロトコル | 18.5 | |
EBC インタープリター プロトコル | 20.11 | |
条件的に必要な UEFI プロトコル | ||
EFI シンプル テキスト入力プロトコル | 11.3 | 明示的な Windows 要件 |
EFI シンプル テキスト入力 EX プロトコル | 11.2 | |
EFI シンプル テキスト出力プロトコル | 11.4 | |
EFI グラフィックス出力プロトコル | 11.9 | 明示的な Windows 要件 |
EFI EDID 検出済みプロトコル | 11.9.1 | |
EFI EDID アクティブ プロトコル | 11.9.1 | |
EFI ブロック IO プロトコル | 12.8 | 明示的な Windows 要件 |
EFI ディスク IO プロトコル | 12.7 | |
EFI シンプル ファイル システム プロトコル | 12.4 | |
EFI Unicode 照合プロトコル | 12.10 | |
EFI シンプル ネットワーク プロトコル | 21.1 | |
EFI PXE ベース コード プロトコル | 21.3 | |
EFI ブート整合性サービス プロトコル | 21.5 | |
EFI シリアル IO プロトコル | 11.8 | |
UEFI ARM バインディング | 2.3.5 | 明示的な Windows 要件 |
セキュリティ要件 | ||
セキュア ブート | 27.0 | 明示的な Windows 要件 |
ブート マネージャーの要件 | 3.1、3.3 | 明示的な Windows 要件 |
EFI システム テーブルの要件
EFI システム テーブルは、実装されるリビジョン レベルで標準の定義に従っている必要があります。EFI システム テーブルが指す構成テーブルは、次の表に示す 2 つの GUID と、それらに関連付けられているポインターを含む必要があります。
GUID | 説明 |
---|---|
EFI_ACPI_Table GUID | この GUID は、プラットフォームの ACPI ルート システム記述ポインター (RSDP) を指す必要があります。 |
SMBIOS_Table GUID | この GUID は、SMBIOS エントリ ポイント構造体を指す必要があります。 Windows には、2.4 以降のリビジョン レベルの SMBIOS 仕様が必要です。 セクション 3.2、「Required Structures and Data」(必要な構造体とデータ)、およびセクション 4、「Conformance Guidelines」(準拠ガイドライン) が必要です。Windows の SMBIOS 互換性テストが入手可能です。 |
EFI ブート サービスの要件
次の表は、Windows の EFI ブート サービスの要件の一覧です。
EFI ブート サービス | 要件 |
---|---|
メモリ サービス | Windows には、すべてのメモリ サービスが必要です。 |
プロトコル ハンドラー サービス | Windows には、次のプロトコル ハンドラー サービスが必要です。
|
イメージ サービス | Windows には、次のイメージ サービスが必要です。
|
その他のブート サービス | Windows には、次のその他のブート サービスが必要です。
|
EFI ランタイム サービスの要件
次の表は、Windows の EFI ランタイム サービスの要件の一覧です。
EFI ランタイム サービス | 要件 |
---|---|
タイム サービス | Windows には、次のタイム サービスが必要です。
|
変数サービス | すべての UEFI 変数サービスは、複数のブート デバイスと、システムのターゲット クラスのセキュリティ変数を管理するために必要です。 |
その他のランタイム サービス | Windows には、次のその他のランタイム サービスが必要です。
|
プロトコルの要件
次の表では、起動中に特定の機能を実現するために Windows に必要な UEFI プロトコルについて説明します。
プロトコル | 要件 |
---|---|
グラフィックス出力プロトコル | Windows には、グラフィックス出力プロトコル (GOP) が必要です。 具体的なフレーム バッファーの要件は次のとおりです。
実行が UEFI アプリケーションに引き継がれる際には、どのような目的であっても、ファームウェア ブート マネージャーとファームウェアがフレーム バッファーを使うことはできません。フレーム バッファーのスキャンは、ブート サービスが終了した後も続行される必要があります。 |
別の表示出力 | UEFI ファームウェアは、ハードウェアでサポートされている任意のディスプレイ コネクタを使用して起動をサポートする必要があります。内部パネルが接続されており、表示可能な場合は、内部パネルを使用してください。物理的に接続されているディスプレイへのすべての出力は、ブート画面を表示する必要があります。接続されているディスプレイでは、UEFI ファームウェアが、次の操作を実行する必要があります。
|
起動時の入力 | EFI シンプル テキスト入力プロトコルは、キーボードが組み込まれているか、接続されているシステムで起動時の選択やその他のメニューの選択を行うために必要です。キーボードのないシステムでは、ブート環境の 3 つのボタンをお勧めします。
ボタンの押下は、それぞれに次のキーボード キーをマッピングすることによって、EFI シンプル テキスト入力プロトコルを通じて報告される必要があります。
|
ローカル ストレージの起動 | ストレージ ソリューションに EFI システム パーティションと Windows OS パーティションが含まれている場合は、Windows が、ブロック I/O プロトコルとデバイス パス プロトコルをサポートする必要があります。ウェアレベリングまたはその他のフラッシュ管理が必要なフラッシュ ストレージから起動する場合は、これをファームウェア (UEFI アプリケーションではなく) に実装する必要があります。 |
セキュリティ要件
Windows には、セキュア ブート、メジャー ブート、暗号化、およびデータ保護の領域のセキュリティ要件があります。これらの要件について、次の表で詳しく説明します。さらに、SoC ハードウェアが原因で既存の標準 (TPM、RTC など) に準拠できない領域については、追加の要件が作成されています。これらについては、表の最後で説明しています。
領域 | 要件 |
---|---|
全般 |
|
UEFI セキュア ブート |
|
UEFI メジャー ブート | 次の各要件は、TCG TPM の実装の必要性を意味するものではありませんが、影響を受ける領域には、同等の機能が必要であることを意味しています。 プラットフォームのサポートは、暗号化セキュリティで保護された実行環境で実行されている TPM のファームウェア実装によって提供することができます。このサポートは、暗号化アクセラレーション エンジンの上に重ねられ、分離ストレージを活用します。Microsoft は、このような TPM 実装のリファレンス ソフトウェアをベンダー用に提供できる可能性があります。これについては、さらに検討が必要です。
|
暗号化 |
|
データ保護 |
|
その他のセキュリティ要件 | SoC プラットフォームの Windows には、次の追加要件が必要です。
|
ファームウェア ブート マネージャーの要件
ファームウェア ブート マネージャーは、仕様のセクション 3.3 で定義されている既定の起動動作をサポートする必要があります。さらに、マルチブートをサポートするために、グローバル定義の変数と、仕様のセクション 3.1 のブート マネージャーの要件が必要です。
UEFI ARM バインディングの要件
UEFI ARM バインディングには、UEFI 仕様に準拠するために必要な ARM プラットフォームに固有の要件が含まれます。Windows では、ARMv7 に適用される、ARM バインディングのすべての項目が必要です。Windows では、ARMv7 より前の項目はサポートされていないため、ARMv6k 以前の項目に固有のバインディング要件は必須ではありません。
バインディングでは、MMU の構成方法や、物理的なメモリマッピング方法などが指定されます。バインディングでは、UEFI プロトコルおよびサービスへの呼び出しを ARM ISA でのみ実行する必要があることも指定されます。つまり、Thumb2 または Thumb で実行されているソフトウェアは、UEFI 関数を呼び出す前に ARM モードに戻す必要があります。
UEFI ARM マルチプロセッサの起動の要件
Microsoft は、複数の ARM コアをマルチプロセッサ UEFI プラットフォームで起動するためのプロトコルを開発しました。このプロトコルは、Power State Coordination Interface (PSCI)をサポートしていない ARM プラットフォームの Windows で必要です。PSCI をサポートしていないプラットフォームでは、このプロトコルを使用しないでください。このプロトコルの詳細については、ACPI Component Architecture (ACPICA) の Web サイトにある「Multiprocessor startup on UEFI ARM-based platforms」(UEFI ARM ベースのプラットフォームでのマルチプロセッサの起動) ドキュメントをご覧ください。
プラットフォーム セットアップの要件
ファームウェアは、OS ローダーに引き継ぐ前に、システム ハードウェアを明確に定義された状態にする役割を果たします。次の表では、関連するプラットフォーム セットアップの要件を定義しています。
要件 | 説明 |
---|---|
ブート パス | ファームウェアは、Windows が UEFI 経由でブート デバイスにアクセスし、カーネルを読み込むことができるポイントまでプラットフォームを初期化する必要があります。ブート デバイスから読み取るための階層構造に関わるすべてのデバイスは、パフォーマンスと電源を考慮して、妥当な速度で計時され、電力供給される必要があります。ベース プロセッサ コア自体も、システムがバッテリを消耗することなく、適切なタイミングで起動できるように、妥当な速度で計時され、電力供給される必要があります。 |
コア システム リソース | ACPI テーブル経由で OS に公開されているコア システム リソースは、電源をオンにし、計時する必要があります。コア システム リソースには割り込みコントローラー、タイマー、DMA コントローラーが含まれており、これらは OS で管理する必要があります。 さらに、OS で関連付けられているデバイス ドライバーがデバイスで割り込みをマスク解除し、再び有効にするまで、ExitBootServices() への呼び出しによって割り込みをマスクする必要があります。ブート サービス中に割り込みを有効にした場合は、ファームウェアが割り込みを管理すると見なされます。 |
デバッグ | Windows では、USB 3 ホスト (XHCI)、USB 2 ホスト (EHCI)1、IEEE 1394、シリアル、および USB 関数の各インターフェイス (および PCI イーサネット アダプター) によるデバッグがサポートされています。これらの 1 つ以上が、OS に渡される前にファームウェアによって電源供給され、計時され、初期化される必要があります。どれを選択した場合でも、デバッグ用の公開ポートを備えている必要があり、コントローラーは、メモリ マッピング済みであるか、専用 (非共有) の周辺機器バス経由で接続されている必要があります。 |
その他のプラットフォーム セットアップの要件 | ピンの多重化とパッド構成はすべて、OS ローダーにコントロールが渡される前にファームウェアで完了している必要があります。 |
インストール要件
Windows には、GPT パーティション ストレージ ソリューションに存在する OS パーティションが必要です。MBR パーティション ストレージは、データ ストレージとして使用できます。UEFI 仕様で定義されているように、UEFI プラットフォームには、専用のシステム パーティションが必要です。Windows には、EFI システム パーティション (ESP) と呼ばれる、この専用システム パーティションが必要です。
ハードウェア セキュリティ テスト インターフェイス (HSTI) の要件
プラットフォームは、ハードウェア セキュリティ テスト インターフェイスを実装する必要があり、プラットフォームは、ハードウェア セキュリティ テスト可能性仕様に指定されているように、ドキュメントと移行ツールを共有する必要があります。