grub-HOWTO

Momonga Project


     http://www.momonga-linux.org/
     
    

島村 充


     
    

Kondara Project

概要

Momonga Linux でブートローダー grub を使う方法です


目次

1. grubって何?
2. インストール方法
2.1. 入手方法
2.2. フロッピーにインストール
2.3. フロッピーからの起動
3. HDDへのインストール
3.1. HDDにインストール
3.2. メニューによる起動
4. FAQ
4.1. ルートパーティションがReiserFS, XFS, JFS, LVMなんだけど大丈夫?
4.2. /bootを別パーティションにしたんだけど…
4.3. kernelにオプションを渡すにはどうしたらいいの?
4.4. プライマリマスターのHDD以外にWindowsをインストールしたんだけど…
4.5. メニュー画面で絵を表示できるって聞いたんだけど…
4.6. LILO で十分じゃないの?
5. 謝辞
6. 免責と著作権について

1. grubって何?

PC/AT用ブートローダーの一種です。

Momonga 標準のブートローダーはLILOです

LILOはkernelのアップデートの際などに手動で更新しなければなりません、 しかしgrubだと起動時に動的に変更可能で、非常に便利です。

grubで起動できるOSは…

  • Linux

  • Windows

  • MS-DOS

  • BeOS

  • FreeBSD

  • OpenBSD

  • GNU Hurd

など多岐にわたります

配布元は http://www.gnu.org/software/grub/ です

2. インストール方法

2.1. 入手方法

grubはインストール時にCustomでEverythingを選ぶとインストールされます。

インストールしていない人は


     # mph-get install grub

    

でインストールします。

なおインストールしただけではLILOなどは上書きされません。 安心してインストールしましょう

2.2. フロッピーにインストール

いきなりHDDに上書きしてしまうのは不安ですね。

いったんフロッピーにインストールし、 ちゃんと起動することが確認できてからHDDにインストールしましょう。

まず内容を消してもいいフロッピーを用意します。

その後(必要に応じてrootで)


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

    

とするとフロッピーにインストール出来ます

2.3. フロッピーからの起動

ここでは/dev/hda3がLinuxのルートパーティションで、/dev/hda1がWindowsのインストールパーティションだとします

それではフロッピーを入れたまま再起動しましょう。

     grub>
    

というプロンプトが出て止まるでしょう。

Linuxを起動するには…


     grub> root (hd0,2)
     grub> kernel /boot/vmlinuz-2.4.19-12m root=/dev/hda3
     grub> initrd /boot/initrd-2.4.19-12m.img
     grub> boot

    

とします。Windowsの起動には…


     grub> root (hd0,0)
     grub> makeactive
     grub> chainloader +1
     grub> boot

    

とします。

2.3.1. キーマップについて

grubのキーマップはUSキーボードになっています。日本語106キーボードなどをお使いの方は "("は"Shift+9"、")"は"Shift+0"、"="は"^"押すと出るようになっています

2.3.2. 補完機能

grubのプロンプトはbashライクな補完機能を持っています。

コマンド、ファイル名共に補完可能です。例えば…kernelコマンドの場合


      grub> ker<TAB>

     

とすると


      grub> kernel

     

となります

2.3.3. HDDの番号について

grubではHDDはhd0, hd1, hd2...の様に表します。

SCSIとIDEの区別は無く、BIOSから見た1台目のHDDがhd0,2台目のHDDがhd1になります。

FDDも同様に1台目からfd0, fd1...になります。

3. HDDへのインストール

3.1. HDDにインストール

無事起動しましたか? それではいよいよHDDにインストールします


     # /sbin/grub-install /dev/hda

    

こうすると/dev/hdaのMBRに上書きされます

以降起動画面が先ほどのフロッピーから起動したものと同じになります

3.2. メニューによる起動

さて、無事にHDDからの起動もgrubになったと思います。

しかし、現状では毎回毎回コマンドを入力しなくてはならず、大変面倒ですね。

そこでメニューを使った選択方式による起動のしかたを説明します。

メニューは/boot/grub/grub.confというファイルを編集します。以下に私の例を載せます


     # タイムアウト(秒)
     timeout 5

     # デフォルトで起動するエントリー(上から0,1,2,3...)
     default 0

     ## splash image
     # 背景に画像を使用する場合、ここで指定します
     splashimage = (hd0,0)/boot/grub/splash.xpm.gz

     ## Momongaの起動
     # titleはメニューエントリーの名前です
     title Momonga Linux
     root (hd0,0)
     kernel /boot/vmlinuz-2.4.19-12m root=/dev/hda1
     initrd /boot/initrd-2.4.19-12m.img


     ## Windowsの起動
     # makeactiveとchanloaderはオマジナイと思ってください
     title Windows 98
     root (hd0,1)
     makeactive
     chainloader +1

    

