GRUB について

Linux活用日記

最終更新日: 2002年3月19日


この文書では GRUB についてご紹介していきます.

Table of Contents


GRUB について


Linux ディストリビューションでは, LILO というブートローダーが利用されていることが多いのですが, Red Hat Linux などのように, 最近では GRUB というブートローダーが採用されるようになってきました. ブートローダーとしては LILO も十分なのですが, GRUB は LILO よりも高機能で汎用性も高く設定も容易に行えます. LILO ではカーネルのアップグレード後や起動 OS の変更などを行った場合に, インストールし直す必要がありますが, GRUB ではそのような手間は必要ありません. その他にも LBA モードのサポートやブートセクタをファイル化出来ない Windows の起動におけるチェインローダー機能のサポートなど豊富な機能が用意されています.


GRUB の設定ファイル


GRUB の設定ファイルは /boot/grub/grub.conf ( /boot/grub/menu.lst ) です. このファイルは下表のようになっています.

default=0 ---> (1)
timeout=10 ---> (2)
splashimage=(hd0,2)/boot/grub/splash.xpm.gz ---> (3)
title Red Hat Linux (2.4.7-10) ---> (4)
root (hd0,2) ---> (5)
kernel /boot/vmlinuz-2.4.7-10 ro root=/dev/hda3 ---> (6)
initrd /boot/initrd-2.4.7-10.img ---> (7)

# ここからは Windows を起動する設定
# Windows 2000
title Windows NT 5.0
rootnoverify (hd0,0)
chainloader +1

# Windows 98
title Windows98
root (hd0,3)
makeactive
chainloader +1

(1) デフォルトで起動する エントリー.
(2) タイムアウトの秒数.
(3) メニュー画面の背景画像.
(4) メニューに表示される OS の名前を付ける.
(5) root から始まるこの場合, (hd0,2) は1台目のハードディスクの /dev/hda3 をマウントして起動.
(6) カーネルイメージを指定. また, /dev/hda3 から起動することを示す.
(7) SCSI デバイスがあるときに読み込ませる initrd イメージを指定.


上記のファイルでは, Redhat Linux がデフォルトで起動する OS として指定されています. また, 起動可能な OS に Windows も指定されています. もしも新しいカーネルをインストールした場合は, Linux のパートをコピーし, 書き足してカーネルイメージと (必要ならば) initrd イメージの名前を変更します. そうすれば新旧それぞれのカーネルで起動することができます. ただし, デフォルトで起動するエントリーが 0 のままでは旧カーネルが優先されますので必要に応じて書き足す場所を変えるかエントリーを変更しましょう.

GRUB を新規インストールする


GRUB は次の配布元から入手することができます.

http://www.gnu.org/software/grub/

この例では, grub-0.91 をインストールするものとします.

# tar zxvf grub-0.91.tar.gz
# cd grub-0.91/
# ./configure
# make
# make install

以上でGRUB を利用できる環境が整いました.

GRUB で Linux を起動してみる


次に, フロッピーディスクに GRUB をインストールしてみましょう. フロッピーディスクを挿入して次のコマンドを実行して下さい..

# dd if=/usr/local/share/grub/i386-pc/stage1 of=/dev/fd0 count=1
# dd if=/usr/local/share/grub/i386-pc/stage2 of=/dev/fd0 seek=1

このようにして出来上がったフロッピーで起動することができます.

また, ハードディスクに GRUB をインストールするのも上記と同様です. 仮に1台目のハードディスクの1番目のパーテーションに Windows NT がインストールされていて2番目のパーテーションに Linux がインストールされている場合を例にご説明します. それぞれの起動には Windows NT の NT OS Loader を使用しているものとします.

このような場合, GRUB は MBR (マスターブートレコード) にインストールしてはいけません. なぜなら NT OS Loader が利用できなくなるからです. ですから GRUB は Linux のブートパーテーションの先頭に置く必要があります. この点を踏まえて GRUB をハードディスクにインストールしてみましょう.

# /usr/local/sbin/grub-install /dev/hda2

これで /dev/hda2 に GRUB がインストールされました. あとは Windows NT/2000 と Linux の共存に書いているように NT OS Loader から起動できるようになっていれば問題ありません.

では, 再起動してみましょう. 起動すると次のようにプロンプトが現れます.

grub >

Linux を起動するためには, 次のようにコマンドを入力します.

grub > root (hd0,1)
grub > kernel /boot/vmlinuz boot=/dev/hda2 ---> この部分は事前に確認しておくこと.
grub > initrd /boot/initrd.img ---> 必要がれば入力.
grub > boot

しかし, ここまでのコマンドを毎回起動するたびに入力するのは大変です. そのために上記のような設定ファイル ( /boot/grub/menu.lst ) を用意するわけです. そうすると次回起動時から GRUB メニューが現れるようになります.

関連文書:
起動に関するトラブル
Windows NT/2000 と Linux の共存


HOME