Ubuntu Weekly Recipe
第3回 Desktop CDを使いこなす(2):より高度なLiveCDのカスタマイズ
前回に引き続き,Ubuntuのデスクトップ向けインストールCD(Desktop CD)を用いて,オリジナルのLiveCDを作成するレシピを紹介します。
端末からのDesktop CDのカスタマイズ
UbuntuのDesktop CD(=LiveCD)には,RemastersysやUCKのような容易にカスタマイズを行う補助ツールが用意されています。今回はこれらのツールが内部で行っている,SquashFSの展開を始めとする操作をコマンドラインから行い,より細かな部分までカスタマイズする方法を紹介します。
カスタマイズの準備
前回も触れましたが,Desktop CDのLiveCD環境のカスタマイズは,SquashFS形式で圧縮されたルートファイルシステムである casper/filesystem.squashfs を改変することで行います。作業に必要な環境はRemastersys,UCKと同様に,5~10GBのディスク容量とある程度の搭載メモリです。手順を順番に見ていきましょう。
作業にはsquashfs-toolsとmkisofsパッケージが必要になりますので,インストールを行います。ここではapt-getを用いてインストールしていますが,Synapticなどからインストールしても構いません。
$ sudo apt-get install squashfs-tools mkisofs
補助ツールを用いる場合と同じく,コマンドラインからDesktop CDをカスタマイズする場合も既存のISOを改変することで行うのが普通です。http://cdimage.ubuntulinux.jp/releases/7.10/ubuntu-ja-7.10-desktop-i386.isoなどからベースとなるISOイメージをダウンロードしてください。ISOイメージがダウンロードできたら,作業ディレクトリとマウントポイントを作成してループバックマウントします(CDを光学ドライブに挿入して作業を行うことも可能です。この場合は~/livecd-work/mntを/media/cdromに読み替えてください)。
$ cd ~ $ wget http://cdimage.ubuntulinux.jp/releases/7.10/ubuntu-ja-7.10-desktop-i386.iso $ mkdir -p ~/livecd-work/mnt $ sudo mount -o loop ubuntu-ja-7.10-desktop-i386.iso ~/livecd-work/mnt $ cd ~/livecd-work
SOイメージをマウントしたら,filesystem.squashfs以外のファイルを編集用にコピーします。
$ mkdir extract-cd $ rsync --exclude=/casper/filesystem.squashfs -a livecd-work/ extract-cd
casper/filesystem.squashfsを作業用ディレクトリに展開します。~/livecd-work/squashfs以下にLiveCD環境で利用するルートファイルシステムが作成されます。
$ sudo unsquashfs -d edit mnt/casper/filesystem.squashfs
編集を始める前に,このルートファイルシステムの構造を確認しましょう。以下は該当ディレクトリでlsを発行した結果です。
$ ls -F ~/livecd-work/extract-cd bin/ boot/ dev/ etc/ home/ initrd/ initrd.img@ lib/ media/ mnt/ opt/ proc/ root/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz@
この中身は通常の(HDDにインストールした)Ubuntuのファイルシステムそのものです。Remastersysが既存のファイルシステムをSquashFSに圧縮することでLiveCDが構成できるのは,これが理由です。ただし,後の手順でも触れますが,LiveCD環境ではinitrd.imgとvmlinuzはここにあるファイルではなくISOイメージのcapser/以下にあるものが使われるため,別途作業を行う必要があります。
chrootによる作業・再圧縮
カスタマイズの準備が終了したら,展開したルートファイルシステムにchrootし,LiveCD環境を展開した~/livecd-work/extract-cdを/として作業を行います。
chrootする前に,(通常のLiveCD起動では起動時にスクリプトやDHCPクライアントによって生成される)/etc/resolv.confをコピーする必要があります。もしもお使いの環境で/etc/hostsを利用しているのであれば,それもコピーしてください。
$ cd ~/livecd-work $ sudo cp /etc/resolv.conf edit/etc/ $ sudo cp /etc/hosts edit/etc/
準備ができたらchrootを行います。chrootの実行時点で環境変数による影響を受けないように,su -でrootユーザの標準環境を読み込んでおきます。また,ほとんどいないと思いますが,rootユーザのSHELLをbash以外に変更している場合は,/bin/bashに戻しておく必要があります(正確にはUCKなどと同じように,「LiveCD環境に用意されていないシェルをセットしている」場合にこの作業が必要になります)。
$ sudo su - # chroot edit
このままでは作業に支障があるため,proc,sys,devpts fsをマウントします。
# mount -t proc none /proc # mount -t sysfs none /sys # mount -t devpts none /dev/pts
この状態でapt-getなどのパッケージ操作コマンドを実行することで,パッケージの導入が行えます。たとえば次のように,"trac"パッケージをインストールすることで,~/livecd-work/editに展開されたルートファイルシステム上に適用されます。同様に,/etc/skel/以下など,あらゆるファイルは~/livecd-work/edit以下のものです(この例の場合であれば,~/livecd-work/edit/etc/skelに変更を加えたことになります)。
Ubuntu Weekly Recipe
- 第107回 HandBrakeでリッピングしたDVDをNetWalkerで再生する
- 第106回 PulseAudioでリモートスピーカを使う
- 第105回 Acer Aspire Timeline 1410でUbuntu 9.10を動かす
- 第104回 標準搭載予定のPiTiViでビデオ編集
- 第103回 Deja Dupで簡単バックアップ
- 第102回 ImageMagickでコマンドラインから画像加工
- 第101回 玄柴(KURO-SHEEVA)ファーストインプレッション
- 第100回 Ubuntuを中心とした情報環境の紹介
- 第99回 uimを使用する
- 第98回 FreeNXでリモート・デスクトップ環境を実現する
- 2009年10月9日号 9.10のI/Oスケジューラ・Ubuntu Oneの有償プラン・Full Circle Magazine#29・UWN#162・GLibのセキュリティアップデート
- 2009年9月25日号 Ubuntu 10.04 LTS “Lucid Lynx”・Hundred Paper cuts round 7~8・Ubuntu Magazine Japan・UWN#160
- 2009年9月10日号 9.10の新機能(『ほぼ』確定版)その2・Ubuntu Oneのサイト変更・UNRのUI完成・UWN#158
- 2009年8月28日号 NetWalker PC-Z1,9.10のFeature Freeze・Encrypted swapのサポート・単位系の統一・UWN#156・Chromiumのx64サポート
- 「Ubuntu オフラインミーティング Tokyo 9.08」動画レポート


