メインコンテンツへスキップ
  1. ノート/
  2. システム底层/

Bootloader と Boot Manager の違い

·1322 文字·3 分· loading · loading · · ·
ICE345
著者
ICE345
CS Student | System | Linux | OCaml
この記事は中国語版の内容をもとに、用語と説明を日本語向けに整理したものです。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 の BootOrderBoot#### を使って EFI 起動項目を選ぶという意味で、基本的なブートマネージャー機能を持っています。

3. 両者の関係
#

ブートマネージャーとブートローダーは、常に別々のプログラムとは限りません。

BIOS/UEFI
  ↓ 起動項目を選ぶ
ブートマネージャー
  ↓ OS やカーネルを選ぶ
ブートローダー
  ↓ カーネルと initramfs を読み込む
Linux カーネル

GRUB はメニューを表示するためブートマネージャーとして動作し、Linux カーネルを読み込むためブートローダーとしても動作します。rEFInd は主に UEFI のブートマネージャーとして使われ、選択した EFI プログラムへ処理を渡します。

4. 主な違い
#

項目BootloaderBoot Manager
主な役割カーネルや次の起動プログラムを読み込む起動する OS やカーネルを選ぶ
主な処理メモリ配置、起動パラメータ設定、制御の移譲メニュー、既定項目、複数 OS の選択
ユーザー画面必ずしも必要ではない通常は選択メニューを持つ
代表例GRUB、systemd-boot、Windows の起動プログラムGRUB、rEFInd、UEFI Boot Manager
保存場所MBR、BIOS Boot Partition、ESP などESP、NVRAM の起動項目、または MBR のコード

5. 起動順序の例
#

  1. BIOS または UEFI がハードウェアを初期化する。
  2. ファームウェアの起動選択機能が、ディスクや ESP の起動項目を選ぶ。
  3. ブートマネージャーが複数の OS やカーネルから項目を選ぶ。
  4. ブートローダーがカーネル、initramfs、起動パラメータを準備する。
  5. カーネルが初期化を行い、PID 1 とユーザー空間を起動する。

6. まとめ
#

  • Bootloader は、選択された OS を実際に起動するプログラムです。
  • Boot Manager は、どの OS やカーネルを起動するか選ぶ仕組みです。
  • 一つのプログラムが両方の役割を持つことがあります。
  • GRUB は代表的な「ブートマネージャー兼ブートローダー」です。
  • UEFI の起動選択、GRUB、Linux カーネルの関係は、Linux の起動フロー:ファームウェア、パーティション、GRUB からカーネルまでで確認できます。

関連記事


评论