GRUB起動CDの作成

なんらかの原因でOSのブートローダーが起動しなくなったときのために、GRUB起動CDを作成しておきます。
※ CentOS5.2がインストールされていて、すでにGRUBの設定が済んでいるものとします。
まだ設定をしていない場合はコチラ

■ ISOイメージの作成

作業ディレクトリの作成
[root@example ~]# mkdir -p /tmp/grub/iso

作業ディレクトリに移動
[root@example ~]# cd /tmp/grub/

1.44MBのファイルを作成(仮想フロッピー)
[root@example grub]# dd if=/dev/zero of=1440 bs=1k count=1440
1440+0 records in
1440+0 records out
1474560 bytes (1.5 MB) copied, 0.0622556 seconds, 23.7 MB/s

GRUB起動に必要なイメージを作成
[root@example grub]# cat /boot/grub/stage1 /boot/grub/stage2 > grubimg

仮想フロッピーと起動イメージを結合
[root@example grub]# cat grubimg 1440 > joinimg

1.44MBにサイズ調整して、boot.imgを作成
[root@example grub]# dd if=joinimg of=iso/boot.img bs=1k count=1440
1440+0 records in
1440+0 records out
1474560 bytes (1.5 MB) copied, 0.0880181 seconds, 16.8 MB/s

ISOファイルを作成
[root@example grub]# mkisofs -b boot.img -o /tmp/grub.iso iso/
INFO: UTF-8 character encoding detected by locale settings.
Assuming UTF-8 encoded filenames on source filesystem,
use -input-charset to override.
Size of boot image is 2880 sectors -> Emulating a 1440 kB floppy
Total translation table size: 2048
Total rockridge attributes bytes: 0
Total directory bytes: 0
Path table size(bytes): 10
Max brk space used 0
896 extents written (1 MB)

作業ディレクトリを削除
[root@example tmp]# rm -rf grub/

grub.isoが作成されていることを確認
[root@example tmp]# ll
合計 1856
drwxrwxrwt 11 root root 4096 4月 26 23:56 .
drwxr-xr-x 23 root root 4096 4月 26 23:40 ..

  • rw-r--r-- 1 root root 1835008 4月 26 23:53 grub.iso

作成したISOファイルを、ライティングソフトで焼いてBIOSをCD起動にすればGRUBが起動します。

GRUBコマンドでのCentOSの起動
BIOSのファーストブートをCDで起動するとGRUBコマンドラインが起動します。
コマンドラインでCentOSを起動してみます。
ここで指定するカーネルやSCSIデバイスは/boot/grub/grub.confで設定しているものと同じです。
メモしておきましょう。
なお、以下の構成でHDDにインストールされています。
HDDの1番目のパーティション:WindowsXP
HDDの2番目のパーティション:CentOS

ここでTAB押下で現在接続されているデバイスが表示されます
grub> root (

デバイスを引数の一番目に記述した後にTAB押下でパーティションが表示されます
grub> root (hd0,

カーネルがインストールされているパーティションを引数の2番目に記述して
Enter押下で選択されたデバイスのパーティションがマウントされます。
grub> root (hd0,1)

カーネルを指定します。ここもTAB押下で補完が効きます。
grub> kernel /boot/vmlinuz-2.6.18-128.1.6.el5 ro root=LABEL=/

SCSIデバイスを指定します。ここもTAB押下で補完が効きます。
grub> initrd /boot/initrd-2.6.18-128.1.6.el5.img

起動します。
grub> boot

GRUBコマンドでのWindows XPの起動

# 1番目のHDDの1番目のパーティションをマウントします。
grub> root (hd0,0)

# 最初の1セクタを読み込んで実行します。
grub> chainloader +1

# 起動します。
grub> boot

パーティションをマウントした状態でEsc/Escを押下するとGUIでのブート画面を起動することもできます。

以下のコマンドでGRUBをHDDにインストールすることによって、なんらかの問題でGRUBが自動起動しなくなっている場合でも、再設定することができます。

# マウントされているデバイスを確認します。
[root@example /]# df

# 確認したデバイスにGRUBをインストールします。
[root@example /]# grub-install /dev/sda

# 再起動します。
[root@example /]# reboot

これでPC起動時にGRUBが起動するようになります。