LinuxのLive CDイメージからLive USBを手動で作成する
2016-02-26
2016-02-27
こんにちは。今回のテーマは『LinuxのLive CDイメージからLive USBを手動で作成する』です。Live CDをUSBメモリにコピーしてブート可能なUSBメモリを持っておくとインストールの度にディスクが増えることもなく、とても便利です。ブートUSBを作成するツールとしてはUnetbootin等の便利なツールがあります。しかし、全自動の便利なツールに慣れていると不具合が起きたときにマニュアルでの対処が難しいものです。今回はLive CD/DVDから起動可能なブートUSBメモリを手動で作成します。尚、今回作成するUSBメモリはBIOSシステムでの起動を想定しており、UEFI起動は想定していません。 [adsense02] 【目次】 USBメモリの準備 Live DVDの内容をコピーする Syslinuxのインストール syslinux.cfgの作成 起動テスト
USBメモリの準備
パーティションの作成
今回はfdiskを使用して作業を行っていきます。
# fdisk /dev/sdb
以下はfdiskでの操作です o #パーティションテーブルを作成 n #パーティションを作成 a #起動フラグを付ける
注意としては起動フラグを付け忘れないようにしてください。 設定後のパーティションは以下の図の用になっています。
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
最後に
UnetbootinやLinux Live USB Creator等の便利なツールがあるのに、わざわざ手動で起動USBメモリなど作るのかと思われる方も多いと思います。そもそもはUnetbootinの不具合で上手く起動できずに、手動で調整をしたのがきっかけでした。この記事が何かのお役に立てば幸いです。 【関連記事】 Linuxで読み込んだUSBメモリが文字化けした時の対処方法 VirturalBoxでUSBデバイスを使用する [adsense]