デベロッパー:Linux How-To 2005年10月07日 01:02 更新
■Red Hat Linux 7.2はどこが変わった?

RedHat Linux 7.2では,LILOに変わるブートローダーとしてGRUBが採用された。LILOでは,カーネル再構築の反映によって失敗した場合,起動しなくなってしまうという問題があったが,GRUBであればこのようなことはなくなる。今回は,このGRUBとはどういうものであるのかを解説していこう

icon ブートローダーとは

 まず始めに,ブートローダーとはどのようなものであるのかを解説しておこう。ブートローダーは,フロッピーディスクやハードディスクからOSの起動に必要ないちばん最初のブートイメージを読み取り,OSの起動へとつなげる小さなプログラムのことだ。

 ブートローダーは,一般にMBR(Master Book Record)などのハードディスクの先頭のセクタに保存され,OSのブートイメージ本体(Linuxの場合にはカーネル本体であるvmlinuzファイルの内容)を読み込んで実行する。

LILO

 Linuxで従来から利用されてきたブートローダーは,LILO(LInux LOader)だ。LILOは,ハードディスク上の特定のセクタからカーネルのブートイメージであるvmlinuzファイルを読み込んで実行される。この際に重要となるのは,LILOはvmlinuzファイルの保存場所をディレクトリ構造ではなく,セクタ位置(絶対的な場所)として認識する点だ。

 このためカーネルを再構築するなどしてvmlinuzファイルを作り直した場合には,カーネルの位置を反映させるためにLILOへ知らせなければならない。

 そのためのコマンドが/sbin/liloコマンドだ。/sbin/liloコマンドを実行することによって,vmlinuzファイルの新しいセクタがLILOに伝えられる。もし,/sbin/liloコマンドの実行を忘れてマシンを再起動させてしまうと,vmlinuzファイルの位置が分からず起動に失敗することになる。

GRUB

 LILOは,前述したようにセクタを対象としてブートイメージの位置を把握する。すなわち,LILOはファイルシステムのフォーマットを認識しているわけではないのだ。

 それに対しGRUB(GRand Unified Bootloader)は,ファイルシステムを解釈し,ファイルシステム上のディレクトリパスでブートイメージを探し出すことが可能だ。このため,GRUBが対応しているファイルシステム内の任意のファイルを実行することができる。現在,GRUBが対応しているファイルシステムはTable 1に示す通りだ。

Table 1■GRUBが対応しているファイルシステム

OS ファイルシステム
BSD FFS
DOS FAT16 and FAT32
Minix fs
Linux ext2fs
Reiser FS

One Point!ext3ファイルシステムは対応していないが,すでに第2回目で説明したようにext3ファイルシステムはext2ファイルシステムと互換性があるため,GRUBからの利用でも問題ない。

 しかし,OSのすべてがファイルとしてブートイメージを格納しているわけではない。たとえばWindows95,Windows98,Windows 2000などのOSは,ブートイメージというよりも独自のブートローダーを使用している。

 このようなOSを利用する場合には,GRUBが持つ「チェインロード」と呼ばれる機能を使えばよい。チェインロード機能は,ハードディスク上の特定のセクタから読み込んだプログラムを直接実行する機能だ。この機能を使えば,独自のブートローダーを使っているOSでもGRUBを利用できる。つまり,GRUBは汎用的なブートローダーであり,多種多様なサポートすることができるようになっている。

GRUBの特徴

 GRUBは,ここまで紹介してきた点だけが持ち味ではない。汎用的なブートローダーとしてだけでなくシェル機能を備え,GRUB上からファイルの中身を確認したり,起動するブートイメージを切り替えたりすることができるのだ。そのため,万一起動しなくなった場合に別のブートイメージから起動するといった修復操作もしやすい。

 さらに,シリアルケーブルで接続した別のコンピュータからログインして操作ができるほか,BOOTPプロトコルによるネットワークブートにも対応している。ブートイメージをハードディスク上から読み込んで実行するだけではなく,GRUB自体で各種操作ができるという,一種のユーザーインタフェース環境にもなっているのだ。この点がLILOとの大きな違いとなっている。

space 1/5 NEXT