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
- 第112回 Bansheeを使用して携帯音楽プレーヤと同期する
- 第111回 UbuntuからHDDレコーダを使いこなす(2)動画ファイルのダウンロード
- 第110回 HYBRID W-ZERO3を使いこなす(2)
- 第109回 HDDレコーダを使いこなす(1)DLNAクライアント
- 第108回 HYBRID W-ZERO3を使いこなす(1)
- 第107回 HandBrakeでリッピングしたDVDをNetWalkerで再生する
- 第106回 PulseAudioでリモートスピーカを使う
- 第105回 Acer Aspire Timeline 1410でUbuntu 9.10を動かす
- 第104回 標準搭載予定のPiTiViでビデオ編集
- 第103回 Deja Dupで簡単バックアップ
- 2009年11月6日号 9.10 Japanese Remix・Ubuntu Open Week・10.04の開発開始・FCM#30・UWN#166・Firefoxのセキュリティアップデート
- 2009年11月4日 Ubuntu 9.10/Ubuntu 9.04/Windows Vista/Windows 7,いちばん速いのはどれ?
- 2009年10月23日号 9.10のRC・UWN#164・今週のセキュリティアップデート
- 2009年10月16日号 9.10のリリースフリーズ・UECのテストとアプライアンスイメージ・Japanese Remixの配布方法・UWN#163・Ubuntu Open Week
- 2009年10月9日号 9.10のI/Oスケジューラ・Ubuntu Oneの有償プラン・Full Circle Magazine#29・UWN#162・GLibのセキュリティアップデート


