2013年3月20日水曜日

Grub2からSystemRescueCD(USBメモリ)を起動させる

Warning
ある程度Linuxの知識があることを前提に書かれています。 操作の間違いでお使いのコンピューターが起動しなくなることもあります。)

はじめに

SystemRescueCD は私のお気に入りのレスキュー用Linuxで、 コンピュータが壊れた時などにCDやUSBから起動させて復旧するためのツールが揃っています。 また、LinuxだけではなくMemTestやFreeDosも配布物に含まれています。 もう一方のGrubはLinuxでよく使用されるブートローダーですが、 ブート前にコマンドプロンプトを表示できるので、 起動に失敗した場合などコマンドプロンプトから調べることができます。 Grub2ではFATファイルシステムに対応し、ISOファイルの読み込みも可能となったので、 USBメモリにGrub2をインストールしSystemRescueCDをISOイメージから起動する方法を書きます。
2013-05-07:この方法の利点はSystemRescueCDをアップデートしたい場合、 Windows上からISOイメージを入れ替えるだけで済むことです。
2013-07-12:なおGrubを使わないならば、 公式の USBへのインストール方法 を参照して下さい。 インストーラーをダウンロードして実行するだけのようです。 昔見た時に比べるとかなり簡略化されていました。

必要なもの

まず、必要なものですが、Grub2をUSBメモリにインストールするために、 Grub2に対応したLinuxが必要となります。 ここではSystemRescueCDをCDに書き込んで使用することにします。
もう一つはSystemRescueCDをインストールするUSBメモリです。 データは全て消去されますので事前にバックアップを取っておいて下さい。 あと、USBメモリはWindowsでフォーマットしないで下さい。 Windowsでフォーマットするとパーティション管理領域が作成されない場合があるためです。 (diskpartコマンドを使用する方法もあります。 [参考]
[参考]diskpartを使ってWindows Vista/7のインストールUSBメモリを作る

Linuxでの作業

まずはSystemRescueCDのISOファイルを ダウンロード し、CDに書き込みます。 現在のバージョンはSystemRescueCd-x86-3.4.2でした。
できたら、CDをいれてPCをCDから起動します。
CDを入れて少し経つとコマンドラインが表示されます。 まず、USBメモリのデバイス名を確認します。簡単なのは、 以下のコマンドを入力し、USBメモリを差し込みます。:
# tail -f /var/log/messages
.....
sd XX:X:X:X: [sdX] Attached SCSI removable disk
ということで、ここではsdXがUSBメモリのデバイスということにします。 Control-C`でtailを抜け、 :command:`fdisk でプライマリパーティションを 一つBootableで作成します。:
# fdisk /dev/sdX
作成後pコマンドで表示させると私の場合は以下のようになりました。:
Device        Boot  Start     END             Blocks        Id  System
/dev/sdX1     *      2048    31384017   15690985  c   W95 FAT32 (LBA)
fdiskで私の打ったキーを並べると以下の様な感じです。(危険なのでそのまま打たないで下さい。):
p, d, n p 1 Enter Enter, t c, a 1, p, w
USBメモリをフォーマットします。:
# mkfs.vfat /dev/sdX1
マウントしてGrubをインストールします。:
# mkdir /mnt/usb
# mount /dev/sdX1 /mnt/usb
# grub2-install --root-directory=/mnt/usb /dev/sdX
Linuxでの作業はここで終わりです。最後に再起動します。:
# shutdown -r now

Windowsでの作業

それではここからの作業は慣れ親しんだWindowsで行いましょう。 まず、Windowsが起動したらUSBメモリを開きます。
USBメモリにbootというディレクトリがあるので、sysresというフォルダを作ります。 そこに、先ほどダウンロードしたSystemRescueCDのISOファイルをsysres.isoというファイル名で 置きます。
ここにSystemRescueCDを起動させるためのgrubの設定を書きましょう。 sysres.cfgというテキストファイルをお好きなテキストエディッタで作りましょう。 改行コードはCRLFでも大丈夫のようです。
以下のように記述します。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
set sysres_iso=/boot/sysres/sysres.iso

insmod loopback
loopback sysres_disk $sysres_iso


menuentry "SystemRescueCd std-32bit" {
   linux (sysres_disk)/isolinux/rescue32 isoloop=$sysres_iso setkmap=jp docache
   initrd (sysres_disk)/isolinux/initram.igz
}

menuentry "SystemRescueCd std-64bit" {
   linux (sysres_disk)/isolinux/rescue64 isoloop=$sysres_iso setkmap=jp docache
   initrd (sysres_disk)/isolinux/initram.igz
}

menuentry "SystemRescueCd alt-32bit" {
   linux (sysres_disk)/isolinux/altker32 isoloop=$sysres_iso setkmap=jp docache
   initrd (sysres_disk)/isolinux/initram.igz
}

menuentry "SystemRescueCd alt-64bit" {
   linux (sysres_disk)/isolinux/altker64 isoloop=$sysres_iso setkmap=jp docache
   initrd (sysres_disk)/isolinux/initram.igz
}

menuentry "Super Grub2 Disk" {
    linux16 (sysres_disk)/isolinux/memdisk
    initrd16 (sysres_disk)/bootdisk/grubdisk.img
}

menuentry "MemTest+" {
    linux16 (sysres_disk)/bootdisk/memtestp
}

menuentry "NT Password Editor" {
    linux16 (sysres_disk)/ntpasswd/vmlinuz
    initrd16 (sysres_disk)/ntpasswd/initrd.cgz
}

menuentry "Gag" {
    linux16 (sysres_disk)/isolinux/memdisk
    initrd16 (sysres_disk)/bootdisk/gag.img
}

menuentry "MHDD" {
    linux16 (sysres_disk)/isolinux/memdisk
    initrd16 (sysres_disk)/bootdisk/mhdd.img
}

menuentry "Hardware Detection Tool" {
    linux16 (sysres_disk)/isolinux/memdisk
    initrd16 (sysres_disk)/bootdisk/hdt.img
}

menuentry "Aida" {
    linux16 (sysres_disk)/isolinux/memdisk
    initrd16 (sysres_disk)/bootdisk/aida.img
}

menuentry "Ranish Partition Manager" {
    linux16 (sysres_disk)/isolinux/memdisk
    initrd16(sysres_disk)/bootdisk/ranish.img
}

menuentry "FreeDOS" {
    linux16 (sysres_disk)/isolinux/memdisk
    initrd16 (sysres_disk)/bootdisk/freedos.img
}
Warning
結構前に書いてそのままの項目が多いので、起動しないツールがあるかもしれません。
次にboot/gurb2フォルダの下にgrub.cfgというテキストファイルを作り、 先ほどのsysres.cfgを呼び出してやります。以下のように記述します。:
configfile /boot/sysres/sysres.cfg
USBメモリからコンピューターを起動させれば、Grubのメニューが表示されるはずです。
これをいつも持ち歩いていれば、いつか職場でヒーローになれるかもしれません。

0 件のコメント:

コメントを投稿