UEFI
UEFIとは、Unified Extensible Firmware Interfaceの略で、従来のBIOSを置き換える新しい仕組みです。UEFIも含めEFIと表現されることもありますが、EFIはUEFIの前身です。
ここではUEFIに限って記述します。
BIOSとは
BIOSはPCの電源を入れた時に一番最初に実行されるソフトウェアです。BIOSは、ハードウェアのチェックや初期化を行い、HDDに格納されたOSを実行します。
(正確には処理を移譲します。)
BIOSはハードウェアと密接して動作するソフトウェアであり、マザーボードなどの基板上に実装されています。
このBIOSが何らかの理由で壊れると、ハードウェアに問題がなくてもOSを起動することができないどころか、何も出来なくなります。
BIOSとOSは切り離されており、OSがBIOSを同梱することはありません。
ただしOSからBIOSの機能にアクセスしたり、連携して機能を提供することはあります。
BIOS登場から数十年
BIOSが登場してからもう30〜40年ほど経ちます。BIOSはハードウェアの進化に合わせて拡張され、長年使われてきました。
しかしBIOSの拡張に限界が見えてきました。
例えば、BIOSには以下のような制限があります。
- 16bit プロセッサーモードで動作
- 1MBのアドレス空間
- PC/ATアーキテクチャーへの依存
ハードウェアの進化に合わせてBIOSを拡張することが困難になってきました。
EFIとUEFI
この状況を改善し新しい仕組みを作ろう、というのがEFIです。モダンなOSとモダンなハードウェア、それらの組み合わせに合うように作られたのが、EFIです。
EFIはIntel等によって作られたものですが、その後UEFIとして標準化されました。
BIOSからUEFIへ
BIOSからUEFIへの移行が進んでおり、ここ数年発売されているPCの多くはUEFIに対応しています。セキュアブート
セキュアブートは、UEFI上で提供される機能の一つです。従ってBIOSでは無関係です。
セキュアブートの機能
セキュアブートは、利用できるソフトウェア(OSやドライバーなど)を制限する仕組みです。セキュアブートが有効な環境では、署名されたソフトウェアのみ利用することができます。
これにより悪意あるソフトウェアの実行を妨げ、PCをそのようなソフトウェアから保護します。
データベース
セキュアブートでは、UEFIに信頼できるソフトウェアのデータベース(一覧)があり、そのデータベースと署名を照合することで、実行しようとしているソフトウェアが信頼できるかどうか判断します。もしデータベースに該当するソフトウェアが存在しない場合、そのソフトウェアの実行を中止します。
Linuxディストリビューションとの関係
データベースにLinuxディストリビューションが登録されていないPCでは、Linuxを起動することはできません。データベースは、ハードウェア製造メーカー側で作成します。
中には出荷後にデータベースを変更できるUEFIが存在するかもしれません。
多くのハードウェアはWindowの利用を前提、もしくは配慮して作られます。
そうなると、Linuxディストリビューションは利用できないという事になります。
このような状況の中どう対応するかは、Linuxディストリビューションによって異なります。
Windows(Microsoft)と同じ署名を使うか、データベースにLinuxディストリビューション用の設定を追加してもらうか、方針は様々です。
UEFI環境でOSを起動するOSローダー
UEFI環境でOSを起動するソフトウェアを「OSローダー」と表現します。UEFIでは、特定のフォルダーにあるソフトウェアを、「OSローダー」として認識します。
OSはこの「OSローダー」 経由で起動されます。
Ubuntuのライブメディアにもこの「OSローダー」が存在しており、UEFIからUbuntuを起動することができます。
「OSローダー」はOSの種類に関わらず、必ず「efi」という拡張子を持ちます。
UEFI対応PCとBIOS対応PC
PCにUEFIが搭載され始めたのは、ここ5,6年ぐらいのことでしょうか。セキュアブートが採用され始めたのは、ここ数年です。
現状利用されているPCには、以下のような組み合わせが存在します。
- BIOS
- UEFI
- UEFI + セキュアブート
PCによっては、BIOSとUEFIが切り替えられるものも存在します。
同様にPCによっては、セキュアブートのオン・オフを切り替えられるものも存在します。
自分が利用しているPCがどの組み合わせに該当するかは、PCの説明書を参考にしてください。