LinuxのLive CDイメージからLive USBを手動で作成する

こんにちは。今回のテーマは『LinuxのLive CDイメージからLive USBを手動で作成する』です。Live CDをUSBメモリにコピーしてブート可能なUSBメモリを持っておくとインストールの度にディスクが増えることもなく、とても便利です。ブートUSBを作成するツールとしてはUnetbootin等の便利なツールがあります。しかし、全自動の便利なツールに慣れていると不具合が起きたときにマニュアルでの対処が難しいものです。今回はLive CD/DVDから起動可能なブートUSBメモリを手動で作成します。尚、今回作成するUSBメモリはBIOSシステムでの起動を想定しており、UEFI起動は想定していません。


【目次】
USBメモリの準備
Live DVDの内容をコピーする
Syslinuxのインストール
syslinux.cfgの作成
起動テスト

USBメモリの準備

パーティションの作成

今回はfdiskを使用して作業を行っていきます。

# fdisk /dev/sdb
以下はfdiskでの操作です
o #パーティションテーブルを作成
n #パーティションを作成
a #起動フラグを付ける

注意としては起動フラグを付け忘れないようにしてください。
設定後のパーティションは以下の図の用になっています。
02

FAT32へのフォーマット

今回は基本パーティションをひとつだけ作りました。デバイス名はsdb1として認識されています。以下ではsdb1として進めますが、お使いの環境に合わせて変更して下さい。
以下コマンドでsdb1をFAT32にフォーマットします。

root# mkfs.vfat -F 32 /dev/sdb1

起動フラグの設定

ブートパーティションをアクティブにするためにfdiskを用いて起動(bootable)フラグをアクティブにします。

# fdisk /dev/sdb
a  (起動フラグを付ける)

MBRのインストール

mbr.binをUSBメモリにインストールします。ディストリビューションによってコマンドが異なると思いますのでご注意下さい。今回はArch Linuxで作業しました。ddを用いるので汎用性が高いと思います。

# dd bs=440 count=1 conv=notrunc if=/usr/lib/syslinux/bios/mbr.bin \
  of=/dev/sdb

この時sdb1ではないことに注意して下さい。

尚、Debian系ディストロにはinstall-mbrコマンドがあります。詳細はコチラをご覧ください。

Live DVDの内容をコピーする

isoファイルのマウント

ブートしたいディストリビューションのLive DVDのisoファイルを用意します。今回はUbuntu 14.04の32bit版を例として用います。以下のコマンドでマウントします。

root# mkdir -p /media/cdr
root# mount -o loop /<ISOファイルのパス> /media/cdr

これで/media/cdrにUbuntuのLive DVDがマウントされました。マウント場所は/media/cdrである必要はありません。/mnt以下などのお好みのマウントポイントをお使い下さい。

Live DVDのコピー

次にUSBメモリのsdb1パーティションにLive DVD(今回はUbuntu 14.04)の内容をコピーしていきます。まずはsdb1を任意の場所にマウントします。

root# mkdir -pv /media/usb
root# mount /dev/sdb1 /media/usb

次に先ほどマウントしたLive DVDの内容をコピーしていきます。

root# cp -a /media/cdr/. /media/usb

cpのオプション-aとコピーする側の末尾に/.が付くことに注意して下さい。

Syslinuxのインストール

多くのサイト等ではこの後にUSBディレクトリ中のisolinuxをsyslinuxに名称変更し、isolinux.cfgもsyslinux.cfgに名称を変更する方法が記載されています。この方法でも上手くいく場合もありますが、メニューの表示が上手く行かない等の不具合もあり、今回はSyslinuxをインストールする方針とします。

まずは/media/usbに移動しsyslinuxディレクトリを作成します。

root# cd /media/usb
root# mkdir -p syslinux

次にsyslinuxをインストールしていきます。

root# cp /usr/lib/syslinux/bios/*.c32 syslinux
root# extlinux --install syslinux

syslinux.cfgの作成

さて、いよいよ大詰めです。先ほど作成したsyslinuxディレクトリ中にsyslinux.cfgを作成します。この情報に基づきOSがブートされるので非常に重要なファイルです。

root# cd /media/usb/syslinux
root# vim syslinux.cfg

syslinux.cfgは元のディスクのisolinuxディレクトリ中の.cfgファイルが参考になります。起動オプションを誤るとカーネルパニックを起こしたりinitramfsのまま進まずOSの起動が出来なかったりということが起こりますのでご注意下さい。

syslinux.cfgの作成例(Ubuntu 14.04の場合)

default menu.c32
prompt 0
menu title Ubuntu 14.04
timeout 100

label ubuntu01
menu label Try Ubuntu without installing
kernel /casper/vmlinuz
append initrd=/casper/initrd.lz file=/cdrom/preseed/ubuntu.seed boot=casper  quiet splash --

label ubuntu02
menu label Install Ubuntu
kernel /casper/vmlinuz
append initrd=/casper/initrd.lz file=/cdrom/preseed/ubuntu.seed boot=casper only-ubiquity  quiet splash --

起動テスト

これで起動可能なLive USBが作成されました。USBメモリをアンマウントして起動してみましょう。

root# umount /media/usb

起動時にはこのようなメニューが出てきます
01

最後に

UnetbootinやLinux Live USB Creator等の便利なツールがあるのに、わざわざ手動で起動USBメモリなど作るのかと思われる方も多いと思います。そもそもはUnetbootinの不具合で上手く起動できずに、手動で調整をしたのがきっかけでした。この記事が何かのお役に立てば幸いです。
【関連記事】
Linuxで読み込んだUSBメモリが文字化けした時の対処方法
VirturalBoxでUSBデバイスを使用する

Sponsored Link


コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です