UEFI

統合拡張ファームウェアインターフェース
略語UEFI
状態出版
年が始まった2006年[ a ]
最新バージョン2.11 [ 1 ] 2024年12月16日
組織UEFIフォーラム
関連規格
前任者IBM PC互換機のBIOS [ b ]
ドメインファームウェア
Webサイトuefi.orgWikidataで編集する
UEFIとBIOSの両方をサポートするLenovo ThinkPad T470のブート順序選択メニュー
UEFIの実装は通常、マザーボード上のNORフラッシュメモリ[ 2 ] [ 3 ] [ 4 ]に保存されます。様々なI/Oプロトコルが使用可能ですが、SPIが最も一般的です。

UEFIUnified Extensible Firmware Interface、頭文字は/ ˈ juː ɪ f / ) [ c ]は、コンピューティングプラットフォームのファームウェアアーキテクチャの仕様です。コンピュータの電源を入れると、通常、オペレーティングシステムが起動する前に、UEFI実装が最初に実行されます。例としては、 AMI AptioPhoenix SecureCoreTianoCore EDK IIInsydeH2Oなどがあります。

UEFIは、IBM PC互換機ブートROMに搭載されていたBIOSに代わるものです。 [ 5 ] [ 6 ]ただし、 CSMブートを使用することでBIOSとの下位互換性を維持できます。前身のBIOSはIBMが独自ソフトウェアとして作成した事実上の標準ですが、UEFIは業界団体によって維持されているオープンスタンダードです。BIOSと同様に、ほとんどのUEFI実装は独自仕様です。

インテルは、オリジナルのExtensible Firmware InterfaceEFI)仕様を開発しました。EFIの最終バージョンは、2005年にリリースされた1.10です。その後のバージョンは、UEFIフォーラムによってUEFIとして開発されてきました。

UEFI はプラットフォームやプログラミング言語に依存しませんが、リファレンス実装 TianoCore EDKII には Cが使用されます。

歴史

EFIのそもそものきっかけは、1990年代半ば、最初のIntel-HP Itaniumシステムの開発初期段階に遡ります。BIOS制限は、Itaniumがターゲットとしていた大型サーバープラットフォームにとってあまりにも制限的になっていました。[ 7 ]これらの懸念に対処するための取り組みは1998年に始まり、当初はIntel Boot Initiativeと呼ばれていました。[ 8 ]その後、 Extensible Firmware Interface (EFI)に改名されました。[ 9 ] [ 10 ]

最初のオープンソースUEFI実装であるTianoは、2004年にIntelによってリリースされました。Tianoはその後EDK [ 11 ]とEDK II [ 12 ]に置き換えられ、現在はTianoCoreコミュニティによってメンテナンスされています。[ 13 ]

2005年7月、IntelはEFI仕様のバージョン1.10の開発を中止し、Unified EFI Forumに寄贈しました。Unified EFI Forumは、この仕様をUnified Extensible Firmware Interface (UEFI)として開発しました。オリジナルのEFI仕様はIntelが所有しており、EFIベースの製品のライセンスはIntelが独占的に提供していますが、UEFI仕様はUEFI Forumが所有しています。[ 7 ] [ 14 ]

UEFI 仕様のバージョン 2.0 は、2006 年 1 月 31 日にリリースされました。暗号化とセキュリティが追加されました。

UEFI 仕様のバージョン 2.1 は、2007 年 1 月 7 日にリリースされました。ネットワーク認証とユーザー インターフェイスアーキテクチャ (UEFI では「ヒューマン インターフェイス インフラストラクチャ」) が追加されました。

UEFI 仕様のバージョン 2.3.1 は、2011 年 4 月 6 日にリリースされました。セキュア ブートとARM アーキテクチャのサポートが追加されました。

2018年10月、ArmはArm ServerReadyを発表しました。これは、Armベースのサーバーで汎用の市販オペレーティングシステムとハイパーバイザーを搭載するためのコンプライアンス認証プログラムです。このプログラムでは、システムファームウェアがServer Base Boot Requirements (SBBR)に準拠する必要があります。SBBRでは、UEFI、 ACPI、およびSMBIOSへの準拠が必要です。2020年10月、ArmはプログラムをエッジおよびIoT市場に拡張することを発表しました。新しいプログラム名はArm SystemReadyです。Arm SystemReadyは、現在3つのレシピを提供するBase Boot Requirements ( BBR )仕様を定義しました。そのうち2つはUEFIに関連しています。1) SBBR: Windows、Red Hat Enterprise Linux、VMware ESXiなどのエンタープライズレベルのオペレーティング環境に適したUEFI、ACPI、およびSMBIOSへの準拠が必要です。2) EBBR: Yoctoなどの組み込み環境に適したEmbedded Base Boot Requirements ( EBBR )で定義されている一連のUEFIインターフェースへの準拠が必要です。多くのLinuxおよびBSDディストリビューションは、両方のレシピをサポートできます。

2018年12月、マイクロソフトはMicrosoft SurfaceおよびHyper-V製品で使用されているTianoCore EDK IIのフォークであるProject Muを発表しました。このプロジェクトは、サービスとしてのファームウェアという概念を推進しています。[ 15 ]

最新のUEFI仕様バージョン2.11は2024年12月に公開されました。[ 16 ]

互換性

プロセッサの互換性

UEFIは32ビット以上のプロセッサアーキテクチャをサポートしています。ただし、リトルエンディアンモードのプロセッサのみがサポートされます。[ 16 ] : セクション1.9.1 UEFI仕様バージョン2.11には、以下のプロセッサアーキテクチャに関する公式ドキュメントがあります。[ 16 ] : セクション3.5.1.1

POWERPC64向けの非公式UEFIサポートは、 OpenPOWERの抽象化レイヤーであるOPAL [ 17 ]上にTianoCoreを実装することで開発中であり、リトルエンディアンモードで動作する。[ 18 ] MIPS向けにも非公式プロジェクトが存在する。[ 19 ] [ 20 ]

UEFI では、プロセッサがより小さいまたは大きいビット幅をサポートしている場合でも、ファームウェアのビット幅に一致する UEFI アプリケーションの実行のみが許可されます。たとえば、プロセッサが 32 ビット プロセッサ モードを備えている場合でも、64 ビット UEFI ファームウェアは 64 ビット UEFI アプリケーションのみを実行できます。[ 16 ]:セクション 2.3.2 および 2.3.4 一部のローエンド コンピュータには、64 ビット CPU で実行される 32 ビット UEFI ファームウェアが搭載されて出荷されています。[ 21 ] UEFI アプリケーションがブート サービスを終了し、システムに対する完全な制御が許可されると、プロセッサ実行モードを変更できるようになります。[ 16 ]:セクション 2.3.2 および 2.3.4 ただし、ランタイム サービスを呼び出すには、すぐに元のプロセッサ モードに戻す必要があります。[ 22 ]ランタイム サービスは、ファームウェア実装と同じプロセッサ モードからのみ呼び出すことができるためです。[ 16 ]:セクション 2.3.2 および 2.3.4

Linuxカーネルはバージョン3.15以降、x86-64 CPUを搭載した32ビットUEFIファームウェア実装上で64ビットカーネルを起動するためのサポートを追加し、UEFIブートローダーがEFIハンドオーバープロトコルをサポートすることを必要としました。 [ 23 ] EFIハンドオーバープロトコルにより、UEFIブートローダーはUEFIの初期化をカーネルのEFIブートスタブに委ねることができるため、カーネルのみがUEFIの初期化を行うことができます。[ 24 ] [ 25 ] [ 26 ]

ディスクデバイスの互換性

UEFI は、マスター ブート レコード(MBR)を使用する標準的な PC ディスク パーティション スキームに加えて、 MBRの多くの制限がないGUID パーティション テーブル(GPT) パーティション スキームでも動作します。特に、ディスク パーティションの数とサイズに関する MBR の制限 (ディスクあたり最大 4 つのプライマリ パーティション、ディスクあたり最大 2  TB (2 × 2 40バイト) ) が緩和されています。さらに具体的には、GPT では、 512 バイトのセクターで最大 8 ZiB (8 × 2 70バイト)のディスクおよびパーティション サイズが可能です 。 [ 27 ] UEFI 仕様では、GPT または MBR ディスクとEl Torito形式の光ディスク上にあるFAT12 / 16 / 32 [ 16 ] : section 13.3 パーティションのみをサポートしています。[ 16 ] : セクション13.3.2 GPTはUEFI標準の一部ですが、BIOS PCでオペレーティングシステムを起動するためにも使用できる場合があります。[ 27 ] [ 28 ]

リナックス

LinuxでのGPTのサポートは、カーネル構成時にオプションCONFIG_EFI_PARTITION(EFI GUIDパーティションサポート)をオンにすることで有効になります。[ 29 ]このオプションにより、システムファームウェアがシステムの制御をLinuxに渡した後、LinuxはGPTディスクを認識して使用できるようになります。

下位互換性のため、Linux はGRUB 2と Linux の両方が GPT に対応しているため、BIOS ベースのシステムでデータ保存と起動の両方に GPT ディスクを使用できます。このようなセットアップは通常BIOS-GPTと呼ばれます。GPT には保護 MBR が組み込まれているため、BIOS ベースのコンピュータは、保護 MBR のブートストラップ コード領域に格納されている GPT 対応ブート ローダーを使用して GPT ディスクから起動できます。[ 27 ] GRUB の場合、このような構成では、GPTパーティション ディスクに MBR 以降のギャップが存在しないため (GPT のプライマリ ヘッダープライマリ パーティション テーブルが引き継ぐ)、GRUB が第 2 段階のコードを埋め込むための BIOS ブート パーティションが必要になります。通常 1MBのサイズで、GPTスキームにおけるこのパーティションのグローバル一意識別子(GUID)は21686148-6449-6E6F-744E-656564454649であり、BIOS-GPTセットアップでのみGRUBによって使用されます。GRUBの観点から見ると、MBRパーティションの場合、このようなパーティションタイプは存在しません。システムがUEFIベースである場合、第2ステージコードの埋め込みは不要であるため、このパーティションは不要です。[ 28 ] [ 27 ]

