Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

E.2. GRUB

GRUB(GNU GRand Unified Boot loader) は、システム起動時にロードするインストール済みのオペレーティングシステムまたはカーネルを選択できるプログラムです。またユーザーがカーネルに引数を渡すこともできるようにします。

E.2.1. BIOS ベースの x86 システムでの GRUB とブートプロセス

本セクションでは、BIOS ベースの x86 システムの起動時に GRUB が行う役割について説明します。ブートプロセス全体については、「ブートプロセスの詳細」を参照してください。
GRUB は次のようなステージでそれ自体をメモリーにロードします。
  1. ステージ1 すなわちプライマリブートローダーは、BIOS によって MBR [16] から読み込まれます。プライマリブートローダーは MBR 内の 512 バイト未満のディスク領域に存在しており、ステージ 1.5 または ステージ 2 のブートローダーをロードすることができます。
    BIOS はパーティションテーブルやファイルシステムを読み込むことはできません。BIOS はハードウェアを初期化し、MBR を読み込みますが、この後の起動プロセスはステージ 1 ブートローダーに任されます。
  2. 必要な場合に、ステージ 1.5 ブートローダーがステージ 1 ブートローダーによってメモリーに読み込まれます。ハードウェアの中には、ステージ 2 ブートローダーを取得するための中間ステップを必要とするものがあります。/boot/ パーティションがハードドライブの 1024 シリンダーヘッドを上回る場合や、LBA モードを使用している場合に中間ステップが必要になります。ステージ 1.5 ブートローダーは、/boot/ パーティションまたは MBR および /boot/ パーティションの小さい領域のいずれかにあります。
  3. ステージ 2 いわゆるセカンダリブートローダーがメモリーに読み込まれます。セカンダリブートローダーは GRUB メニューとコマンド環境を表示します。このインターフェースにより起動するカーネルやオペレーティングシステムを選択することができ、カーネルに引数を渡したりシステムパラメーターを確認したりすることができます。
  4. セカンダリブートローダーはオペレーティングシステムまたはカーネルの他にも、/boot/sysroot/ の内容をメモリーに読み込みます。GRUB は起動するオペレーティングシステムまたはカーネルを決定すると、それをメモリーにロードしてマシンの制御権をそのオペレーティングシステムに渡します。
Linux の起動に使用する方法は、ブートローダーが直接オペレーティングシステムをロードするためにダイレクトローディングと呼ばれます。ブートローダーとカーネルの間を中継するものはありません。
他のオペレーティングシステムが使用するブートプロセスはこれとは異なる場合があります。たとえば、Microsoft Windows オペレーティングシステムや他のオペレーティングシステムは、チェーンロードで読み込まれます。この方法の場合、MBR はオペレーティングシステムを格納しているパーティションの 1 番目のセクターをポイントします。ここでは、そのオペレーティングシステムを実際に起動するのに必要なファイルを検索します。
GRUB はダイレクトロード、チェーンロードいずれの起動方法にも対応するため、ほとんどのオペレーティングシステムを起動することができます。

警告

Microsoft の DOS および Windows のインストールプログラムはインストール中に MBR を完全に上書きするため既存ブートローダーは破棄されてしまいます。デュアルブートのシステムを構築している場合は Microsoft のオペレーティングシステムを先にインストールするとよいでしょう。


[16] システム BIOS および MBR については、「BIOS ベースの x86 システム」 を参照してください。