LinuxをUSBメモリへインストールする

Linuxを自分のPCでちょっと試してみたいが、HDDへインストールするほどではない。そうした場合、外付けのUSBメモリLinuxをインストールする(Live USB)という手段があります。

Live USB - Wikipedia

ただし、インストール自体は簡単なのですが、USBメモリが4GBより大きい場合、その全容量をLinuxから利用可能にするためには少し対策が必要です。以下、それについてまとめます。

一般的なインストール方法

USBメモリへのLinuxのインストール自体は、専用のインストーラ(Universal USB Installerなど)を使えばとても簡単です。こちらの動画(英語)が参考になると思います。

Linuxを起動後、その上でユーザが行った変更(ファイルの変更/追加など)は、同じUSBメモリ上の所定の領域(Persistent storage)へ保存されます。通常、Persistent storageの実体は1個のファイル(Persistent file)で、インストーラによってLinux本体と同じパーティション(FAT32)にcasper-rwという名前で配置されます。そのサイズは、上の動画の手順では "Step 4: Set a Persistent file size for storing changes (Optional)." で指定しています。

問題点

上記のインストール方法の場合、FAT32の仕様上、Persistent storageのサイズは最大で4GBまでになります。もし4GBを超えるPersistent storageが必要であれば、その実体として FAT32ファイル以外の何か を割り当てる必要があります。

USBメモリの全領域を利用可能にする

Persistent storageの実体として、ファイルではなくパーティションを専用に用意して割り当てます。一般にパーティションサイズの上限はTBオーダー以上なので、USBメモリ容量の許す限りの領域をPersistent storageとして割り当てることができます。

USBメモリ上にパーティションを作成

まずUSBメモリ上にパーティションを作成しますが、その際、Linuxインストール用のパーティションに加えてPersistent storage用のパーティションを作成します。Persistent storage用パーティションファイルシステムext2/ext3/ext4のいずれか、ラベルはcasper-rwとしますパーティションの作成方法はいろいろありますが、お好みの方法でOKです。

私の場合、Windows上で下記のツールを使って作成しました。ext4をサポートしているのでお勧めです。
Free Partition Manager for Window PC | MiniTool Partition Wizard Home Edition

第1パーティション (Linuxインストール用)

項目
Partition Label (なし)
Create As Primary
File System FAT32
Partition Size 2048 MB (Linuxのインストールに十分なサイズ)

第2パーティション (Persistent storage用)

項目
Partition Label casper-rw
Create As Primary
File System Ext4 (Ext2/Ext3でも可)
Partition Size (USBメモリの残り容量全て)

Linuxをインストール

Windows上で、Universal USB Installerを使用してUSBメモリ(の第1パーティション)へLinuxをインストールします。

Universal USB Installer – Easy as 1 2 3 | USB Pen Drive Linux

その際、Persistent fileのサイズは0に設定します。Persistent storageとして上で作成したUSBメモリの第2パーティションを割り当てるため、Persistent fileは不要になるからです。

なお、この時点でUSBメモリ上にパーティションは2個ありますが、Windowsは先頭のパーティションしか認識しないので、認識されたドライブが第1パーティションです。

Universal USB Installerは、インストール先の選択肢としてデフォルトではリムーバブルドライブのみを表示し、ローカルドライブは表示しません。一方、USBメモリ製品によってはリムーバブルドライブではなくローカルドライブとして認識されるものがあります。
その場合、"Now Showing All Drives (BE CAREFUL)" にチェックを入れることで、ローカルドライブを含む全ドライブを表示させることができます。 (なおLinuxインストーラの定番としてUNetbootinもありますが、こちらは上記のようなUSBメモリを認識しないようです。)
注意: 意図しないドライブをインストール先として選択しないようにしてください。誤ったドライブ(内蔵HDDなど)を選択してインストールを実行すると、システムやデータが破壊されるおそれがあります。

パーティションをPersistent storageとして割り当てる

USBメモリの第2パーティションをPersistent storageとして割り当てるには、Linuxのブートオプションに persistent を追加します。このオプションが指定されると、Linuxは起動時にcasper-rwという名前のパーティションを探し、それをPersistent storageとして割り当てます。persistentオプションの詳細についてはこちらを参照してください。

Ubuntu Manpage: casper - a hook for initramfs-tools to boot live systems.

ブートオプションは、Universal USB Installer環境では isolinux\txt.cfg で設定できます。Windows上でファイルをテキストエディタで開き、既存のエントリへ次のようにオプションを追加します。

label live
  menu label ^Try Ubuntu without installing
  kernel /casper/vmlinuz
  append  file=/cdrom/preseed/ubuntu.seed boot=casper persistent cdrom-detect/try-usb=true noprompt floppy.allowed_drive_mask=0 ignore_uuid initrd=/casper/initrd.lz quiet splash --

以上で準備完了です。PCを再起動してUSBから起動します。ブートメニューが表示されるので、デフォルトの "Try Ubuntu without installing" を選択すればLinuxが起動します。最初はデフォルトのユーザubuntuで自動ログインされるので、適宜ユーザを追加してログインし直すなどしてください。後は通常のLinuxと同様です。

なお、Windows 8以降がプリインストールされたPCでUSBメモリからLinuxを起動する場合、BIOS(正確にはUEFI)の設定も必要です。それについてはまた別にまとめようと思います。

参考サイト

第2回 Desktop CDを使いこなす(1):USBメモリとの併用・LiveCDのカスタマイズ:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

Ubuntu日本語フォーラム / ubuntu LiveCDで設定の保存はできない?

LiveCD/Persistence - Community Help Wiki

マルチUSBブートに挑戦(2): とある暇人の飛耳長目