UEFIシステムはGPTディスクにアクセスし、そこから直接起動できるため、LinuxはUEFIブート方式を使用できます。UEFIシステムでGPTディスクからLinuxを起動するには、ブートローダー、オペレーティングシステムカーネル、ユーティリティソフトウェアなどのUEFIアプリケーションを含むEFIシステムパーティション(ESP)を作成する必要があります。 [ 30 ] [ 31 ]このようなセットアップは通常UEFI-GPTと呼ばれ、ESPは互換性を最大限に高めるために、少なくとも512MBのサイズでFAT32ファイルシステムでフォーマットすることが推奨されます。[ 27 ]

後方互換性のため、一部のUEFI実装では、レガシーBIOSとの互換性を提供する互換性サポートモジュール(CSM)を介して、MBRパーティションディスクからの起動もサポートしています。その場合、UEFIシステムでのLinuxの起動は、レガシーBIOSベースのシステムの場合と同じです。

マイクロソフトウィンドウズ

EFIのいくつかの手法とデータ形式はMicrosoft Windowsのものと似ています。[ 32 ] [ 33 ]

Windows 11、64ビット版のWindows Vista SP1/SP2 および7、および 32 ビット版と 64 ビット版の両方のWindows 8、8.1 および10は、2 TBを超える GPT ディスクから起動できます 。

特徴

サービス

EFIは、ブートサービスランタイムサービスの2種類のサービスを定義します。ブートサービスは、ファームウェアがプラットフォームを所有している間(つまり、呼び出し前)のみ利用可能で、様々なデバイス上のテキストコンソールとグラフィカルコンソール、バスサービス、ブロックサービス、ファイルサービスなどが含まれます。ランタイムサービスは、オペレーティングシステムの実行中でもアクセス可能で、日付、時刻、 NVRAMExitBootServices()アクセスなどのサービスが含まれます。

グラフィックス出力プロトコル(GOP)サービス
グラフィックス出力プロトコル(GOP)はランタイムサービスを提供します。以下のグラフィックス機能のセクションも参照してください。オペレーティングシステムは、ランタイムモード中にGOPが提供するフレームバッファへの直接書き込みとビットブリットが可能です。[ 34 ]
UEFIメモリマップサービス
SMMサービス
ACPIサービス
SMBIOSサービス
Devicetreeサービス (RISC プロセッサ用)
変動サービス
UEFI変数は、特に不揮発性データなどのデータを保存する手段を提供します。一部のUEFI変数は、プラットフォームファームウェアとオペレーティングシステム間で共有されます。変数の名前空間はGUIDによって識別され、変数はキーと値のペアで構成されます。例えば、UEFI変数は、クラッシュ後にクラッシュメッセージをNVRAMに保存し、再起動後にオペレーティングシステムが取得できるようにするために使用できます。[ 35 ]
タイムサービス
UEFIは時間サービスを提供します。時間サービスには、タイムゾーンと夏時間フィールドのサポートが含まれており、ハードウェアリアルタイムクロックをローカルタイムまたはUTCに設定できます。[ 16 ]:セクション8.3 PC-ATリアルタイムクロックを使用するマシンでは、BIOSベースのWindowsとの互換性のため、デフォルトではハードウェアクロックをローカルタイムに設定する必要があります。[ 33 ]ただし、最近のバージョンを使用し、 WindowsレジストリのエントリでUTCの使用を示すように設定されている場合を除く。

アプリケーション

EFIブートマネージャとEFIドライバ間の相互作用

UEFIはOSのロードに加え、EFIシステムパーティション上にファイルとして存在するUEFIアプリケーションを実行できます。UEFIアプリケーションは、UEFIシェル、ファームウェアのブートマネージャ、または他のUEFIアプリケーションから実行できます。UEFIアプリケーションは、 OEM(相手先ブランド製造業者)に依存せずに開発およびインストールできます。

UEFIアプリケーションの一種として、GRUBrEFIndsystemd-bootWindows Boot ManagerなどのOSブートローダーがあります。これらはOSファイルをメモリに読み込み、実行します。また、OSブートローダーは、実行する別のUEFIアプリケーションを選択するためのユーザーインターフェイスを提供することもできます。UEFI ShellなどのユーティリティもUEFIアプリケーションです。

プロトコル

EFIは、2つのバイナリモジュール間の通信に使用されるソフトウェアインターフェースのセットとしてプロトコルを定義します。すべてのEFIドライバは、プロトコルを介して他のドライバにサービスを提供する必要があります。EFIプロトコルは、BIOSの割り込み呼び出しに似ています。

デバイスドライバー

EFIは、標準的な命令セットアーキテクチャ( ISI)固有のデバイスドライバに加えて、ISAに依存しないデバイスドライバをEFIバイトコードEBC)として不揮発性メモリに格納します。システムファームウェアにはEBCイメージのインタープリタが搭載されています。この点で、EBCはPowerPCベースのApple MacintoshSun Microsystems SPARCコンピュータなど で使用されているISAに依存しないファームウェアであるOpen Firmwareに類似しています。

一部のデバイスタイプ向けのアーキテクチャ固有(EFIバイトコード非対応)のEFIドライバには、OSが使用するインターフェースが備わっている場合があります。これにより、OSは、オペレーティングシステム固有のドライバがロードされる前、あるいはロードされた場合でも、EFIを介してドライバが基本的なグラフィックス機能やネットワーク機能を実行できるようになります。

場合によっては、EFIドライバは、他の種類のディスクボリュームからの起動を可能にするファイルシステムドライバとなることもあります。例としては、GRUB2コードに基づく37ファイルシステム用のefifs [ 36 ]や、 RufusがNTFS ESPのチェーンロードに使用しているefifs [ 37 ]などが挙げられます。

グラフィック機能

EFI 1.0仕様では、グラフィックス機能をサポートする方法としてUGA(ユニバーサルグラフィックアダプタ)プロトコルが定義されていました。UEFIにはUGAが含まれず、GOP(グラフィックス出力プロトコル)に置き換えられました。[ 38 ]

UEFI 2.1では、ユーザー入力、ローカライズされた文字列、フォント、そしてHTML形式のフォームを管理するための「ヒューマン・インターフェース・インフラストラクチャ」(HII)が定義されましたこれにより、OEM( Original Equipment Manufacturer)や独立系BIOSベンダー(IBV)は、起動前設定用のグラフィカルインターフェースを設計できるようになります。UEFIはデフォルトで文字列のエンコードに UTF-16を使用します。

初期のUEFIファームウェア実装のほとんどはコンソールベースでした。今日では、多くのUEFIファームウェア実装はGUIベースです。

EFI システムパーティション

EFI システム パーティション (ESP と略されることが多い) は、 UEFI 仕様に準拠したコンピュータで使用されるデータ ストレージ デバイスのパーティションです。コンピュータの電源投入時に UEFI ファームウェアによってアクセスされ、オペレーティング システムのブート ローダーなど、UEFI アプリケーションとこれらのアプリケーションの実行に必要なファイルが格納されます。サポートされているパーティション テーブルスキームには、 MBRGPTのほか、光ディスク上のEl Toritoボリュームがあります。 [ 16 ]:セクション 2.6.2 ESP で使用するために、UEFI はFAT ファイル システムの特定のバージョンを定義します。これは UEFI 仕様の一部として維持され、元の FAT 仕様からは独立しており、FAT32FAT16、およびFAT12ファイル システムを網羅しています。[ 16 ]:セクション 13.3 [ 39 ] ESP は、BIOS の下位互換性の一部として、ブート セクター用のスペースも提供します。

起動中

UEFIブート

従来のPC BIOSとは異なり、UEFIはブートセクターに依存せず、代わりにUEFI仕様の一部としてブートマネージャーを定義します。コンピューターの電源が投入されると、ブートマネージャーはブート構成をチェックし、その設定に基づいて指定されたOSブートローダーまたはオペレーティングシステムカーネルを実行します。ブート構成は、NVRAMに保存される変数によって定義され、OSローダーまたはOSカーネルへのファイルシステムパスを示す変数も含まれます。

OSブートローダーはUEFIによって自動検出されるため、USBフラッシュドライブなどのリムーバブルデバイスから簡単に起動できます。この自動検出は、OSブートローダーへの標準化されたファイルパスに依存しており、パスはコンピュータのアーキテクチャによって異なります。ファイルパスの形式は<EFI_SYSTEM_PARTITION>\EFI\BOOT\BOOT<MACHINE_TYPE_SHORT_NAME>.EFIと定義されています。たとえば、x86-64システム上のOSローダーへのファイルパスは\efi\boot\bootx64.efi[ 16 ]:セクション3.5.1.1 、ARM64アーキテクチャでは \efi\boot\bootaa64.efiです。

ブートプロセス

GPTパーティションディスクからUEFIシステムを起動することを、一般的にUEFI-GPTブートと呼びます。UEFI仕様ではMBRパーティションテーブルを完全にサポートすることが求められているにもかかわらずです。[ 16 ]:セクション13.3.2 一部のUEFIファームウェア実装では、ブートディスクのパーティションテーブルの種類に応じてBIOSベースのCSMブートに即座に切り替えるため、 MBRパーティションディスク上のEFIシステムパーティションからのUEFIブートが事実上不可能になります。このようなブートスキームは、一般的にUEFI-MBRと呼ばれます。

また、ブート マネージャーにはテキスト ユーザー インターフェイスが用意されていることが多く、ユーザーは利用可能なブート オプションのリストから目的の OS (またはセットアップ ユーティリティ) を選択できます。

PC プラットフォームでは、UEFI ブートをサポートする BIOS ファームウェアはUEFI BIOSと呼ばれることがありますが、最近の x86 PC では CSM の使用が非推奨になっているため、CSM ブート方式をサポートしていない可能性があります。

CSMの起動

