この記事は中国語版の内容をもとに、用語と説明を日本語向けに整理したものです。GRUB のように、ブートローダーとブートマネージャーの両方を兼ねるプログラムもあります。
1. Bootloader とは#
ブートローダー(bootloader) は、選択された OS のカーネルや、次の起動プログラムをメモリへ読み込み、必要な情報を設定して制御を渡すプログラムです。
主な役割は次のとおりです。
- カーネルや initramfs をストレージから読み込む。
- カーネルコマンドラインなどの起動パラメータを設定する。
- Linux の起動プロトコルなど、対象 OS の規則に従って制御を渡す。
Legacy BIOS では MBR のコードやその後の埋め込み領域が使われることがあります。UEFI では、通常 ESP に保存された .efi プログラムが実行されます。
代表例は次のとおりです。
- GRUB
- Windows Boot Manager の起動部分
- systemd-boot
- 以前の Linux 環境で使われた LILO
2. Boot Manager とは#
ブートマネージャー(boot manager) は、複数の OS、カーネル、または起動項目から、どれを実行するか選択する役割を担います。
典型的な機能は次のとおりです。
- 起動メニューを表示する。
- Linux の複数のカーネルから選択する。
- Windows Boot Manager など、別の起動プログラムへ処理を渡す。
- 既定の起動項目と待ち時間を管理する。
UEFI ファームウェア自身も、NVRAM の BootOrder と Boot#### を使って EFI 起動項目を選ぶという意味で、基本的なブートマネージャー機能を持っています。
3. 両者の関係#
ブートマネージャーとブートローダーは、常に別々のプログラムとは限りません。
BIOS/UEFI
↓ 起動項目を選ぶ
ブートマネージャー
↓ OS やカーネルを選ぶ
ブートローダー
↓ カーネルと initramfs を読み込む
Linux カーネルGRUB はメニューを表示するためブートマネージャーとして動作し、Linux カーネルを読み込むためブートローダーとしても動作します。rEFInd は主に UEFI のブートマネージャーとして使われ、選択した EFI プログラムへ処理を渡します。
4. 主な違い#
| 項目 | Bootloader | Boot Manager |
|---|---|---|
| 主な役割 | カーネルや次の起動プログラムを読み込む | 起動する OS やカーネルを選ぶ |
| 主な処理 | メモリ配置、起動パラメータ設定、制御の移譲 | メニュー、既定項目、複数 OS の選択 |
| ユーザー画面 | 必ずしも必要ではない | 通常は選択メニューを持つ |
| 代表例 | GRUB、systemd-boot、Windows の起動プログラム | GRUB、rEFInd、UEFI Boot Manager |
| 保存場所 | MBR、BIOS Boot Partition、ESP など | ESP、NVRAM の起動項目、または MBR のコード |
5. 起動順序の例#
- BIOS または UEFI がハードウェアを初期化する。
- ファームウェアの起動選択機能が、ディスクや ESP の起動項目を選ぶ。
- ブートマネージャーが複数の OS やカーネルから項目を選ぶ。
- ブートローダーがカーネル、initramfs、起動パラメータを準備する。
- カーネルが初期化を行い、PID 1 とユーザー空間を起動する。
6. まとめ#
- Bootloader は、選択された OS を実際に起動するプログラムです。
- Boot Manager は、どの OS やカーネルを起動するか選ぶ仕組みです。
- 一つのプログラムが両方の役割を持つことがあります。
- GRUB は代表的な「ブートマネージャー兼ブートローダー」です。
- UEFI の起動選択、GRUB、Linux カーネルの関係は、Linux の起動フロー:ファームウェア、パーティション、GRUB からカーネルまでで確認できます。