これで起動時にメニュー画面が出て 5秒間何もキーをさわらないとLinuxが起動するようになります

4. FAQ

4.1. ルートパーティションがReiserFS, XFS, JFS, LVMなんだけど大丈夫?

はい、大丈夫です。

XFS, JFS, LVMのサポートはgrub-0.91-0.02001121102kからとなります

4.2. /bootを別パーティションにしたんだけど…

/bootを別パーティションにすると起動時にメニューが表示されなかったり、 起動が出来なかったり、できても思っていたパスと違うところにあるという 現象が起こります。

grubを/boot/grub にインストールしたなら、grub的にはイメージはディレクトリ/grubの下にあるのであって、/boot/grubの下ではないと認識します。

つまりgrub的には/boot/grub/grub.confが無いと判断されメニューは表示されません

kernelの位置も同様です。

Linux的には/boot以下にあってもgrub的には/にあると認識するのです

そこでgrubをHDDにインストールする際に


     # grub-install --root-directory=/boot /dev/hda

    

とすると、一件醜いですがうまく動作します。

grubプロンプトから起動するときは


     grub> root (hd0,1)
     grub> kernel /boot/vmlinuz-2.4.19-12m root=/dev/hda1
     grub> initrd /boot/initrd-2.4.19-12m.img

    

となります

4.3. kernelにオプションを渡すにはどうしたらいいの?

kernelコマンドの最後に付けるだけです。例えば…


     grub> kernel /boot/vmlinuz-2.4.19-12m root=/dev/hda1 acpi=no-idle vga=ask hdc=ide-scsi

    

この様にします

4.4. プライマリマスターのHDD以外にWindowsをインストールしたんだけど…

Windowsは本来プライマリマスターのMBRにWindowsのブートローダー以外をインストールすると起動できません。

そのような場合HDDを仮想的に入れ替えるmapコマンドを使います。例えば…


     grub> map (hd0) (hd1)
     grub> map (hd1) (hd0)
     grub> root (hd1,0)
     grub> makeactive
     grub> chainloader +1
     grub> boot

    

とすれば起動できます

4.5. メニュー画面で絵を表示できるって聞いたんだけど…

はい、できます

まず640x480で14色のxpmイメージを作ります。

作り方はgimp等で好きな画像を作る or どこから画像を持ってきて


     $ convert -geometry 640x480 -colors 14 hoge.jpg hoge.xpm

    

とすれば変換できます(ImageMagickが必要です)

できた640x480,14色のxpmファイルをgzipで圧縮します。

そのファイルを/boot/grubにコピーします

そして/boot/grub/grub.confに以下のように記述します


     #前景色
     foreground = ffffff

     #背景色
     background = 000000

     #表示したいイメージ
     spalshimage = (hd0,0)/boot/grub/hoge.xpm.gz

    

なお/boot/grubには Momonga デフォルトのsplash.xpm.gzが入っています

4.6. LILO で十分じゃないの?

そうですね、確かに LILO で十分とも言えます。

しかし kernel アップグレードで間違えて


     # rpm -Uvh kernel-hoge-numm.i586.rpm

    

とやって、更に/sbin/liloをやるのを忘れて起動しなくなった… などと言う悲しい思いをすることが無くなります。

でもgrubならばメニュー画面からメニューを編集したり、 プロンプトに降りてコマンドを実行することが出来るので、そのようなことはありません

また「LILOの方が簡単だし、私はそんなミスをしない」と言う方も grubをインストールしたフロッピーを1枚持っていれば万が一の時に役に立つでしょう

5. 謝辞

この文書は Kondara Project の Kondara-grub-HOWTO をベースに、Momonga Project で拡張された 部分などを追加して書かれています。

grub-HOWTO の著者である 島村 充氏、及び Kondara Project、また Kondara Project で ドキュメントのメンテナンスをされていた諸氏に、ここに謝辞を程します。

6. 免責と著作権について

この文書は無保証です。この文書の利用およびこの文書に基づいて作業をされた結果、 何らかの損害を被ったとしても、原著者はいかなる責任をも負いませんのでご了承ください。

この文書の著作権は Momonga Project にあります。 この文書の配布ライセンスは、利用許諾のオプション A. B. を除外した オープン・パブリケーション利用許諾契約書 (OPL -- Open Publication License) に従います。

OPL についての詳細は、 http://www.opencontent.org/openpub/ を参照してください。 また、八田真行氏による OPL ドラフト v1.0 日本語訳が http://www.opensource.jp/openpub/ にて参照可能です。

この文書を再配布する場合は、可能な限り http://www.momonga-linux.org/docs/grub-HOWTO/ja/ 以下から最新版を入手し、それを配布してください。