下位互換性を確保するため、PCクラスのマシンのUEFIファームウェア実装は、レガシーBIOSとの互換性を提供する互換性サポートモジュール(CSM)を介して、MBRパーティションディスクからのレガシーBIOSモードでの起動をサポートできます。このシナリオでは、パーティションテーブルを無視し、ブートセクターの内容に基づいて、レガシーBIOSベースのシステムと同じように起動が実行されます。

MBRパーティションディスクからのBIOSスタイルの起動は、UEFIシステムかレガシーBIOSベースのシステムかを問わず、一般的にBIOS-MBRと呼ばれます。さらに、レガシーBIOSベースのシステムをGPTディスクから起動することも可能であり、このようなブートスキームは一般的にBIOS-GPTと呼ばれます。

互換性サポートモジュール(Compatibility Support Module)は、UEFIをサポートしていないレガシーオペレーティングシステムや一部のレガシーオプションROMを引き続き使用できるようにします。 [ 40 ]また、UEFI SMMが提供する機能に加えて、 CompatibilitySmmと呼ばれるレガシーシステム管理モード(SMM)機能も提供します。このようなレガシーSMM機能の一例として、従来のPS/2キーボードとマウスをエミュレートすることで、USBレガシーサポートを提供することが挙げられます。[ 40 ]

2017年11月、インテルは2020年までにクライアントプラットフォーム向けのCSMのサポートを段階的に廃止する計画を発表した。[ 41 ]

2022年7月、カスペルスキー研究所は、インテルのH81チップセットと影響を受けるマザーボードの互換性サポートモジュールを搭載したマシンで悪意のあるコードを連鎖的に起動するように設計されたルートキットに関する情報を公開しました。[ 42 ]

2023年8月、インテルは2024年までにサーバープラットフォーム向けのCSMのサポートを段階的に廃止する計画を発表した。[ 43 ]

現在、Intel プラットフォームをベースとするほとんどのコンピューターは CSM をサポートしていません。

ネットワークブート

UEFI仕様には、Preboot Execution Environment(PXE)を介したネットワークブートのサポートが含まれています。PXEブートのネットワークプロトコルには、インターネットプロトコルIPv4およびIPv6)、ユーザーデータグラムプロトコル(UDP)、動的ホスト構成プロトコル(DHCP)、簡易ファイル転送プロトコル(TFTP)、iSCSIが含まれます。[ 16 ]:924–1509 [ 44 ]

OSイメージはストレージエリアネットワーク(SAN)にリモートで保存することができ、 SANへのアクセスにはiSCSI(Internet Small Computer System Interface )とFCoE( Fibre Channel over Ethernet )というプロトコルがサポートされている。 [ 16 ] [ 45 ] [ 46 ]

UEFI仕様のバージョン2.5では、HTTP経由でブートイメージにアクセスするためのサポートが追加されました。[ 47 ]

セキュアブート

rEFIndブート マネージャーによって検出されたアクティブなセキュア ブートの例

UEFI仕様では、セキュアブートと呼ばれるプロトコルが定義されています。このプロトコルは、許容されるデジタル署名署名されていないUEFIドライバやOSブートローダーの読み込みを防止することで、ブートプロセスを保護します。セキュアブートを有効にすると、最初は「セットアップ」モードに設定され、「プラットフォームキー」(PK)と呼ばれる公開鍵をファームウェアに書き込むことができます。鍵が書き込まれると、セキュアブートは「ユーザー」モードに移行し、プラットフォームキーで署名されたUEFIドライバとOSブートローダーのみがファームウェアによって読み込まれます。メモリに保存されたデータベースに「鍵交換鍵」(KEK)を追加することで、他の証明書を使用できるようになりますが、それらの証明書はプラットフォームキーの秘密部分との接続を維持する必要があります。[ 48 ]セキュアブートは「カスタム」モードに設定することもでき、秘密鍵と一致しない公開鍵をシステムに追加できます。[ 49 ]

セキュアブートは、Windows 8および8.1Windows Server 2012および2012 R2、Windows 10Windows Server 2016、2019、2022 Windows 11 VMware vSphere 6.5 [ 50 ]および、Fedora (バージョン18以降)、openSUSE (バージョン12.3以降)、RHEL(バージョン7以降)、 CentOS(バージョン7以降 [ 51 ] )、Debian(バージョン10以降[ 52 ] Ubuntu (バージョン12.04.2以降)、Linux Mint バージョン21.3以降)、[ 53 ] [ 54 ]およびAlmaLinux OS(バージョン8.4以降[ 55 ] )を含む多数のLinuxディストリビューションでサポートされてます。2025年1月現在、FreeBSDのサポートは計画段階にあります。[ 56 ]

UEFIシェル

UEFI シェル 2.2 セッションの例

UEFIはシェル環境を提供しており、これを用いてUEFIブートローダーを含む他のUEFIアプリケーションを実行することができます。また、UEFIシェルで利用可能なコマンドは、メモリマップの取得(memmap)、ブートマネージャー変数の変更(bcfg)、パーティションプログラムの実行(diskpart)、UEFIドライバーのロード、テキストファイルの編集(edit)など、システムやファームウェアに関する様々な情報を取得するために使用できます。[ 57 ] [ 58 ]

UEFIシェルのソースコードは、 IntelTianoCore UDK/EDK2プロジェクトからダウンロードできます。[ 59 ]ビルド済みのShellBinPkgも利用可能です。[ 60 ] Shell v2はUEFI 2.3以降のシステムで最もよく動作し、これらのシステムではShell v1よりも推奨されます。Shell v1はすべてのUEFIシステムで動作するはずです。[ 61 ] [ 62 ]

UEFIシェルの起動方法は、システムマザーボードのメーカーやモデルによって異なります。中には、ファームウェア設定で起動のための直接オプションを提供しているものもあります。例えば、コンパイル済みのx86-64バージョンのシェルを として利用できるようにする必要があります<EFI_SYSTEM_PARTITION>/SHELLX64.EFI。また、UEFIシェルが既に組み込まれているシステムもあり、適切なキーの組み合わせで起動できます。[ 63 ]その他のシステムでは、適切なUSBフラッシュドライブを作成するか、bcfgコンパイル済みのシェルに関連付けられたブートオプションを手動で追加する必要があります。[ 58 ]

コマンド

以下はEFIシェルでサポートされているコマンドの一覧です。 [ 57 ]

拡張機能

UEFIの拡張機能は、コンピューターに接続されたほぼすべての不揮発性ストレージデバイスから読み込むことができます。例えば、OEM( Original Equipment Manufacturer )は、ハードドライブ上にEFIシステムパーティションを搭載したシステムを配布できます。これにより、マザーボードのROMに保存されている標準UEFIファームウェアに追加機能を追加できます。

UEFIカプセル

UEFIカプセルは、ファームウェアからOSへのファームウェア更新インターフェースを定義し、最新かつ安全であると宣伝されています。[ 64 ] Windows 8Windows 8.1Windows 10[ 65 ]およびLinux用のFwupdはそれぞれUEFIカプセルをサポートしています。

ハードウェア

BIOSと同様に、UEFIはシステムのハードウェアコンポーネントを初期化・テストし、その後、大容量記憶装置またはネットワーク接続を介してブートローダーをロードします。x86システムでは UEFIファームウェアは通常、マザーボードのNORフラッシュチップに保存されており、ブートプロセスはPCI Expressデバイスの検出と初期化など、より複雑です。[ 66 ] [ 67 ] ARMベースのAndroidおよびWindows Phoneデバイスの中には、UEFIブートローダーがeMMCまたはeUFSフラッシュメモリ に保存されているものもあります。

クラス

UEFIマシンは、UEFIへの移行を容易にするために使用された以下のいずれかのクラスを持つことができます。[ 68 ]

  • クラス 0: レガシー BIOS
  • クラス1:CSMインターフェースを備え、外部UEFIインターフェースを持たないUEFI。UEFIインターフェースはファームウェア内部のみに存在します。
  • クラス 2: CSM と外部 UEFI インターフェイスを備えた UEFI (例: UEFI ブート)。
  • クラス 3: CSM インターフェイスを持たず、外部 UEFI インターフェイスを備えた UEFI。
  • クラス3+:セキュアブートが有効になっているUEFIクラス3。[ 69 ]

第10世代Intel Core以降、IntelはiGPU(Intel Graphics Technology )向けのレガシービデオBIOSの提供を終了しました。これらのCPUでレガシーブートを行うにはレガシービデオBIOSが必要ですが、これはビデオカードから引き続き提供されます。

ブートステージ

SEC – セキュリティフェーズ

これはUEFIブートの最初のステージですが、プラットフォーム固有のバイナリコードが先行する場合があります(例:Intel MEAMD PSP、CPUマイクロコード)。これは、特定のアーキテクチャ向けにアセンブリ言語で記述された最小限のコードで構成されています。一時メモリ(多くの場合、CPUキャッシュ-as-RAM(CAR)またはSoCオンチップブートプロセッサ)を初期化し、システムのソフトウェアの信頼のルートとして機能します。ハンドオフ前にPEIを検証するオプションもあります。

責任

  • 次のステージ PEI のための一時メモリの初期化。
  • PEI の整合性を検証する手段による信頼のルート。
  • PEI基盤にハンドオフ情報を渡します。この情報には、一時メモリの位置とサイズ、スタックの位置とサイズ、プラットフォームの状態が含まれます。

PEI – EFI前の初期化

UEFIブートの第2ステージは、依存関係を考慮したディスパッチャで構成され、PEIモジュール(PEIM)をロードして実行し、メインメモリの初期化(メモリコントローラDRAMの初期化)やファームウェアのリカバリ操作などの初期のハードウェア初期化タスクを処理します。さらに、現在のブートモードの検出と多くのACPI S3操作の処理も担います。ACPI S3レジュームの場合、多くのハードウェアレジスタをスリープ前の状態に復元する役割も担います。PEIはCARも使用します。このステージでの初期化には、メモリ内にデータ構造を作成し、これらの構造内にデフォルト値を確立することが含まれます。[ 4 ]

