はじめに
前回のCentOS6からの変更 ブートローダGrubについてでBiosから起動するGrubについていろいろ調べた際に、UEFIについても調べたので今回はUEFIについてまとめてみました。
結論
-
UEFI == BIOS
- ブートローダを読み込む役割は変わらない。機能拡張されている
-
UEFIに対応しているサーバとは?
- マザーボードのROMにUEFIが格納されている
-
OSがUEFIに対応しているとは?
- GPT形式のパーティションが作成できて、そのパーティションにUEFI用のブートローダを配置できること
-
なぜGPTを使うのか
- MBRのパーティションテーブルは2TBまでしか格納できないので
- ちなみに2TB以下でも使用できる
BIOSとは
- MBRのブートローダをメモリに読み込んで実行する
- 仕様上メモリを1MBしか扱えない
- サーバに搭載されたデバイスの設定はBIOSの画面からではなく、Ctrl+Aなどのキーで個別に設定画面を呼び出す(これはデバイスのファームウェアが用意?)
UEFIとは
- UEFI == BIOS
- システムBIOSの後継として開発された規格
- ブートローダを読み込む役割は変わらない
- ただしMBRを読み込まないで後述するEFIシステムパーティションにあるブートローダをメモリに読み込む
- BIOSの制限を取り除いて、機能拡張
- サーバメーカによってはGUI持つUEFIもある
- UEFIから個別のデバイスの設定ができる
- GPT形式の**EFIシステムパーティション(VFAT形式-ファイルシステム)**に格納されたブートローダを直接起動(grub.efi)
- メモリの制限が取り除かれたので、ファイルシステムも理解できるようになっている
-
UEFIに対応しているサーバとは
- マザーボードのROMにUEFIが格納されている
BIOSとUEFI
ともにマザーボードメーカが製造
UEFIとGPT
GPT(GUID Partition Table)
- パーティションを作成する規格・形式のこと
- 通常、2TB以上のパーティションを扱う場合に使用する。
- しかし、2TB以下でも使用できる
- GPT形式のディスクからブートローダを呼び出すにはBIOSではなくてUEFIが必要
- ブートローダが格納されたパーティション(/boot/efi)はESPラベルがつけられる
- /boot/efiにgrub.efi(grubステージ2相当のブートローダ)が格納
- OSがUEFIに対応しているということはGPT形式のパーティションが作成できて、UEFI用のブートローダがあるということ
GPT作成方法
- partedコマンド
- RHEL6ではインストーラもGPTに対応しているので、ディスクが2TB以上であれば、自動でGPT形式でパーティションを作成してくれる
なぜGPT
- 通常のMBRにパーティションテーブルを格納する場合にパーティション情報が2TBまでしか格納できない。よって2TB以上のパーティションを扱う場合に別の方法が必要で、それがGPT
CentOS7インストールでのパーティション
2TB以下
通常のパーティション作成。ブートローダはGrub2を使う
2TB以上
GPT形式でパーティション作成。ブートローダはgrub.efiを使う
2TB以下のディスク。EFIのディレクトリは存在したけど何もはいっていなかった。
# ll /boot/efi/EFI/centos/
合計 0
2TB以下でGTPを使う
2TB 以下のディスクも GPT パーティションとしてインストールしたければ、インストーラーをブートする時のカーネルオプションに inst.gpt を指定しておくと、ディスクの容量にかかわらず GTP パーティションが使われるようになる
BIOSからUEFIへの変更(試してない)
DELLのサーバしか調べていませんがUEFIに対応しているサーバは(試してはいない)Biosから変更可能のようでした。ですが、UEFIに変更するにもとなってディスクのパーティション形式もGPTに変更しないといけません。そうでないとUEFIがEFIシステムパーティションを見つけようとするが見つけられずに止まりそうです。これは逆も然りかもしれません。