Windows上でGRUBをインストール

2001.11.19
2004.03.02
2006.12.11

 ハードディスクにWindows だけでなく、Linux(Vine)や、BSDをいれているので、インストールをして遊んでいるうちにどのOSも立ち上がらなくなってしまうことがよくあります。
 そんなときに役立つのが、GRUB です。
 GRUBを使用すると、起動時にメニュー形式でOSを選ぶことができるだけでなく、トラブル時には希望するOSをフロッピー1枚で選択起動することができるようになります。
特に、Linuxカーネルを直接起動できるので、Linuxをインストールする人にはおすすめです。


1 ダウンロード
 GRUBはftp://alpha.gnu.org/gnu/grub/にあります。ここからファイルを2つ持ってきます。
(1) Windows上に置くファイルです。grub-0.97-i386-pc.tar.gz
(2) フロッピーに置くファイルです。grub-0.97-i386-pc.ext2fs

2 Windowsでの設定
(1) まず、grub-0.97-i386-pc.tar.gzを解凍します。
 解凍は、「解凍レンジ」や「eo」など、tar、gzを解凍できるソフトを使ってください。
(2) Windows のCドライブに、\boot\grub ディレクトリを作ります。  ここに解凍したファイルをコピーします。

3 GRUBのフロッピーを作る
(1) フォーマットしたフロッピーに、grub-0.97-i386-pc.ext2fs を書き込みます。  ただし、フロッピーの先頭に書く必要があるので、通常のコピーのコマンドではうまくいきません。
 rawrite.exeを使って、フロッピーの先頭に書きこみます。
MS−DOSプロンプト画面で、
   rawrite -f grub-0.97-i386-pc.ext2fs -d a
とします。
(2) Linuxを使う人はrawriteをみんな持っていると思いますが、Windows上で使うことのできるプログラムがあります。(Rawrite for windows)

4 起動時に表示されるメニューを作る
 複数のOSをインストールしている場合に、メニュー形式で選択して希望のOSを起動できるように、menu.lstファイルを作ります。
(1) Linux上でソースからコンパイルしてGRUBを作る場合には、menu.lstファイルが手にはいるのですが、ここに書いてある方法ではついてきません。そこで、
 オリジナルのmenu.lstを持ってきました。

(2) OSをどのパーティションにインストールしたかによって、このファイルの中の設定を変更しなければなりません。  最初のパーティションにWindowsを、4番目のパーティションに Vine Linux を、7番目のパーティションに SUSE を置いた場合の、menu.lstの例です。  必要に応じて、エディタで修正してください。
(3)修正後のファイルを、Windowsのドライブの\boot\grubに置きます。

5 GRUBのインストール
 GRUBをハードディスクの先頭部分に書き込みます。
(1) フロッピーをPCにいれて、再起動します。
(2) grub> と表示されたら、

     root (hd0,0)
     setup (hd0)

と2行入力します。これで、ハードディスクのMBRにGRUB(の一部)が書き込まれます。

(3)    reboot

と入力すると再起動します。フロッピーを取り出しておいてください。
(4) menu.lstに間違いがなければ、きっとメニューが表示されます。
 好きなOSを起動してください。

6 修正
 GRUBのいいところは、設定が間違っていても、GRUBをいれたフロッピーで再起動すれば何度でも設定をやり直すことができる点です。
GRUBでは、フロッピーで起動して grub> が表示されているときに入力するコマンドとmenu.lstに書くコマンドとが同じです。
 ですから、うまく設定できない場合は、何度かフロッピー起動でコマンド入力を試行錯誤し、うまくいったものを、Windowsを再起動して、Cドライブ上のmenu.lstに書き込めばいいのです。
 そして再度、5の手続きで、root とsetup を使ってハードディスクからのGRUB起動を有効にします。
あとは、フロッピーは不要です。

7 コマンドの例示
(1) Windowsを起動したい場合
 Windowsはたいていの人がCドライブにインストールしているので、この手順を変更する必要はないと思います。

  rootnoverify (hd0,0)
  makeactive
  chainloader +1
  boot

(2) VineLinuxを起動する場合  ルートの場所だけでなくカーネルがある場所をGRUBに教えなければなりません。
 また、カーネルにパラメータを渡す場合にはGRUBが渡すので、menu.lstにそのパラメータを書きこんでおく必要があります。
 3番目のパーティションにLinuxをインストールし、カーネルのvmlinuzが/bootにある場合の起動コマンドです。

  root (hd0,2)
  kernel /boot/vmlinuz root=/dev/hda3 initrd /boot/initrd.img
  boot

8 Linux側の設定は
 HD上のどれか1つのOSに\boot\grubのディレクトリとGRUBのファイルがあればいいのですが、私の場合あちこちをよく壊すので、Windowsだけでなく、LinuxのパーティションにもGRUBのためのファイルを置いています。
 Windowsの場合と同様に、解凍したファイルを、/boot/grub に置くだけです。
 ちなみに、石橋をたたいても渡らない慎重な人の場合、すべてのパーティションに置きまくってしまうのがいいでしょう。

9 106キーボードですか
 そうそう、キーボードが日本語106キーの場合、フロッピー起動時のコマンド入力で、=、(、)、+のキーの位置がわからないでしょうから、書いておきます。
 (  shift 9
 )  shift 0
 =  ^
 +  shift ^

10 すでにLinuxが確実に起動する人の場合
 ところで、なんとなく他のブートセレクタを使ってみたいという程度の気持ちの人は、無理にGRUBを使う必要はないと思います。
 おすすめは、Multiple Boot Manager です。
GRUBの設定を間違ってMBRを壊したときにも(私の場合はGRUBのバージョン0.93で壊れました。ひどいぞsetupコマンド。)、簡単に修復できますし、おすすめです。

HOME