このステージには、PEI基盤、PEIM、PPIなど、複数のコンポーネントが含まれます。このステージでは利用できるリソースが少ないため、このステージは最小限に抑え、より充実した次のステージであるDXEに向けて最小限の準備を行う必要があります。

PEI財団

SECフェーズのハンドオフ後、プラットフォームの責任はPEI Foundationが引き継ぎます。その責任は以下のとおりです。

  • PEIM (EFI 事前初期化モジュール) のディスパッチが正常に完了しました。
  • 永続メモリ (RAM) を初期化しています。
  • 次のステージ、DXEに引き継ぎます。
  • PPI と呼ばれる PEIM の通信を容易にします。

PEIディスパッチャー

このコンポーネントは、PEIM を呼び出してその依存関係を管理する役割を担います。

EFI前初期化モジュール

これらは、永続メモリ、CPU、チップセット、マザーボードなどのハードウェアコンポーネントの初期化を担う最小限のPEIドライバです。各PEIMは単一の役割を持ち、単一の初期化に特化しています。これらのドライバは、異なるベンダーから提供されています。

PEIM 間インターフェース

これは、ポインタのGUIDペアで構成される データ構造です。PPIは、PEIサービスを通じてPEIMによって検出されます。

DXE用にシステムを最小限に初期化した後、PEI基盤はDXEを見つけ出し、制御をDXEに渡します。PEI基盤は、IPL(Initial Program Load)と呼ばれる特別なPPIを介してDXE基盤をディスパッチします。

DXE – ドライバー実行環境

このステージはCモジュールと依存関係を考慮したディスパッチャで構成されています。メインメモリが利用可能になったため、CPU、チップセット、マザーボード、その他のI/OデバイスはDXEとBDSで初期化されます。このステージでの初期化には、マザーボードに接続されたハードウェアへのEFIデバイスパスの割り当てと、ハードウェアへの構成データの転送が含まれます。[ 4 ]

BDS – ブートデバイスの選択(ブートマネージャー)

BDSはDXEの一部です。[ 70 ] [ 71 ]この段階では、ブートデバイスが初期化され、UEFIドライバーまたはPCIデバイスのオプションROMがNVRAMと呼ばれるアーキテクチャ的に定義された変数に従って実行されます。

TSL – 過渡システム負荷

これは、ブートデバイスの選択からOSへのハンドオフまでの段階です。この時点で、UEFIシェルに入ったり、OSブートローダーなどのUEFIアプリケーションを実行したりすることができます。

RT – ランタイム

ExitBootServices()が実行されると、 UEFI はオペレーティングシステム(OS)に処理を委譲します。UEFI 対応の OS は、ブートサービスを終了し、ファームウェアを起動して不要になったコードとデータをすべてアンロードし、SMMACPIなどのランタイムサービスコード/データのみを残す責任を負います。[ 72 ]一般的な現代の OS は、ハードウェアデバイスの制御に独自のプログラム (カーネルドライバなど) を使用することを好みます。

レガシー OS が使用される場合、CSM はこの呼び出しを処理し、システムがレガシー BIOS の期待と互換性があることを確認します。

使用法

実装

Microsoft Surface UEFI、2015 年以降に製造されたすべての Surface モデルで使用される UEFI

インテルのEFI実装は、コードネームTianoのIntel Platform Innovation Frameworkである。TianoはインテルのXScaleItaniumIA-32x86-64プロセッサ上で動作し、プロプライエタリソフトウェアであるが、コードの一部はBSDライセンスまたはEclipse Public License (EPL)の下でTianoCore EDK IIとして公開されている。TianoCoreはcorebootのペイロードとして使用できる。[ 73 ]

Phoenix TechnologiesのUEFI実装は、SecureCore Technology(SCT)としてブランド化されています。[ 74 ] American MegatrendsはAptioとして知られる独自のUEFIファームウェア実装を提供し、[ 75 ] Insyde SoftwareはInsydeH2Oを提供し、[ 76 ] ByosoftはByoCoreを提供しています。

2018年12月、マイクロソフトはSurfaceラインのTianoCore EDK2ベースのUEFI実装のオープンソース版であるProject Muをリリースした。[ 77 ]

UEFI APIの実装は、2017年にユニバーサルブートローダー( Das U-Boot )に導入されました。 [ 78 ] ARMv8アーキテクチャのLinuxディストリビューションでは、ブートにGNU GRUBと組み合わせてU-Boot UEFI実装を使用しています(例:SUSE Linux [ 79 ])。OpenBSDでも同様です。[ 80 ] iSCSIからのブートには、 U-BootによってロードされたUEFIアプリケーションとしてiPXEを使用できます。[ 81 ]

プラットフォーム

2000 年にリリースされたIntelの最初のItaniumワークステーションとサーバーは、EFI 1.02 を実装しました。

ヒューレット・パッカードが2002年にリリースした最初のItanium 2システムは、EFI 1.10を実装していました。これらのシステムは、 WindowsLinuxFreeBSDHP-UXを起動できました。OpenVMS2003年6月にUEFI機能を追加しました。

2006年1月、Apple社は初のIntelベースMacintoshコンピュータを出荷した。これらのシステムは、以前のPowerPCベースシステムで使用されていたOpen Firmwareではなく、EFIを採用した。 [ 82 ] 2006年4月5日、Apple社はBoot Campを初めてリリースした。これは、Mac OS X(現macOS)を再インストールすることなく、Windowsドライバディスクと非破壊パーティションツールを生成する。また、EFI実装にBIOS互換性を追加するファームウェアアップデートもリリースされた。その後のMacintoshモデルは、新しいファームウェアを搭載して出荷された。[ 83 ]

2005年には、100万台以上のIntelシステムがIntelのUEFI実装を搭載して出荷された。[ 84 ] IntelのUEFI実装を使用した新しいモバイル、デスクトップ、およびサーバー製品の出荷は2006年に開始された。例えば、Intel 945チップセットシリーズを使用するボードは、IntelのUEFIファームウェア実装を使用している。

2005年以降、EFIはXScaleコアをベースにした組み込みシステムなど、PC以外のアーキテクチャにも実装されています。[ 84 ]

EDK(EFI開発キット)にはNT32ターゲットが含まれており、これによりEFIファームウェアとEFIアプリケーションをWindowsアプリケーション内で実行できます。ただし、EDK NT32ではハードウェアへの直接アクセスは許可されていません。つまり、EDK NT32ターゲットではEFIアプリケーションとドライバの一部しか実行できません。

2008年には、より多くのx86-64システムがUEFIを採用しました。これらのシステムの多くは、互換性サポートモジュール(CSM)を介してBIOSベースのOSのみを起動できる状態(そのため、ユーザーにはUEFIベースであるようには見えません)のままでしたが、他のシステムではUEFIベースのOSの起動が可能になり始めました。例えば、IBM x3450サーバー、 ClickBIOSを搭載したMSIマザーボード、HP EliteBookノートブックPCなどが挙げられます。

2009年、IBMはSystem xマシン(x3550 M2、x3650 M2、iDataPlex dx360 M2)とBladeCenter HS22にUEFI対応版を出荷しました。DellはPowerEdge T610、R610、R710、M610、M710サーバにUEFI対応版を出荷しました。その他の市販システムについては、UEFIホワイトペーパーに記載されています。[ 85 ]

2011年には、 ASRockAsusGigabyteMSIなどの大手ベンダーが、 UEFI対応のIntel 6シリーズLGA 1155チップセットとAMD 9シリーズAM3+チップセットを搭載した消費者向けマザーボードをいくつか発売した。[ 86 ]

2012年10月のWindows 8のリリースに伴い、Microsoftの認証要件では、コンピューターにUEFI仕様を実装したファームウェアが搭載されることが義務付けられました。さらに、コンピューターがWindows 8の「コネクトスタンバイ」機能(スマートフォンに匹敵する電源管理機能を備え、スタンバイモードからほぼ瞬時に復帰できる機能)をサポートする場合、ファームウェアに互換性サポートモジュール(CSM)を含めることは許可されません。そのため、コネクトスタンバイをサポートするシステムは、レガシーBIOSオペレーティングシステムを起動できません。[ 87 ] [ 88 ]

2017年10月、インテルは2020年までにすべての製品からレガシーPC BIOSのサポートを削除し、UEFIクラス3に移行すると発表しました。[ 89 ] 2019年までに、インテルプラットフォームに基づくすべてのコンピューターは、レガシーPC BIOSのサポートがなくなります。

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

