GRUB2を用いて、Bootable (起動可能) USBメモリーを作成

USBメモリーにGRUB2とUbuntu isoイメージを入れて、そのUSBメモリーから起動して、GRUBからイメージを選択起動する。


やること

Partitionの作成

まず、fdiskで対象のUSBメモリーのデバイスを開く。

fdisk /dev/sdX

1つのFAT partitionのみある場合は、それのbootable (起動可)フラグがonであることを確認する。
ここでパーティション作成・変更が必要な場合は、前述の通りに設定する。

[注意] 2番目以降のpartitionはWindowsでは認識しない。そのうえ、通常のUSBメモリーとは異なる形式での認識になる。

FAT16またはFAT32でformatする。
任意でよいが、説明のため、ボリューム・ラベルは「USB_GRUB」、ボリュームIDは「5678-09AF」であるとして話を進める。

MBRにbootstrap (syslinuxのmbr.bin)を書き込む

syslinuxのMBRプログラム(bootstrap)を書き込む。syslinuxのmbr.binを用意する。

dd bs=440 count=1 conv=notrunc if=syslinux/mbr/mbr.bin of=/dev/sdX

GRUB2のインストール

PBRにboot.img(GRUB2のローダー)を、(USB disk)/boot/grubにGRUBのプログラム・設定ファイルを入れる。

grub-install --allow-floppy --root-directory=(例: /media/USB_GRUB) --force /dev/sdX1

設定ファイル (USB disk)/boot/grub/grub.cfg を作成する。


set timeout=none

menuentry "ubuntu-ja-12.04-desktop-i386.iso" {
  set iso="/boot/ubuntu-ja-12.04-desktop-i386.iso"
  search --set=root --fs-uuid 5678-09AF (例)
  loopback loop $iso
  linux (loop)/casper/vmlinuz iso-scan/filename=$iso boot=casper quiet noprompt locale=ja_JP.UTF-8 --
  initrd (loop)/casper/initrd.lz
}

Ubuntu Live CD の isoイメージを起動する項目を記述した例
isoファイルは /boot/ubuntu-ja-12.04-desktop-i386.iso
ボリュームIDで対象のUSBメモリーを認識して、起動する。(--fs-uuid オプション)

あとは、起動するisoファイルを前述の通りに配置し、必要なファイルを揃える。

USBメモリーから起動

BIOSの起動メニューで対象のUSBメモリーを指定して起動するか、BIOSの起動ドライブの順序を変更して起動する。

他の公開された作成方法では、HDDエミュレーションでのみ起動できるものが多いが、この方法ではFDDエミュレーションでも起動できる。


http://tri.dw.land.to/doc/1205290BootableUSB_GRUB.html

Last-Modified: