SoCプラットフォーム上のWindowsエディションのUEFI要件
この記事では、デスクトップ エディション (Home、Pro、Enterprise、Education) および Windows 10 Mobile の Windows 10 に適用される UEFI 要件について説明します。 Windows 10 Mobile にのみ適用される追加の要件については Windows 10 Mobile の UEFI 要件 を参照してください。
要件の概要
次の表に、UEFI 仕様 (UEFI 2.3.1 仕様のセクション 2.6) で定義されている UEFI コンプライアンスの現在の要件をすべて示します。 この表では 明示的な 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_テーブル GUID | この GUID は、プラットフォームの ACPI ルート システム記述ポインター (RSDP) を指す必要があります。 |
S MB (メガバイト)IOS_Table GUID | この GUID は、S MB (メガバイト)IOS エントリ ポイント構造体を指す必要があります。 Windows には、2.4 以降のリビジョン レベルで S MB (メガバイト)IOS 仕様が必要です。 セクション 3.2、「必須の構造とデータ」、4「準拠ガイドライン」が必要です。 Windows S MB (メガバイト)IOS 互換性テストを利用できます。 |
EFI ブート サービスの要件
次の表に、Windows の EFI ブート サービスの要件を示します。
EFIブートサービス | 要件 |
---|---|
メモリサービス | Windows では、すべてのメモリ サービスが必要です。 |
プロトコル ハンドラー サービス | Windows には、次のプロトコル ハンドラー サービスが必要です。 OpenProtocol() CloseProtocol() LocateDevicePath() LocateHandle() |
画像サービス | Windows には、次のイメージ サービスが必要です。 ExitBootServices() |
その他のブート サービス | Windows には、次のその他のブート サービスが必要です。 Stall() 注: Stall() の実装では、エラー修正または取り消しを確実に行うことができるよう、決定論的 (反復可能) エラーが必要です。 |
EFI ランタイム サービスの要件
次の表に、Windows の EFI ランタイム サービス要件を示します。
EFI ランタイム サービス | 要件 |
---|---|
時間サービス | Windows には次のタイム サービスが必要です。 GetTime() SetTime() 注: タイム・サービスは、プラットフォームの時刻ハードウェアにアクセスするために、ブート中 (ExitBootServices()の前) にのみ呼び出されます。 |
変数サービス | システムのターゲット クラスで複数のブート デバイスとセキュリティ変数を管理するには、すべての UEFI 変数サービスが必要です。 |
その他のランタイム サービス | Windows には、次のその他のランタイム サービスが必要です。 ResetSystem() 注: ResetSystem() の実装では、リセット オプションとシャットダウン オプションの両方をサポートする必要があります。 |
プロトコル要件
次の表では、起動時に特定の機能を実行するために Windows に必要な UEFI プロトコルについて説明します。
Protocol | 要件 |
---|---|
グラフィック出力プロトコル | Windows にはグラフィックス出力プロトコル (GOP) が必要です。 特定のフレーム バッファーの要件は次のとおりです。 統合ディスプレイの場合、 HorizontalResolution と VerticalResoluton はパネルのネイティブ解像度である必要があります。 外部ディスプレイの場合、 HorizontalResolution と VerticalResoluton はディスプレイのネイティブ解像度である必要があります。または、これがサポートされていない場合は、ビデオ アダプターと接続されたディスプレイの両方でサポートされる最大値が必要です。 PixelsPerScanLine は HorizontalResolution と 等しくなければなりません。 PixelFormat は PixelBlueGreenRedReserved8BitPerColor でなければなりません。 物理フレーム バッファーが必要です。 PixelBltOnly はサポートされていません。 実行が UEFI ブート アプリケーションに渡される場合、ファームウェア ブート マネージャーとファームウェアは、フレーム バッファーを任意の目的で使用してはなりません。 ブート サービスが終了した後も、フレーム バッファーは引き続きスキャンアウトされる必要があります。 |
代替表示出力 | UEFI ファームウェアは、ハードウェアでサポートされている任意のディスプレイ コネクタを使用した起動をサポートする必要があります。 内部パネルが接続され、表示されている場合は、内部パネルを使用する必要があります。 物理的に接続されたディスプレイを持つすべての出力は、ブート画面を表示する必要があります。 接続されたディスプレイの場合、UEFI ファームウェアは次の要件を満たす必要があります。 ネイティブ解像度を決定できる場合は、ディスプレイのネイティブ モードで出力を初期化します。 ネイティブ モードが不可能な場合は、最も高い互換性のあるモードに初期化する必要があります。 表示機能を決定できない場合、接続されたディスプレイは、できるだけ多くのモニター (通常は 60 Hz で 640 x 480 または 1024 x 768) と互換性があるモードで初期化する必要があります。 |
起動時の入力 | EFI Simple Text Input Protocol は、キーボードが組み込まれているシステムやキーボードが接続されているシステムでブートの選択やその他のメニューを選択するために必要です。 キーボードレス システムの場合、ブート環境では次の 3 つのボタンが推奨されます。 [スタート] ボタン [音量を上げる] ボタン 音量小ボタン ボタンの押下は、EFI 単純テキスト入力プロトコルを介して、それぞれ次のキーボード キーにマッピングして報告する必要があります。 Windows キー 上矢印キー 下方向キー |
ローカル・ストレージ・ブート | Windows では、EFI システム パーティションと Windows OS パーティションを含むストレージ ソリューションのブロック I/O プロトコルとデバイス パス プロトコルのサポートが必要です。 摩耗平準化またはその他のフラッシュ管理を必要とするフラッシュ ストレージから起動する場合は、ファームウェア (UEFI アプリケーションではなく) に実装する必要があります。 |
セキュリティ要件
Windows には、セキュア ブート、メジャー ブート、暗号化、データ保護の領域にセキュリティ要件があります。 これらの要件については、次の表で詳しく説明します。 さらに、SoC ハードウェアが既存の標準 (TPM、RTC など) への準拠を妨げている領域では、追加の要件が開発されています。 これらは、表の最後で説明します。
領域 | 要件 |
---|---|
全般 |
|
UEFI セキュア ブート |
|
UEFI 測定ブート | 次の要件は、TCG TPM 実装の必要性を意味するものではありません。ただし、影響を受ける領域に同等の機能が必要です。 プラットフォームのサポートは、セキュリティで保護された実行環境で実行され、暗号化アクセラレーション エンジンの上に重ねて分離ストレージを利用する TPM のファームウェア実装によって提供される場合があります。 Microsoft は、ベンダーが使用するために、このような TPM 実装用の参照ソフトウェアを提供できる場合があります。 これについては、今後の議論の対象となります。
|
暗号 |
|
データ保護 |
|
その他のセキュリティ要件 | Windows on SoC プラットフォームでは、次の追加要件が必要です。
|
ファームウェア ブート マネージャーの要件
ファームウェア ブート マネージャーは、仕様のセクション 3.3 で定義されている既定のブート動作をサポートする必要があります。 さらに、マルチブートのサポートのためには、グローバルに定義された変数と、仕様のセクション 3.1 のブート マネージャーの要件が必要です。
UEFI Arm のバインド要件
UEFI Arm Binding には、UEFI 仕様に準拠するために必要な Arm プラットフォームに固有の要件が含まれています。 Windows では、ARMv7 に適用できる Arm バインド内のすべてを必要とします。 Windows では ARMv7 以前の機能はサポートされていないため、ARMv6k 以下に固有のバインディングの要件は省略可能です。
バインディングでは、MMU の構成方法や物理メモリのマッピング方法などを指定します。 また、バインディングでは、UEFI プロトコルとサービスに対する呼び出しを Arm ISA でのみ行う必要があることを指定します。つまり、Thumb2 または Thumb で実行されているソフトウェアは、UEFI 関数を呼び出す前に Arm モードに切り替える必要があります。
UEFI Arm マルチプロセッサの起動要件
Microsoft は、マルチプロセッサ UEFI プラットフォームで複数の Arm コアを開始するためのプロトコルを開発しました。 このプロトコルは 電源状態調整インターフェイス (PSCI)をサポートしていない Arm プラットフォーム上の Windows で必要です。 PSCI をサポートするプラットフォームでは、このプロトコルを使用しないでください。 ここのプロトコルの詳細については、ACPI コンポーネント アーキテクチャ (ACPICA) Web サイトのドキュメント UEFI Arm ベースのプラットフォームでのマルチプロセッサの起動 を参照してください。
プラットフォームのセットアップ要件
ファームウェアは、OS ローダーに渡す前に、システム ハードウェアを明確に定義された状態にする役割を担います。 次の表では、関連するプラットフォームのセットアップ要件を定義します。
要件 | 説明 |
---|---|
ブート パス | ファームウェアは、Windows が UEFI 経由でブート デバイスにアクセスしてカーネルを読み込める時点までプラットフォームを初期化する必要があります。 ブート デバイスから読み取る階層に関係するすべてのデバイスは、パフォーマンスと電源に関する考慮事項を考慮して、適切な速度でクロックを供給し、電源を供給する必要があります。 ベース プロセッサ コア自体も、適切な速度でクロックを供給し、バッテリを消耗することなくシステムをタイムリーに起動できるようにする必要があります。 |
コアシステムリソース | ACPI テーブルを介して OS に公開されるコア システム リソースの電源をオンにし、クロックを設定する必要があります。 コア システム リソースには、OS で管理する必要がある割り込みコントローラー、タイマー、DMA コントローラーが含まれます。 さらに、OS 内の関連するデバイス ドライバーがマスクを解除し、デバイスで割り込みを再度有効にするまで、ExitBootServices() の呼び出しによって割り込みをマスクする必要があります。 ブート サービス中に割り込みが有効になっている場合は、ファームウェアによって割り込みが管理されていると見なされます。 |
デバッグ | Windows では、USB 3 ホスト (XHCI) 、USB 2 ホスト (EHCI)1、I Enterprise Edition E 1394、シリアルおよび USB 関数インターフェイス (および PCI イーサネット アダプター) を介したデバッグがサポートされています。 これらの少なくとも 1 つは、OS ハンドオフの前にファームウェアで電源を供給、クロック、初期化する必要があります。 どちらのオプションを指定する場合でも、デバッグ用の公開ポートが必要です。また、コントローラーはメモリ マップされているか、専用の (共有されていない) 周辺機器バス経由で接続されている必要があります。 |
その他のプラットフォームのセットアップ要件 | OS ローダーに制御を渡す前に、ピン多重化とパッドの構成をファームウェアで完了する必要があります。 |
インストール要件
Windows では、OS パーティションが GPT パーティション分割ストレージ ソリューション上に存在する必要があります。 MB (メガバイト)R パーティション分割ストレージは、データ ストレージとして使用できます。 UEFI 仕様で定義されているように、UEFI プラットフォームには専用のシステム パーティションが必要です。 Windows では、EFI システム パーティション (ESP) と呼ばれるこの専用システム パーティションが必要です。
ハードウェア・セキュリティ・テスト・インターフェース (HSTI) の要件
プラットフォームはハードウェア セキュリティ テスト インターフェイスを実装する必要があり ハードウェア セキュリティ テスト容易性仕様で指定されているドキュメントとツールを共有する必要があります。
関連記事
SoC プラットフォーム上の Windows に対する最小限の UEFI 要件