GRUB(GRand Unified Bootloader) は、Turbolinux 10 Server が標準で採用しているブートローダーです。従来から Linux で標準的に使用されていたブートローダーに LILO がありますが、今では多くのディストリビューションが、GRUB を標準のブートローダーとして採用しています。GRUB に関する情報は、GNU GRUB の Web サイト(http://www.gnu.org/software/grub/)から得ることができます。
GRUB を使用するメリットは、LILO の欠点を知ることでより明確にすることができます。LILO は、カーネルをブートするプログラムをハードディスクの MBR(Master Boot Record)へ書き込む際、カーネルのイメージファイルである /boot/vmlinuz の位置情報を含めます。このとき LILO は、/boot/vmlinuz の位置情報をハードディスクのセクタ位置で認識します。そして、LILO は、このセクタ情報をもとにカーネルを起動します。カーネルの再構築や /etc/lilo.conf を編集した後に /sbin/lilo コマンドを実行しなければならないのは、この位置情報を更新するためです。もし、/sbin/lilo を実行せずにシステムを再起動してしまうと、LILO は、ハードディスク上のカーネル位置を判断できないため、OS を起動できないというトラブルに遭遇することになります。再度、設定ファイルの修正や MBR へ LILO を 書き込みたくても、Linux はすでに起動できない状態になっています。ブートディスクなどを作成していない場合には、起動するための手段がないため、システム全体に大きな影響を与えてしまいます。
それに対し GRUB は、ファイルシステムを理解し、ファイルシステム上のディレクトリパスでブートイメージを探し出すことが可能です。GRUB の最も大きな特徴は "ファイルシステムを理解する" という点です。つまり、カーネルの再構築によって /boot/vmlinuz の位置情報が変更されたり、GRUB の設定ファイルである /boot/grub/grub.conf を編集しても GRUB はディレクトリパスでファイルを認識することができるため、LILO のように /sbin/lilo を実行して MBR に反映させるような手順は必要ありません。このように、LILO は MBR の情報が不適切だと OS をブートできなくなってしまいますが、GRUB を使用すれば、たとえ設定ファイルに誤りがあっても GRUB の備える強力なコマンドラインコンソールを使用して OS を起動することができ、ブートに関連するトラブルのリスクを少なくすることができます。
ハードディスクの MBR にインストールされた GRUB は、stage1 → stage1_5 → stage2 と呼ばれるプログラムを順に実行し、最後にカーネルをロードします。Turbolinux 10 Server では、これらのプログラムは /boot/grub/ ディレクトリに存在します。
# ls /boot/grub/ device.map grub.conf reiserfs_stage1_5 stage2 e2fs_stage1_5 jfs_stage1_5 splash.xpm.gz vstafs_stage1_5 fat_stage1_5 minix_stage1_5 stage1 xfs_stage1_5 |
e2fs_ や reiserfs_ など先頭にファイルシステムの名称がついているファイルが stage1_5 プログラムです。実際に GRUB をインストールすると、stage1 と stage1_5 のプログラムは MBR に書き込まれます。stage2 は実際のファイルシステムに存在する /boot/grub/stage2 がブートの段階でロードされます。
コンピュータの電源を投入すると、BIOS によって stage1 プログラムがロードされます。stage1 プログラムは stage1_5 プログラムをロードし、stage1_5 プログラムはファイルシステムを理解して、実際のファイルシステム上にある /boot/grub/stage2 をロードします。そして、stage2 がロードされると、以下の GRUB の起動画面がモニタに表示されます。

この起動画面に表示されるメニューは、/boot/grub/grub.conf に記述されている設定内容を直接読み込んで表示しています。起動したい OS を選択し[Enter]キーを押せば、対象の OS が起動します。ここまでが、MBR にインストールされた GRUB がカーネルをロードするまでの基本的な手続きです。この後の処理は、カーネルに引き継がれます。