UbuntuでカスタムライブUSBを作る

起動後に直ぐサーバ(SSH/NFS/SMB/WEB 等)が使えるUbuntuのカスタム化したライブUSBを作成した。

UbuntuではライブCDからUbuntu Desktop版を起動すると[System]⇒[Administration]メニューの中に[Create a USB startup disk](たぶん日本語では“USB起動ディスクを作成”)を選択するとライブCDの内容をコピーしたライブUSBディスクを簡単に作れる。USBの容量も大きくなって今では2GBでも1,000円以下で買えるので、Linuxの起動にもお釣りが来る。

UbuntuでカスタムライブDVDを作る”ではオリジナルのライブCDを元に追加で色々なパッケージをインストール済みとして、ブート直後からSSH等のサーバが使えるライブDVDの作成方法を考えてみた。このライブDVDを使ってUbuntuを起動し、上の方法でUSBディスクを作成すると、作られたUSBディスクもソフトがテンコ盛りで、サーバ・レディーなライブUSBになる。

ここではDVDを一々焼いて、ライブDVDから立ち上げたPCで作るのではなく、DVDの元となるファイルから直接、カスタムUSBを作る方法を考えてみた。カスタム化したライブ環境を構築する際に、実際にDVDに焼かなくても何回も実験できるので重宝する。(最初はDVDに焼いて試験していたがDVDを5枚程無駄使いしてしまった。)

3つのステップでOK。

1. 通常通りライブCDを使ってUSBディスクを作成する
2. そのUSBディスクをUbuntu PCに挿してマウントする
3. mkuusbというシェルスクリプトでUSBディスクをカスタム化する

なお、ここでUbuntuのPCが必要となるが、これは“UbuntuでカスタムライブDVDを作る”で使ったPCを使う。つまりカスタムライブDVDの作成環境をそのまま使う。

USBディスクを作成する

通常通り、ライブCDで立ち上げたPCを使って、上の方法でオリジナルのUSBディスクを作成する。作成したら、ちゃんとUSBからUbuntuを起動できるか確認する。

Ubuntu PCでUSBディスクをマウントする

厳密に言えばOSがUbuntuである必要はないが、“UbuntuでカスタムライブDVDを作る”で使ったPCにUSBメモリを挿し、/livedvd/usbというディレクトリにマウントする。

% sudo -s
# mkdir /livedvd/usb
# mount /dev/sd?1 /livedvd/usb -t vfat

mkuusbというシェルスクリプトを使う

後ろに載せてあるmkuusb ( Make Ubuntu USB)というプログラムを /livedvd にコピー&ペーストして実行する。このプログラムは“UbuntuでカスタムライブDVDを作る”の環境をそのまま使うので、先ずはこれを用意する必要があるが。

以上で出来上がり。

仮想環境では

UbuntuでカスタムライブDVDを作る”でも紹介したが、実際には仮想マシンを使ってDVDを作成した。今回もその仮想マシンでUSBを作成したが、どの様に仮想マシンにUSBを接続するか、がポイント。VMware等の仮想システムでは仮想マシンから直接物理的なUSBデバイスに接続できる、が、折角仮想環境を使っているのであれば仮想USBディスクに対して操作しした方がいい。なぜなら、USBメモリは小さなファイルを書き込むとファイルの数以上に何回も書込みが発生して寿命が大幅に短くなる。そこで、仮想USBディスクであればこの様な物理的な制限はなくなるので、先ず仮想USBを使って作成して、最終的に仮想USBのイメージを丸ごと一気に物理USBメモリに書き込む。

上の例では、いったんオリジナルライブCDで作成したオリジナルUSBをPCに挿し、次のようにしてUSBディスクのイメージファイルを作成する。

# dd if=/dev/sd? of=usb.vmdk bs=2002780160

ここでブロックサイズの“2002780160”はUSBメモリの実際の総容量である。(私のPCはメモリが8GBあるので2GB程度ではページングは起きない。もし、主記憶が少ないPCで作業するのであれば、ページングが起きないようにブロックサイズを調整する必要がある。)なお、ddで吸い上げたUSBのイメージファイルをVMwareの仮想ディスクへ変換する方法は“VMwareの仮想ディスクをLinuxでマウントして使う”を参照。
この“usb.vmdk”を仮想マシンで使って作業し、最終的に出来上がったUSBディスクのイメージを一気に書き出す。

# dd if=usb.vmdk of=/dev/sd? bs=2002780160

こうすることで直接USBメモリに対して読み書きして作業するよりも、特に書込みが多い場合は、作業時間も短縮できるし、USBの寿命も不用意に短くならない。

以前、Fedoraを仮想USBを使わずに直接物理USBメモリにインストールしたことがあったが、インストールに丸1日近くかかるは、しかもインストールでかなり寿命を短くしたおかげで、数回ブートしたらUSBメモリがダメになるは、サンザンだった。(“LinuxをUSBメモリにインストールする”参照)
もし、仮想USBディスクを使えば数十分で終わる作業なのに。