Grub2 を使ったマルチブート USB メモリ
最近の USB メモリは数ギガバイトあるので、起動イメージを複数保存できる容量がある。 そこで、USB メモリに Grub2 をインストールして、 USB メモリに保存してある複数の ISO イメージから起動させるようにしたい。 作業は Ubuntu 12.10 上で行った。
うまくいったのだが、grub.cfg に書く設定の探し方がよくわからなかった。 Ubuntu 12.10 と Debian 6.06 の netinst は起動できた(インストールが終わるまでは使っていない)。
USB メモリに Grub2 のインストール
http://norian.blog50.fc2.com/blog-entry-92.html にあるとおりに行った。
まず、USB メモリが /dev/sd? のどれなのか確認する。
df
で /media 以下にあるディレクトリを見ると USB メモリが /dev/sd? のどれなのかわかる。 私の環境では /dev/sdg だったので
sudo grub-install --no-floppy --root-directory=/media/USERNAME/MEMOROY /dev/sdg
のようにして grub を USB メモリにインストールする。
USB メモリに ISO イメージを保存するための boot/iso ディレクトリを作成しておく。
mkdir /media/USERNAME/MEMOROY/boot/iso
Ubuntu 12.10
ubuntu-12.10-desktop-amd64.iso と ubuntu-ja-12.10-desktop-i386.iso を起動するイメージとして使うことにする。 これらのファイルはダウンロードして /media/USERNAME/MEMOROY/boot/iso に保存する。
USB メモリの boot/grub/grub.cfg に ISO イメージに合う設定を書く必要がある。 http://www.miuxmiu.com/archives/2011/07/12/grub2_usb_memory_install_direct_livecd_iso_data_starting.html に 10.10 用の設定があった。ファイル名だけ変更した
menuentry "ubuntu-12.10-desktop-amd64.iso" {
loopback loop (hd0,1)/boot/iso/ubuntu-12.10-desktop-amd64.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-12.10-desktop-amd64.iso noeject noprompt --
initrd (loop)/casper/initrd.lz
}
menuentry "ubuntu-ja-12.10-desktop-i386.iso" {
loopback loop (hd0,1)/boot/iso/ubuntu-ja-12.10-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-ja-12.10-desktop-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.lz
}
を /media/USERNAME/MEMOROY/boot/grub/grub.cfg に書き込む (ファイルは存在しないので作成する)。
Debian 6.06 netinst
Debian 6.06 の netinst については http://140.120.15.179/Howto-Install/USBinst.html (そのうち消えそうなサイトだが) にあるように行った。
debian-6.0.6-amd64-netinst.iso と debian-6.0.6-i386-netinst.iso をダウンロードして /media/USERNAME/MEMOROY/boot/iso に保存する。
私は原理はわかっていないが initrd.gz と vmlinuz が必要であるらしい。
http://ftp.tw.debian.org/debian/dists/Debian6.0.6/main/installer-amd64/current/images/hd-media/ から initrd.gz と vmlinuz をダウンロードする。 ディレクトリ /media/USERNAME/MEMOROY/boot/amd64 を作成して、そこにこれら2つのファイルを移す。
mkdir /media/USERNAME/MEMOROY/boot/amd64
mv initrd.gz vmlinuz /media/USERNAME/MEMOROY/boot/amd64
同じように i386 に対しても実行する。 http://ftp.tw.debian.org/debian/dists/Debian6.0.6/main/installer-i386/current/images/hd-media/ から initrd.gz と vmlinuz をダウンロードして、/media/USERNAME/MEMOROY/boot/i386 に保存する。
mkdir /media/USERNAME/MEMOROY/boot/i386
mv initrd.gz vmlinuz /media/USERNAME/MEMOROY/boot/i386
grub.cfg には次を書き込む。
menuentry "debian-6.0.6-amd64-netinst.iso" {
loopback loop /boot/iso/debian-6.0.6-amd64-netinst.iso
linux /boot/amd64/vmlinuz desktop=lxde --
initrd /boot/amd64/initrd.gz
}
menuentry "debian-6.0.6-i386-netinst.iso" {
loopback loop /boot/iso/debian-6.0.6-i386-netinst.iso
linux /boot/i386/vmlinuz desktop=lxde --
initrd /boot/i386/initrd.gz
}
SystemRescueCD
systemrescuecd-x86-3.1.2.iso をダウンロードして /media/USERNAME/MEMOROY/boot/iso に保存する。 http://www.sysresccd.org/forums/viewtopic.php?f=14&t=2808 を参考にして grub.cfg に次を書き込む。
menuentry "systemrescuecd-x86-3.1.2.iso (32bit)" {
loopback loop /boot/iso/systemrescuecd-x86-3.1.2.iso
linux (loop)/isolinux/rescue32 isoloop=/boot/iso/systemrescuecd-x86-3.1.2.iso
initrd (loop)/isolinux/initram.igz
}
menuentry "systemrescuecd-x86-3.1.2.iso (64bit)" {
loopback loop /boot/iso/systemrescuecd-x86-3.1.2.iso
linux (loop)/isolinux/rescue64 isoloop=/boot/iso/systemrescuecd-x86-3.1.2.iso
initrd (loop)/isolinux/initram.igz
}
まだ、SystemRescueCD 自体は使ったことはないのでよくわかってはいないが、 USB からブートすると端末が使用できた。
使い方
USB メモリからブートすると grub で ISO を選択する画面になる。 そこで、使いたい項目を選択すれば良い。