(U)EFIから起動できるオペレーティングシステムは、(U)EFI対応オペレーティングシステムと呼ばれ、(U)EFI仕様で定義されています。ここでの(U)EFIからの起動とは、任意のストレージデバイスに保存されている(U)EFIオペレーティングシステムローダーを使用してシステムを直接起動することを意味します。オペレーティングシステムローダーのデフォルトの場所は です。<EFI_SYSTEM_PARTITION>/BOOT/BOOT<MACHINE_TYPE_SHORT_NAME>.EFIここで、マシンタイプの短縮名はIA32X64IA64ARMのいずれかですAA64[ 16 ]:セクション3.5.1.1 一部のオペレーティングシステムベンダーは独自のブートローダーを持っている場合があります。また、デフォルトのブート場所を変更する場合もあります。

  • Linuxカーネルは2000年代初頭からブート時にEFIを使用することができ、[ 90 ] elilo EFIブートローダー、または最近ではGRUBのEFIバージョンを使用しています。[ 91 ] Grub + LinuxはUEFIなしでGUIDパーティションテーブルからのブートもサポートしています。[ 28 ] Ubuntuディストリビューションはバージョン12.10からUEFIセキュアブートのサポートを追加しました。[ 92 ]さらに、Linuxカーネルは、EFIブートスタブ機能を介して、単独でEFIブートローダーとして実行するオプションを使用してコンパイルできます。
  • HP-UXは 2002 年からIA-64システムのブート メカニズムとして (U)EFI を使用しています。
  • OpenVMSは、2003年12月の最初の評価版リリース以来IA-64上でEFIを使用しており、2005年1月以降の製品版リリースではEFIを使用しています。 [ 93 ] x86-64上のOpenVMSもオペレーティングシステムの起動にUEFIを使用しています。[ 94 ]
  • AppleはIntelベースのMacシリーズにEFIを採用している。Mac OS X v10.4 TigerとMac OS X v10.5 Leopardは64ビットCPUでも32ビットモードでEFI v1.10を実装しているが、OS X v10.8 Mountain Lionで完全サポートされた。[ 95 ]
  • Windows 2000Itaniumバージョン(Advanced Server Limited Edition および Datacenter Server Limited Edition。プレリリース版のWindows Server 2003コードベースに基づく) は、2002 年に EFI 1.10 を実装しました。Windows XP 64-bit EditionWindows 2000 Advanced Server Limited Edition (プレリリース版の Windows Server 2003)、およびWindows Server 2003 for IA-64はすべて Intel Itaniumファミリのプロセッサ用であり、 DIG64仕様を通じてプラットフォームの要件である EFI を実装しています。[ 96 ]
  • マイクロソフトはWindows Vista SP1 [ 97 ]Windows Server 2008でx64 Windowsオペレーティングシステム向けのUEFIを導入しましたが、UGA (Universal Graphic Adapter) 1.1またはLegacy BIOS INT 10hのみがサポートされており、Graphics Output Protocol (GOP)はサポートされていません。そのため、64ビット版のWindows Vista SP1Windows Vista SP2Windows 7Windows Server 2008Windows Server 2008 R2を搭載したPCはUEFI Class 2と互換性があります。[ 98 ] [ 99 ]当初32ビットUEFIはサポートされていませんでしたが、これは64ビットコンピューティングが主流だったため、ベンダーがネイティブ32ビットUEFIファームウェアの開発に関心を示さなかったためです。[ 100 ] Windows 8では、UEFIシステム向けのさらなる最適化が導入され、グラフィックス出力プロトコル(GOP)のサポート、[ 101 ]起動の高速化、32ビットUEFIのサポート、セキュアブートのサポートなどが導入されました。[ 102 ] [ 103 ] Windows 8以降、 ACPIプロトコルを備えたUEFIファームウェアは、 ARMベースのMicrosoft Windowsオペレーティングシステムの必須要件です。Microsoftは、 Windows 11でWindowsを実行するためにUEFIを必須にし始めましたが、[ 104 ]バージョン24H2以降のWindows 11のIoT Enterpriseエディションではこの要件が免除されています。[ 105 ]
  • 2013年3月5日、FreeBSD FoundationはFreeBSDカーネルとブートローダにUEFIサポートを追加しようとしている開発者に助成金を交付しました。 [ 106 ]変更は当初FreeBSDソースコードの個別のブランチに保存されていましたが、2014年4月4日にメインラインソースに統合されました(リビジョン264095)。変更にはインストーラのサポートも含まれます。[ 107 ] amd64のUEFIブートサポートはFreeBSD 10.1で初めて登場し、arm64はFreeBSD 11.0で登場しました。[ 108 ]
  • Oracle Solaris 11.1以降は、UEFIファームウェアバージョン2.1以降を搭載したx86システムでUEFIブートをサポートしています。x86ではGRUB 2がブートローダーとして使用されます。[ 109 ]
  • OpenBSD 5.9 [ 110 ]では、独自のカスタムローダーを使用して64ビットx86システムのUEFIブートサポートが導入され、OpenBSD 6.0ではそのサポートがARMv7まで拡張されました。[ 111 ]
  • illumosは2017年10月に基本的なUEFIサポートを追加しました。[ 112 ]
  • ArcaOSは5.1リリース以降、UEFIブートをサポートしています。[ 113 ] ArcaOSのUEFIサポートは、オペレーティングシステムが依存する特定のBIOS機能(特に割り込みINT 10HINT 13H)をエミュレートします。[ 114 ] [ 115 ]

仮想化により

アプリケーション開発

EDK2アプリケーション開発キット(EADK)は、UEFIアプリケーションで標準Cライブラリ関数を使用できるようにします。EADKは、 IntelのTianoCore UDK / EDK2 SourceForgeプロジェクトから無料でダウンロードできます。例えば、 EADKを使用することで、 Pythonインタープリターの移植版がUEFIアプリケーションとして利用可能になります。[ 128 ]開発は.UDK2015以降、GitHubに移行しています。[ 129 ]

批判

多くのデジタル権利活動家がUEFIに抗議している。coreboot共著者であるロナルド・G・ミニッチ氏とデジタル権利活動家のコリー・ドクトロウ氏は、UEFIはユーザーがコンピューターを真に制御する能力を奪おうとする試みだと批判している。[ 130 ] [ 131 ] UEFIは、ほとんどのハードウェアに対してファームウェア用とオペレーティングシステム用の2つの異なるドライバーを必要とするというBIOSの長年の問題を解決していない。[ 132 ]

オープンソースプロジェクトTianoCoreもUEFIを提供しています。[ 133 ] TianoCoreにはチップセット機能を初期化するための専用のファームウェアドライバとモジュールが欠けていますが、TianoCoreはcorebootの多くのペイロードオプションの1つです。corebootの開発には、初期化ドライバの開発に必要な仕様を提供するチップセットメーカーの協力が必要です。

セキュアブート

カスタムセキュアブート公開鍵の例
MokManager は、UEFI システムにマシン所有者キー (MOK) を登録するために使用される shim ブートローダーの一部です。

2011年、マイクロソフトは、 Windows 8オペレーティングシステムの実行が認定されたコンピューターは、マイクロソフトの公開キーが登録され、セキュアブートが有効になっている状態で出荷する必要があると発表しました。これは、これらのデバイスではUEFIの使用が必須であることを意味します。[ 134 ] [ 135 ]この発表後、同社は、UEFIのセキュアブート機能を利用してLinuxなどの代替オペレーティングシステムのインストールを妨害または完全に防止しようとしているとして、批評家やフリーソフトウェア/オープンソース支持者(フリーソフトウェア財団を含む)から非難されました。 マイクロソフトは、セキュアブートの要件がロックインの形式として機能することを意図したものではないと否定し、Windows 8認定のx86ベースシステムでは、セキュアブートをカスタムモードにするか無効にすることを許可する必要があるが、 ARMアーキテクチャを使用するシステムではそうではないと述べて要件を明確にしました。[ 49 ] [ 136 ] Windows 10では、OEMがx86システムのユーザーがセキュアブートを管理できるかどうかを決定できます。[ 137 ]

他の開発者は、Linuxシステムにセキュアブートのサポートを実装することに関する法的および実際的な問題について懸念を表明した。元Red Hat開発者のMatthew Garrettは、 GNU一般公衆利用許諾書バージョン3の条件により、ディストリビューションの開発者が秘密鍵を開示しなければGNU GRand Unified Bootloaderを使用できない可能性があると指摘した(ただし、フリーソフトウェア財団はその後、鍵を公開する責任はハードウェア製造業者にあると明確にし、立場を明確にした)[ 138 ] [ 92 ]。また、上級ユーザーが自己署名せずにセキュアブートを有効にして機能するカスタムカーネルを構築することは難しいだろうとも指摘した[ 136 ] 。他の開発者は、別の鍵で署名されたLinuxビルドを提供できると提案したが、Microsoft鍵に加えて必要な鍵もコンピュータに同梱するようOEMを説得するのは難しいだろうと指摘した[ 6 ] 。

いくつかの主要なLinuxディストリビューションは、セキュアブートの異なる実装を開発している。ギャレット自身が開発したshimと呼ばれる最小限のブートローダは、ユーザーがLinuxディストリビューションから提供される鍵を個別に信頼できる、コンパイル済みの署名済みブートローダである。[ 139 ] Ubuntu 12.10は、ブートローダのみを検証し、署名されていないカーネルのロードを許可するCanonical独自の鍵で使用するように事前構成された古いバージョンのshimを使用している。開発者は、信頼されたカーネルはユーザー空間のみを保護するのに効果的であり、セキュアブートが保護を追加するように設計されているブート前の状態を保護するのには効果的ではないため、ブートローダのみに署名する方が実現可能であると信じていた。これにより、ユーザーはシステムを再構成することなく、独自のカーネルを構築し、カスタムカーネルモジュールを使用することもできる。 [ 92 ] [ 140 ] [ 141 ] Canonicalは、Ubuntuがプリインストールされている認定OEMコンピュータに署名するための独自の秘密鍵も保持しており、セキュアブート要件も強制する予定です。つまり、CanonicalキーとMicrosoftキー(互換性のため)の両方をファームウェアに含める必要があります。Fedoraもshimを使用していますが、カーネルとそのモジュールの両方に署名する必要があります。[ 140 ] shimには、ローカルでコンパイルされたカーネルや、ディストリビューションのメンテナーによって署名されていないその他のソフトウェアに署名するために使用できるマシン所有者キー(MOK)があります。[ 142 ]

オペレーティングシステムのカーネルとそのモジュールにも署名が必要かどうかについては議論がある。UEFI仕様では必須ではないが、マイクロソフトは契約上の要件として必須であり、システムのセキュリティを侵害する可能性のあるコードの署名に使用された証明書を取り消す権利を留保していると主張している。[ 141 ] Windowsでは、セキュアブートが有効になっている場合、すべてのカーネルドライバーにデジタル署名が必要であり、WHQL以外のドライバーは読み込みを拒否される可能性がある。2013年2月、別のRed Hat開発者が、Microsoftが署名したPEファイルに埋め込まれたマスターX.509キーを使用してMicrosoftのAuthenticode署名を解析できるようにするLinuxカーネルへのパッチを提出しようとした。しかし、この提案はLinuxの作成者であるリーナス・トーバルズから批判され、彼はセキュアブートインフラストラクチャに対するマイクロソフトの制御を支持しているとしてRed Hatを攻撃した。[ 143 ]

2013年3月26日、スペインのフリーソフトウェア開発グループHispalinuxは、OEMシステムに対するMicrosoftのセキュアブート要件が「妨害的」かつ反競争的であると主張し、欧州委員会に正式な苦情を申し立てた。 [ 144 ]

