Ubuntu Weekly Recipe

第3回 Desktop CDを使いこなす(2):より高度なLiveCDのカスタマイズ

この記事を読むのに必要な時間:およそ 5 分

操作は通常のUbuntuに対して端末から行う作業と同様ですが,次の点に注意する必要があります。

ログインユーザ・ホスト名・パスワードの変更

デフォルトのLiveCD環境ではユーザ"ubuntu"が利用されます。これらは/usr/share/initramfs-tools/scripts/casper-bottom/にあるスクリプトで設定されており(ユーザの設定は10adduser⁠⁠,/etc/casper.confに任意の値をセットすることで変更します。パスワードの変更を行う場合,10adduser内で決め打ちされているため,これを変更します。10adduser内ではソルトされたパスワードが必要なため,mkpasswdで得られるものをセットします。

これらはすべて,initramfsを更新しなければ有効になりません。変更後,必ずupdate-initramfsでinitrdファイルを更新してください。コマンドは次の通りです。

# mkinitramfs -o /initrd.gz `uname -r`
“Persistence”機能に使うパーティションの指定

/usr/share/initramfs-tools/scripts/casperを編集してください。変更後,update-initramfsが必要です。

編集に利用している環境とのネットワークポートの競合

chrootはあくまでファイルシステムレベルでの変更を行うだけです。このため,作業環境(chrootを実行する前の環境)で既に使用しているネットワークポートを利用することはできません。たとえば,編集に利用するシステム上でapache2(=TCP:22)を起動させている場合,chroot環境ではapache2を起動することができません。chroot環境でlsof -iを実行すると,作業環境で起動している各種daemonが待ち受けていることを確認できるはずです。

このような場合,chroot環境で起動したdaemonの動作をテストする前に,作業環境で該当daemonを停止させておく必要があります。

Apache(apache2)のインストール

LiveCD向けにapache2パッケージを導入する場合,LiveCD環境ではsendfile()を利用できないため,/etc/apache2/sites-available/defaultなどのサイト設定において,EnableSendfile Offを宣言する必要があります。

なお,6.10以前のchroot環境に導入したapache2は,起動時に/etc/init.d/apache2から読み込まれる設定ファイル/etc/default/apache2上でDO_NOT_START変数をセットしていたため,これも変更する必要があります。

一部のパッケージのメンテナスクリプトの実行失敗への対処

一部のパッケージでは,chroot環境ではapt-get installやdpkg -i時に実行されるメンテナスクリプトの実行に失敗する場合があります。このような場合は/etc/init.d/<パッケージ名>にあるスクリプトを確認し,適宜対処を行う必要があります。

xorg.confの変更

LiveCD環境では,/etc/X11/xorg.confファイルは起動時に毎回生成されています。このため,何らかの理由でxorg.confを変更したい場合(たとえば,正常に動作しないS3系VGAドライバを利用せず,強制的にvesaドライバで動作させたい場合)は生成スクリプトである/usr/bin/dexconfを変更する必要があります。

不要なパッケージキャッシュの削除

apt-getなどでパッケージを入手した場合,インストール後もパッケージの残骸が残ります。容量肥大の原因になりますので,apt-get cleanを実行して削除してください。

SquashFSとManifestファイルの作成

編集が終わったら,SquashFSを作成し,マスタリングの準備を行います。

chroot環境でマウントしたproc,sys,devpts fsをアンマウントし,exitします。アンマウントを忘れてexitした場合は/を~/livecd-work/に読み替えてアンマウントしてください。

# umount /proc
# umount /sys
# umount /dev/pts

chroot環境から脱出した後,不要ファイルを削除します。

$ sudo rm ~/livecd-work/edit/etc/resolv.conf
$ sudo rm ~/livecd-work/edit/etc/hosts
$ sudo rm -rf ~/livecd-work/edit/tmp/*
$ sudo rm -rf ~/livecd-work/edit/tmp/.*
$ sudo rm -rf ~/livecd-work/root/*
$ sudo rm -rf ~/livecd-work/root/.*

manifestファイルを再作成します。このファイルはCDに導入されたパッケージの一覧です。

$ cd ~/livecd-work/
$ chmod +w extract-cd/casper/filesystem.manifest
$ sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
$ sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
$ sudo sed -ie '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop

SquashFSを生成します。

$ sudo mksquashfs edit extract-cd/casper/filesystem.squashfs

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。