GRUBについて
ブートローダーを変更したい
/boot/grub/grub.conf
ブートローダーが破損した
「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のバイナリになる。
# 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
# 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
最終更新:2008年01月08日 18:57