2013年8月のブラックハットカンファレンスで、セキュリティ研究者のグループが、セキュアブートを悪用するために使用できるUEFIの特定ベンダー実装における一連のエクスプロイトを発表しました。[ 145 ]

2016年8月、2人のセキュリティ研究者が、Microsoftがオペレーティングシステムの署名に使用しているセキュリティキー「ゴールデンキー」を発見したと報じられました[ 146 ]。技術的にはキーは公開されていませんでしたが、そのキーで署名された悪用可能なバイナリが発見されました。これにより、あらゆるソフトウェアがMicrosoftによって真に署名されているかのように動作し、ルートキットブートキット攻撃の可能性が高まります。また、あらゆるパッチが(署名された)悪用可能なバイナリに置き換えられる(ダウングレードされる)可能性があるため、この脆弱性を修正することは不可能です。Microsoftは声明で、この脆弱性はARMアーキテクチャWindows RTデバイスにのみ存在すると回答し、2つのパッチをリリースしました。しかし、これらのパッチでは脆弱性は除去されず(除去することもできません)、修正するにはエンドユーザーのファームウェアでキーの置き換えが必要になります。

2023年3月1日、ESETサイバーセキュリティファームの研究者は、「BlackLotus」と名付けられた「UEFIセキュアブートを回避する最初のUEFIブートキット」を公開分析結果で報告し、「脆弱性を除去しない(除去できない)」パッチを悪用するメカニズムの背後にある理論を説明しました。[ 147 ] [ 148 ]

2024年8月、Windows 11およびWindows 10のセキュリティ更新プログラムにより、デバイスのUEFI NVRAMにSecure Boot Advanced Targeting(SBAT)設定が適用され、一部のLinuxディストリビューションの読み込みに失敗する問題が発生しました。SBATは、Windows Boot Managerとshimの新しいバージョンでサポートされているプロトコルで、バグのある、または脆弱な中間ブートローダー(通常は古いバージョンのWindows Boot ManagerとGRUB)のブートプロセスでの読み込みを拒否します。この変更は翌月に元に戻されました。[ 149 ]

2025年6月、LWN.netは、Microsoft UEFI CA 2011証明書の有効期限が2026年6月に切れるため、セキュアブートが有効になっているLinuxでは一部のOSの読み込みが拒否される可能性があると報じました。[ 150 ]ただし、TianoCore EDK IIや多くの商用UEFI実装(AMI Aptioなど)では、セキュアブート証明書の日付/時刻チェックは通常デフォルトで無効になっています。[ 151 ]

2025年1月現在、RHEL(RHEL 7以降)、CentOS(CentOS 7以降[ 152 ])、UbuntuFedoraDebian(Debian 10以降[ 153 ])、OpenSUSE、 SUSE Linux Enterpriseなど、多くのLinuxディストリビューションがUEFIセキュアブートをサポートしています[ 154 ]

ファームウェアの問題

デバイスにおけるUEFIファームウェアの普及に伴い、それぞれの実装に起因する多くの技術的な問題も発生しています。[ 155 ]

2012年10月のWindows 8のリリース後、セキュアブートを搭載した一部のLenovoコンピュータモデルに、他の設定に関係なく「 Windows Boot Manager」または「Red Hat Enterprise Linux 」という名前の実行ファイルのみをロードするようにハードコードされたファームウェアが搭載されていることが判明しました。 [ 156 ]また、セキュアブートを搭載した東芝のラップトップモデルのいくつかで、適切な動作に必要な特定の証明書が欠落しているという問題が発生しました。 [ 155 ]

2013年1月、一部のSamsung製ノートパソコンのUEFI実装にバグがあり、UEFIモードでLinuxディストリビューションをインストールした後にノートパソコンが動作しなくなることが明らかになりました。当初はSamsung製ノートパソコンのシステム機能にアクセスするために設計されたカーネルモジュールとの潜在的な競合が原因とされましたが(カーネルメンテナーは安全対策としてUEFIシステム上のモジュールを無効化しました)、Matthew Garrett氏は、このバグは実際にはメモリにUEFI変数を過剰に保存することで発生し、特定の条件下ではWindowsでも発生する可能性があることを発見しました。結論として、彼は問題のカーネルモジュールがカーネルメッセージダンプをファームウェアに書き込むことでバグが発生したと判断しました。[ 35 ] [ 157 ] [ 158 ]

参照

注記

  1. ^当初は 1998 年に Intel Boot Initiative として開始され、その後 Extensible Firmware Interface (EFI) として変更されましたが、2005 年に廃止され、UEFI に置き換えられました。
  2. ^ UEFI と互換性のないオペレーティング システムの起動に必要な BIOS の一部は、CSM DXE モジュールとして実装できます。§ CSM の起動を参照してください。
  3. ^歴史的には、UEFI が EFI の後継として新しく導入されたときには、Unified EFI とも表記されていました。

