「MBR」(マスターブートレコード)とは、PCが起動した際にハードディスク上に記録されている希望するOSを起動させるためのプログラム。この領域が破損してしまうと、OSが起動できなくなってしまう。そのため、何らかの対策を行っておくのがよいが、その1つにはあらかじめ復旧可能な起動用フロッピーを作成しておく方法が挙げられる。
次のステップで復旧させるまでの手順を紹介しよう。
1. GRUB用の起動フロッピーを作る
# dd if=/usr/share/grub/i386-redhat/stage1 of=/dev/fd0 count=1 読み込んだブロック数は 1+0 書き込んだブロック数は 1+0 # dd if=/usr/share/grub/i386-redhat/stage2 of=/dev/fd0 seek=1 読み込んだブロック数は 234+1 書き込んだブロック数は 234+1 |
なお、GRUBがソースコンパイル状態、あるいはTurbolinux8の環境では、上記の「i386-redhat」ディレクトリ名が「i386-pc/」になっていることに注意したい。
ここで書き込まれたイメージファイルは、それぞれstage1がMBR、stage2がGRUBのバイナリになる。
・Red Hat Linuxの場合 # ls -l /usr/share/grub/i386-redhat/stage* -rw-r--r-- 1 root root 512 9月 6 2001 /usr/share/grub/i386-redhat/stage1 -rw-r--r-- 1 root root 120000 9月 6 2001 /usr/share/grub/i386-redhat/stage2 ・Turbolinux8の場合 # ls -l /usr/share/grub/i386-pc/stage* -rw-r--r-- 1 root root 512 4月 26日 19:57 /usr/share/grub/i386-pc/stage1 -rw-r--r-- 1 root root 105344 4月 26日 19:57 /usr/share/grub/i386-pc/stage2 |
また、stage2ファイルが/boot/grub/ディレクトリ下にあるかどうかも確認しておこう。万が一見つからない場合には、次のようにしてコピーしておけばよい。
# ls /boot/grub # cp /usr/share/grub/i386-redhat/stage2 /boot/grub |
2. 作成した起動用フロッピーで再起動(# reboot)
フロッピーで起動されたGRUBのコマンドラインでは補完機能が効く。「grub>」のプロンプトの表示後は、次のように入力していこう。例えば「(hd0,」まで入力して「Tab」キーを押すと、ファイルシステムの一覧が表示され、「kernel /」の入力後に「Tab」を押せば候補が表示される。
なお、ここでは次のような環境を想定している例だ。
ルートパーティション:/dev/hda1
カーネルイメージ:/boot/vmlinuz-2.4.18-10k
RAMイメージ:/boot/initrd-2.4.18.img
grub> root (hd0,0) grub> kernel /boot/vmlinuz-2.4.18 root=/dev/hda1 ro grub> initrd /boot/initrd-2.4.18.img ←SCSIのHDDの場合は、initdを読み込む必要がある。 grub> boot |
GRUB上では日本語キーボードが認識されていない。このため次の記号については、対応を参考にして入力すればよいだろう。
入力文字()=GRUB上の入力「Shift」+「9」「Shift」+「0」「^」 |
3. HDD(MBR)へのGRUBインストール
フロッピーでの起動が確認できれば、次にHDDのマスターブートレコードへGRUBを書き込む作業だ。GRUB上で直接書き込むか、Linux起動後のコマンドラインで実行するかの2通りがある。
・Linuxコマンドラインでの例
# which grub-install /usr/sbin/grub-install # /usr/sbin/grub-install /dev/hda Installation finished. No error reported. This is the contents of the device map /boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'. (hd0) /dev/hda (hd1) /dev/hdb |
grub> install=(fd0)+1 (hd0) (hd0,1)/boot/grub/stage2 0x8000 p |
Copyright © ITmedia, Inc. All Rights Reserved.