Fedora 16 のLive CD (iso) を USBメモリから起動する @ grub2

まずはじめに、結論から言うと、Ubuntu の iso はUSBメモリから直接起動できますが、Fedora 16 の Live CD  は、そのままでUSBメモリから起動できません。起動するには、iso 内のあるファイルにパッチを当てる必要があります。このページではその話も含めて記述しています。

 

まずは、USB メモリに grub2 をインストールします。インストールはここを参考にしましたが、簡単に書くと、私の場合は ubuntu-11.10-desktop-i386.iso の Live CDを使ってPCをCD起動し、USBメモリを挿して、以下のコマンドをrootで実行しました。/media/usb が USB のマウント先、/dev/sda がUSBメモリのデバイスです。環境によってデバイス名は異なるので、環境に合わせて読み替えてください。(読み替えないと最悪起動しなるので注意)

# grub-install --no-floppy --root-directory=/media/usb /dev/sdb

すると、USBメモリに、/boot/grub ディレクトリや各種必要なファイルが作られます。

次に、Fedora 16 Live Desktop の isoイメージ (Fedora-16-i686-Live-Desktop.iso) を USB メモリにコピーします。今回は、/boot/grub/iso にコピーしました。

さらに、/boot/grub/grub.cfg を以下のように記述することで、ある程度までUSB起動できるようになりますが、起動中に rootファイルシステムが見つからないとdracut がエラーを出して止まります。

menuentry "fedora-16-i686-live-desktop.iso" {
loopback loop /boot/iso/fedora-16-i686-live-desktop.iso
linux (loop)/EFI/boot/vmlinuz0 root=live:/boot/iso/fedora-16-i686-live-desktop.iso rootfstype=auto ro liveimg rhgb rd.luks=0 rd.md=0 rd.dm=0
initrd (loop)/EFI/boot/initrd0.img
}

そこでパッチの登場です。isoイメージ内の /EFI/boot/initrd0.img にこのパッチを当てます。と一言で書いても、これが、initrd0.img ファイル抜き出して、イメージ展開、再度イメージ化して・・・と面倒です。なので、mazn が作ったものをアップロード(fedora16_new_initrd0.img)しておきますので、/boot/iso に一緒に置いてください。(x86_64では動かないかも・・)
※ initrd に自分でパッチを当てる場合は、当てた後に/sbin/liveiso-find というファイルが作れるのですが、デフォルトだとパーミッションがおかしいので、-rwxr-xr-x に変更してあげる必要があります。initrdの編集の仕方はこちらを参考にしてください。

そして、grub.cfg の設定を以下のように変更します。

menuentry "fedora-16-i686-live-desktop.iso" {
loopback loop /boot/iso/fedora-16-i686-live-desktop.iso
linux (loop)/EFI/boot/vmlinuz0 root=live:/boot/iso/fedora-16-i686-live-desktop.iso rootfstype=auto ro liveimg rhgb rd.luks=0 rd.md=0 rd.dm=0
initrd /boot/iso/fedora16_new_initrd0.img
}

これで、起動できるようになります。お疲れ様でした。

ちなみに、Ubuntuの場合は、iso を同じ場所に置いて、grub.cfg に以下を追記してあげるだけで iso から起動可能です。

menuentry "ubuntu-11.10-desktop-i386.iso" {
set root=(hd0,1)
loopback loop /boot/iso/ubuntu-11.10-desktop-i386.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/boot/iso/ubuntu-11.10-desktop-i386.iso noeject noprompt --
initrd (loop)/casper/initrd.lz
}

 

最後に、VMware で起動確認する場合は、USBブートできないので、PLoP を使うと便利です。PLoPは、USBブートに対応していないPCを、CDから起動し、USBに処理を渡すことができます。

 

タイトルとURLをコピーしました