参考文献

  1. ^ 「UEFIフォーラムがユーザー実装の効率化を図るため、UEFI 2.11仕様とPI 1.9仕様をリリース | Unified Extensible Firmware Interface Forum」 . uefi.org . UEFIフォーラム. 2024年12月22日閲覧。
  2. ^ 「ドキュメント - Winbond」
  3. ^ 「Microsoft Surface Laptop 7 (13.8インチ) チップID」 2024年6月22日。
  4. ^ a b cヴィンセント・ジマー、マイケル・ロスマン、スレシュ・マリセッティ (2017). BIOSを超えて:Unified Extensible Firmware Interfaceを使った開発、第3版. Walter de Gruyter GmbH & Co KG. ISBN 978-1-5015-0569-0
  5. ^ Kinney, Michael (2000年9月1日). 「EFIによるBIOSブート問題の解決」(PDF) . pp.  47– 50. 2007年1月23日時点のオリジナル(PDF)からアーカイブ。 2010年9月14日閲覧
  6. ^ a b「MSはセキュアブートがLinuxを除外するとは否定」 The Register、2011年9月23日。 2011年9月24日閲覧
  7. ^ a b「Emulex UEFI実装によりIBMシステムに業界最先端の機能が提供」(PDF) . Emulex . 2010年9月14日閲覧
  8. ^ Extensible Firmware Interface (EFI) and Unified EFI (UEFI)、Intel、2010年1月5日時点のオリジナルよりアーカイブ
  9. ^ Wei, Dong (2006)、「序文」、Beyond BIOS、Intel Press、ISBN 978-0-9743649-0-2
  10. ^ 「1.10 仕様概要」拡張ファームウェア・インターフェース、Intel
  11. ^ 「EDKのGitミラー」。GitHub 2019年3月19日。
  12. ^ 「EDK II」 . GitHub . 2019年8月8日.
  13. ^ 「TianoCore とは何ですか?」
  14. ^について、Unified EFI Forum、Q: EFIとUEFIの関係は?A: UEFI仕様は、Intelが公開したEFI 1.10仕様に基づいており、Unified EFI Forumが修正と変更を管理しています。IntelはEFI 1.10仕様の著作権を現在も保有していますが、フォーラムがこれを進化させられるよう、フォーラムに提供しています。EFI仕様の将来のバージョンはリリースされませんが、ライセンスを取得したお客様は、Intelから取得したライセンス条件に基づいて引き続き使用できます。Unified EFI仕様のライセンスは、Intelではなくフォーラムから提供されます。
  15. ^ 「Microsoft、UEFIコアのオープンソースリリースであるProject Muを発表」 2018年12月20日。
  16. ^ a b c d e f g h i j k l m n o p Unified Extensible Firmware Interface (UEFI) 仕様(PDF) . Uefi.org (技術レポート). 2.11. UEFI フォーラム. 2024年11月21日. 2026年1月5日閲覧
  17. ^ 「GitHub - andreiw/ppc64le-edk2: TianoCore UEFI for OPAL/PowerNV (PPC64/PowerPC64 Little-Endian)」 . GitHub . 2021年5月3日.
  18. ^ 「Tianocore for OpenPOWER」 .ファームウェアセキュリティ. 2015年10月12日.
  19. ^ kontais (2015 年 9 月 3 日)。「EFI-MIPS」ソースフォージ
  20. ^ 「GitHub - ncroxon/gnu-efi:GNU ツールチェーンと EFI 開発環境を使用して、ARM-64、ARM-32、x86_64、IA-64 (IPF)、IA-32 (x86)、および MIPS プラットフォーム向けの EFI アプリケーションを開発する。GitHub
  21. ^ James Brian Richardson (2015年7月22日). 「なぜ安価なシステムはx64システムで32ビットUEFIを実行するのか」 . 2020年12月24日時点のオリジナルよりアーカイブ
  22. ^ Fleming, Matt (2014年3月4日). 「x86/efi: 64ビットから32ビットへの移行に向けた早期サンクコードの追加 - kernel/git/torvalds/linux.git - Linuxカーネルソースツリー」 . Linuxカーネルメーリングリスト.
  23. ^ 「Linuxカーネル3.15、セクション1.3。EFI 64ビットカーネルは32ビットファームウェアから起動できます」。kernelnewbies.org 。2014年6月8日2014年6月15日閲覧
  24. ^ "x86、efi:ハンドオーバープロトコル" . LWN.net . 2012年7月19日. 2014年6月15日閲覧
  25. ^ "Linuxカーネルドキュメント: Documentation/efi-stub.txt" . kernel.org . 2014年2月1日. 2014年6月15日閲覧
  26. ^ 「1. Linux/x86 ブートプロトコル - Linux カーネルドキュメント」 . kernel.org .
  27. ^ a b c d e Smith, Roderick W. (2012年7月3日). 「GPTとLinuxで大容量ドライブを最大限に活用する」 IBM . 2012年7月9日時点のオリジナルよりアーカイブ。 2013年9月25日閲覧
  28. ^ a b c「インストール」 . 3.4 BIOSインストール. GNU GRUB . 2013年9月25日閲覧
  29. ^ "block/partitions/Kconfig (3.11.1)" . CONFIG_EFI_PARTITION (行番号 #247) . kernel.org . 2013年9月25日閲覧
  30. ^ 「GRUBとUEFIベースのx86システム上のブートプロセス」 redhat.com 201311月14日閲覧
  31. ^ 「UEFI Booting 64-bit Redhat Enterprise Linux 6」 . fpmurphy.com . 2010年9月. 2013年7月12日時点のオリジナルよりアーカイブ。 2013年11月14日閲覧
  32. ^ IBM PC Real Time Clock は UT でも動作するはず. Cl.cam.ac.uk. 2013年10月30日閲覧。
  33. ^ a b Garrett, Matthew (2012年1月19日). 「EFIとLinux:未来はここにある、そしてそれはひどい」 . linux.conf.au 2012. 2021年11月13日時点のオリジナルよりアーカイブ。 2012年4月2日閲覧
  34. ^ 「efifbとは? — Linuxカーネルドキュメント」www.kernel.org . 2020年11月24日閲覧
  35. ^ a b「Samsung UEFIバグ:ノートパソコンがWindowsから使えなくなる」 The H. 2013年2月27日閲覧
  36. ^ 「フリーソフトウェアEFIドライバー」
  37. ^ピート、バタール (2020 年 3 月 13 日)。「pbatard/uefi-ntfs」GitHub
  38. ^ 「Intel Embedded Graphics Drivers FAQ: BIOS and firmware」 . Intel . 2014年5月19日閲覧
  39. ^ 「テクニカルノートTN2166: GPTの秘密」developer.apple.com2006年11月6日。 2015年5月6日閲覧
  40. ^ a b「Intel Platform Innovation Framework for EFI」(PDF) .互換性サポートモジュール仕様(リビジョン0.97) . Intel. 2007年9月4日. 2013年10月6日閲覧
  41. ^ 「Intelが純粋なUEFIへの移行を計画しているため、PC BIOSは2020年までに廃止される」Ars Technica 2018年5月29日閲覧
  42. ^ 「CosmicStrand:洗練されたUEFIファームウェアルートキットの発見」。KasperskyのSecurelist 2022年8月4日閲覧。
  43. ^ 「Intel プラットフォームのレガシー ブート サポートの削除に関するテクニカル アドバイザリ」。Intel。
  44. ^ 「Red Hat Enterprise Linux 6 インストールガイド」 . 30.2.2. EFI用のPXEブートの設定. Red Hat . 2013年10月9日閲覧
  45. ^ El-Haj-Mahmoud, Samer (2013年7月). 「UEFI 2.4におけるPre-OSネットワークの進歩」(PDF) . Hewlett-Packard . 2019年5月29日閲覧
  46. ^ Racherla, Sangam; Erdenberger, Silvio; Rajagopal, Harish; Ruth, Kai (2014年1月). FCoEとiSCSIを使用したスト​​レージとネットワークの統合(PDF) (第2版). IBM Redbooks . 2022年4月20日閲覧
  47. ^ 「UEFI 2.5の新しいUEFI HTTPブートサポート」。firmwaresecurity.com2015年5月9日。 2015年8月13日閲覧
  48. ^ Edge, Jake (2011年6月15日). 「UEFIと「セキュアブート」 . LWN.net . 2012年9月9日閲覧
  49. ^ a b「Windows 8 セキュアブート:論争は続く」 PC World 2012年9月9日閲覧
  50. ^ 「ESXi 6.5のセキュアブート - ハイパーバイザー保証」 VMware vSphereブログ、2017年5月4日。 2017年8月18日閲覧
  51. ^ハウツー/UEFI - CentOS Wiki
  52. ^ Larabel, Michael (2018年4月30日). 「Debian、2018年にUEFIセキュアブートサポートの進展」 . Phoronix . Phoronix Media . 2018年5月23日閲覧
  53. ^ Garrett, Matthew (2012年12月27日). 「セキュアブート配布サポート」 . Mjg59.dreamwidth.org . 2014年3月20日閲覧
  54. ^ 「Linux Mint セキュアブート」 . Linux Mint . 2024年1月12日閲覧
  55. ^ "8.4 | AlmaLinux Wiki" . wiki.almalinux.org . 2024年4月10日閲覧
  56. ^ "SecureBoot" . FreeBSD Wiki . FreeBSD . 2015年6月16日閲覧
  57. ^ a b「EFIシェルとスクリプト」 Intel 20139月25日閲覧
  58. ^ a b「UEFI Shell仕様バージョン2.0、Errata A」(PDF) . Unified EFI. 2012年5月. 2013年9月25日閲覧
  59. ^ "EDK2: ShellPkg" . GitHub . 2020年3月18日閲覧
  60. ^ "tianocore/edk2: リリース" . GitHub .
  61. ^ 「Email Archive: edk2-devel」 . [edk2] LinuxディストリビューションISOへのUEFIシェルの組み込み. SourceForge . 2012. 2013年9月25日閲覧
  62. ^ 「TianoCore on SourceForge」 . Shell FAQ . Intel . 2013年9月25日閲覧
  63. ^ 「IntelサーバーボードおよびIntelサーバーシステムでのサーバー構成にEFIを使用するための基本手順」(PDF) . Intel . 2008 . 2013年9月25日閲覧
  64. ^ 「署名付きカプセルアップデート」 . tianocore-docs.github.io .
  65. ^ barrygolden. 「Windows UEFIファームウェア更新プラットフォーム - Windowsドライバー」 . docs.microsoft.com . 2020年9月25日閲覧
  66. ^ 「Getting Started | Microchip Technology」 www.microchip.com . 2020年12月24日閲覧
  67. ^ 「Framework-Laptop-16/Mainboard/Mainboard_Interfaces_Schematic_Framework_Laptop_16_7040_Series.PDF at main · FrameworkComputer/Framework-Laptop-16」(PDF) . GitHub .
  68. ^バリー、ピーター、クローリー、パトリック (2012). 『現代の組み込みコンピューティング:接続性、普及性、メディアリッチなシステムの設計』 ウォルサム、マサチューセッツ州:モーガン・カウフマン出版社169頁. ISBN 978-0-12-394407-8. OCLC  810455404 .
  69. ^ “2020 年のインテル schrapt bios-compatibililiteit uefi” .調整ツール(オランダ語) 2022 年12 月 30 日に取得
  70. ^ 「PI ブートフロー · tianocore/Tianocore.github.io Wiki 。GitHub
  71. ^ 「エンジニアリングサービス」(PDF) .
  72. ^ 「Unified Extensible Firmware Interface (UEFI)」。Linuxカーネルのドキュメント。
  73. ^ “TianoCore - coreboot” . 2020年10月22日時点のオリジナルよりアーカイブ2012年5月25日閲覧。
  74. ^ 「SecureCore Tiano™」 . Phoenix Technologies. 2010年9月6日時点のオリジナルよりアーカイブ2010年9月14日閲覧。
  75. ^ 「Aptio: 完全なUEFI製品ソリューション」(PDF) . American Megatrends . 2018年5月2日閲覧
  76. ^ “Why US?” Insyde Software Corp. 2018年12月27日時点のオリジナルよりアーカイブ2018年5月2日閲覧。
  77. ^ "Microsoft、TianoCore に代わるオープンソース UEFI の「Project Mu」を発表" .フォロニクス2018 年12 月 20 日に取得
  78. ^ 「U-Boot UEFIとGRUBの融合」(PDF) . 2018年9月12日閲覧
  79. ^ 「UEFI on Top of U-Boot」(PDF) 。 2018年9月11日時点のオリジナル(PDF)からアーカイブ2018年9月12日閲覧。
  80. ^ 「Raspberry 3にOpenBSD 6.3をインストールする」 。 2018年11月21日時点のオリジナルよりアーカイブ2018年9月12日閲覧。
  81. ^ 「U-BootとiPXEを使用したiSCSIブート」 。 2020年7月31日時点のオリジナルよりアーカイブ2020年5月18日閲覧。
  82. ^ Apple Computer. 「ユニバーサルバイナリプログラミングガイドライン第2版:拡張ファームウェアインターフェース(EFI) Wayback Machineで2008年7月24日にアーカイブ
  83. ^ Apple の Open Firmware から Extensible Firmware Interface への移行、mactech、2007 年。
  84. ^ a b「Intel Platform Innovation Framework for UEFI の概要」 Intel 2010年9月14日閲覧
  85. ^市販のプラットフォームとソリューションを使用したUEFIの評価(PDF)、UEFI、2011年5月、2012年3月22日のオリジナル(PDF)からアーカイブ
  86. ^ Asus P67 マザーボード プレビュー
  87. ^ 「クライアントおよびサーバーシステムのWindowsハードウェア認定要件」。Microsoft。2013年1月。System.Fundamentals.Firmware.CS.UEFISecureBoot.ConnectedStandby ... プラットフォームは、互換性サポートモジュールがインストールされていない、またはインストールできないUEFIクラス3である必要があります(定義については、UEFI Industry Groupの「市販のプラットフォームおよびソリューションを使用したUEFIの評価」バージョン0.3を参照)。BIOSエミュレーションと従来のPC/ATブートは無効にする必要があります。
  88. ^ 「Microsoft: ARM版Windows 8について知っておくべきことすべて」PC Magazine2013年9月6日時点のオリジナルよりアーカイブ。 2013年9月30日閲覧
  89. ^リチャードソン、ブライアン(2017年10月30日)「レガシーBIOSの削除における「ラストマイル」の障壁」(PDF) 。 2017年11月22日閲覧
  90. ^ 2004年2月27日にメンテナーのBrett Johnsonによってリリース3.5pre1が発表されました。
  91. ^ EFI版Grub、Debian GNU/Linux 、 2008年5月1日閲覧。
  92. ^ a b c「Ubuntuはセキュアブートの実装にGRUB 2を使用する」 The H Online 。 2012年10月28日閲覧
  93. ^ OpenVMS Release History、HP、2009年1月5日のオリジナルからアーカイブ、 2008年9月16日閲覧。
  94. ^ “State of the Port to x86-64” (PDF) . vmssoftware.com . 2017年10月6日. 2020年9月22日時点のオリジナル(PDF)からアーカイブ。 2020年9月9日閲覧
  95. ^ rEFIt — Windows Vista and EFI、SourceForge、2008年9月5日時点のオリジナルよりアーカイブ、 2008年5月31日閲覧。
  96. ^「Extensible Firmware Interface」、Windows Server TechCenter、Microsoft、2006年8月30日時点のオリジナルよりアーカイブ
  97. ^統合拡張ファームウェアインターフェース(UEFI)実装ガイドライン
  98. ^ Ersek, Laszlo (2015年1月). 「Open Virtual Machine Firmware (OVMF) ステータスレポート」 . Linux KVMプロジェクト. 2022年11月13日閲覧
  99. ^ UEFIモードまたはレガシーBIOSモードで起動する
  100. ^ 「Windows VistaにおけるUnified Extended Firmware Interfaceのサポート」。Microsoft。2006年10月26日。2020年7月27日時点のオリジナルよりアーカイブ。 2010年6月12日閲覧。Microsoftは、現在の主流の64ビットコンピューティングとプラットフォームコストの状況から、ベンダーがネイティブUEFI 32ビットファームウェアの開発に関心を持たないと判断しました。そのため、Microsoftは当初、32ビットUEFI実装のサポートを出荷しませんでした。
  101. ^ Microsoft 基本ディスプレイ ドライバー
  102. ^ 「Microsoft、Windows 8の起動時間が驚くほど速いと宣伝」2011年9月9日閲覧。
  103. ^ Brodkin, Jon (2011年9月21日). 「Windows 8のセキュアブートによりLinuxのインストールが複雑になる可能性」 Ars Technica . 2011年9月23日閲覧
  104. ^ 「Windows 11の仕様、機能、およびコンピューターの要件を確認する」。Microsoft
  105. ^ 「Windows IoT Enterpriseの最小システム要件」 . Microsoft Learn . 2024年5月22日. 2024年6月7日閲覧
  106. ^ 「FreeBSDがUEFIサポートを取得」 The H. 2013年3月7日閲覧
  107. ^ 「UEFI - FreeBSD Wiki」 . FreeBSD.org . 2014年6月19日閲覧
  108. ^ "uefi(8)" . www.freebsd.org . 2021年1月11日閲覧
  109. ^ 「Oracle Solaris 11.1 — 新機能」(PDF) oracle.com . 2013年11月4日閲覧
  110. ^ "OpenBSD 5.9" . www.openbsd.org . 2016年9月11日閲覧
  111. ^ "OpenBSD 6.0" . www.openbsd.org . 2016年9月11日閲覧
  112. ^ 「8422 uts: illumosの基本的なUEFIサポート」 www.illumos.org . 2024年12月17日閲覧
  113. ^ Proven, Liam (2023年9月4日). 「ArcaOS 5.1はビンテージOS/2に21世紀向けのUEFIフェイスリフトを提供する」 The Register . 2023年9月4日閲覧
  114. ^ 「UEFIハードウェアでArcaOSを起動する(デモ)」 youtube.com 2019年8月8日2020年9月22日閲覧
  115. ^ Sanders, James (2019年8月13日). 「Modern OS/2 distribution ArcaOS adding support for booting via UEFI」 . techrepublic.com . 2019年10月21日時点のオリジナルよりアーカイブ2023年9月4日閲覧。
  116. ^ Open Virtual Machine Firmware、SourceForge、2011年10月6日時点のオリジナルよりアーカイブ
  117. ^ 「VMWare Workstation EFIファームウェア | VMware Communities」 . Communities.vmware.com. 2012年10月3日. 2014年2月28日閲覧
  118. ^ 「VMware仮想マシンでのEFI/UEFIファームウェアの使用 | VMwareコミュニティ」 . Communities.vmware.com. 2014年12月6日. 2016年1月18日閲覧
  119. ^ 「VMware Workstation 14 の発表 - VMware Workstation Zealot」 VMware Workstation Zealot 2017年8月22日. 2018年8月2日閲覧
  120. ^ 「vSphere 5.0の新機能」 Vmware.com。2014年1月23日時点のオリジナルよりアーカイブ2014年2月28日閲覧。
  121. ^ 「VMware vSphere 6.5 リリースノート」 . pubs.vmware.com . 2017年1月13日時点のオリジナルよりアーカイブ。 2017年1月13日閲覧
  122. ^ 3.1 Changelog 、VirtualBox、 2010年9月28日時点のオリジナルよりアーカイブ
  123. ^チケット 7702、VirtualBox
  124. ^「Oracleのシニアソフトウェアエンジニアによる声明」、フォーラム、VirtualBox
  125. ^ 「KVMによるセキュアブートのテスト」 FedoraProject . 2014年2月28日閲覧
  126. ^ 「Windows Server 2012 R2 の Hyper-V の新機能」 MicrosoftTechNet 2013 年6 月 24 日閲覧
  127. ^ 「シールドされたVM」 。 2019年2月16日閲覧
  128. ^ 「TianoCore on SourceForge: EDK2 Application Development Kit (EADK)」 . Intel . 2013年9月25日閲覧
  129. ^ 「Tianocore: UDK」 . GitHub .
  130. ^ “インタビュー: ロナルド・G・ミニッチ” .フォスデム。 2007 年 2 月 6 日2010 年9 月 14 日に取得
  131. ^ Doctorow, Cory (2011年12月27日)、「汎用計算に対する今後の戦争」 、 2013年9月25日閲覧。
  132. ^ 「coreboot (別名 LinuxBIOS): フリー/オープンソースの x86 ファームウェア」 YouTube、2008年10月31日。 2010年9月14日閲覧
  133. ^ "Welcome"TianoCore、SourceForge、2012年4月23日時点のオリジナルよりアーカイブ
  134. ^ 「次世代ブート仕様により、Linux は Windows 8 PC から永久に締め出される可能性がある」
  135. ^ 「Windows 8 のセキュア ブートにより Linux のインストールが複雑になる可能性」 2011 年 9 月 21 日。
  136. ^ a b「MicrosoftはARMハードウェアでのLinuxの起動をブロックしているのか?」 Computerworld UK. 2014年12月22日時点のオリジナルよりアーカイブ2012年3月6日閲覧。
  137. ^ 「Windows 10でセキュアブートによるalt-OSロックアウトが実現」 Ars Technica 2015年3月20日2015年3月21日閲覧
  138. ^ 「セキュアブートを考慮した無料オペレーティングシステムディストリビューションに関するフリーソフトウェア財団の推奨事項」フリーソフトウェア財団。 2020年3月18日閲覧
  139. ^ 「Windows 8 PCでLinuxを導入する方法」 ZDNet 2013年2月26日閲覧
  140. ^ a b Willis, Nathan (2012年6月27日). 「UbuntuがUEFIセキュアブート計画の詳細を発表」 . Linux Weekly News . 2012年9月11日閲覧
  141. ^ a b「LinuxカーネルではMicrosoft証明書はサポートされていないとTorvalds氏は述べている」 The H. 2013年2月26日閲覧
  142. ^ Smith, Roderick W. (2012年11月4日). 「Linux用EFIブートローダーの管理:セキュアブートへの対応(Shimプログラムの使用)」 . Roderick W. Smithのウェブページ. 2025年1月17日閲覧
  143. ^ 「リーナス・トーバルズ:Linuxを「マイクロソフトのディープスロート」には変えない」 Ars Technica. 2013年2月26日. 2013年2月26日閲覧
  144. ^ 「独占:オープンソフトウェアグループがマイクロソフトに対する苦情をEUに提出」ロイター、2013年3月26日。 2013年3月26日閲覧
  145. ^ 「研究者がWindows 8のセキュアブートを回避するエクスプロイトのデモを実施」 IT World . 2013年8月5日時点のオリジナルよりアーカイブ。 2013年8月5日閲覧
  146. ^ Mendelsohn, Tom (2016年8月12日). 「セキュアブートの混乱:Microsoftがバックドアキーを漏洩、ファームウェアは公開される [更新]」 Ars Technica . 2016年8月12日閲覧
  147. ^ Smolár, Martin (2023年3月1日). 「BlackLotus UEFIブートキット:神話が確認される」 . welivesecurity.com . 2023年3月1日閲覧
  148. ^ Goodin, Dan (2023年3月6日). 「Windowsのパッチ適用不可能な欠陥により、セキュアブートを回避するステルス型UEFIマルウェアが有効化」 Ars Technica . 2023年3月6日閲覧
  149. ^ WindowsCommunications (2024年8月26日). 「Windows 11 バージョン 23H2 の既知の問題と通知」 . learn.microsoft.com . 2024年9月3日閲覧
  150. ^ Edge, Jake (2025年7月16日). 「Linuxとセキュアブート証明書の有効期限」 . LWN.net . 2025年9月12日閲覧
  151. ^ 「Windows セキュアブート証明書の有効期限と CA の更新 - Microsoft サポート」support.microsoft.com . 2025年9月12日閲覧
  152. ^ “ハウツー/UEFI” . CentOS Wiki 2020 年11 月 10 日に取得
  153. ^ "SecureBoot" . Debian Wiki . 2020年11月10日閲覧
  154. ^ 「SUSE Linux Enterprise Server 15 SP5:第17章 UEFI(Unified Extensible Firmware Interface)(管理ガイド)」 . documentation.suse.com . 2025年1月12日閲覧
  155. ^ a b「Windows 8 PC上のLinux:多少の進歩は見られるが、依然として厄介」 ZDNet 2013年2月26日閲覧
  156. ^ 「Lenovo UEFIはWindowsとRHELのみを起動したい」 Phoronix . 2013年2月26日閲覧
  157. ^ 「SamsungノートパソコンのUEFIによる死亡事故でLinuxは無罪」 Bit-tech . 2013年2月26日閲覧
  158. ^ 「UEFIを使用してLinuxを起動すると、Samsungのラップトップが動作しなくなる可能性がある」 The H. 2013年2月26日閲覧

さらに読む