前回に引き続き、
端末からのDesktop CDのカスタマイズ
UbuntuのDesktop CD
カスタマイズの準備
前回も触れましたが、
作業にはsquashfs-toolsとmkisofsパッケージが必要になりますので、
$ sudo apt-get install squashfs-tools mkisofs
補助ツールを用いる場合と同じく、
$ 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イメージをマウントしたら、
$ mkdir extract-cd $ rsync --exclude=/casper/filesystem.squashfs -a livecd-work/ extract-cd
casper/
$ sudo unsquashfs -d edit mnt/casper/filesystem.squashfs
編集を始める前に、
$ 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@
この中身は通常の
chrootによる作業・再圧縮
カスタマイズの準備が終了したら、
chrootする前に、
$ cd ~/livecd-work $ sudo cp /etc/resolv.conf edit/etc/ $ sudo cp /etc/hosts edit/etc/
準備ができたらchrootを行います。chrootの実行時点で環境変数による影響を受けないように、
$ sudo su - # chroot edit
このままでは作業に支障があるため、
# mount -t proc none /proc # mount -t sysfs none /sys # mount -t devpts none /dev/pts
この状態でapt-getなどのパッケージ操作コマンドを実行することで、
操作は通常のUbuntuに対して端末から行う作業と同様ですが、
ログインユーザ・ホスト名・パスワードの変更
デフォルトのLiveCD環境ではユーザ"ubuntu"が利用されます。これらは/usr/
これらはすべて、
# mkinitramfs -o /initrd.gz `uname -r`
“Persistence”機能に使うパーティションの指定
/usr/
編集に利用している環境とのネットワークポートの競合
chrootはあくまでファイルシステムレベルでの変更を行うだけです。このため、
このような場合、
Apache(apache2)のインストール
LiveCD向けにapache2パッケージを導入する場合、
なお、
一部のパッケージのメンテナスクリプトの実行失敗への対処
一部のパッケージでは、
xorg.confの変更
LiveCD環境では、
不要なパッケージキャッシュの削除
apt-getなどでパッケージを入手した場合、
SquashFSとManifestファイルの作成
編集が終わったら、
chroot環境でマウントしたproc、
# 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
SquashFS以外のカスタマイズ
Desktop CDのSquashFS以外の領域を変更することで、
デフォルトで“Persistence”機能が有効になるLiveCD
前回触れた
LABEL live
menu label ^Start or install Ubuntu
kernel /casper/vmlinuz
append file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.gz quiet splash tz=Asia/Tokyo utc=no --
ただし、
その他の起動オプション
persistent以外にLiveCDに追加することを検討する価値があると考えられるオプションは、
- irqpoll:
all_generic_ ide: いずれも、
LiveCDの起動時に光学ドライブの検出方法を変更します。通常の起動ではinitrdが提供するbusybox shellに落ちてしまう場合に有効です。 - noapic:
APICの利用を行わず、
強制的にPICを利用させます。
通常の設定では動作せず、かつ、 irqpollやall_ generic_ ideも有効でない特定のハードウェア (おおむね2004年までに製造されたもの) で有効なことがあります。 - acpi=force:
何かの理由でACPIがサポートされていないと誤認されている環境で、
ACPIを強制的に有効にします。ACPIの有効化は通常は電源制御周りのアプローチの変更だけですが、 バグのあるBIOSやチップセットを利用している場合はPIC/ APICの動作を適正化するのに役に立ちます。
通常の設定では動作せず、かつ、 irqpollやall_ generic_ ideも有効でない特定のハードウェア (おおむね2004年までに製造されたものですが、 まれに最近のハードウェアにも存在します) で有効なことがあります。 - i8042.
noloop: (主にMicrosoft VirtualPCでのマウス動作を改善するために) AUXポートへのprobeを省略します。
CDのマスタリング
CDのマスタリングを行う前に、
$ sudo cp edit/vmlinuz extract-cd/casper/vmlinuz $ sudo cp edit/initrd.img extract-cd/casper/initrd.gz
メディアチェックに利用されるMD5ハッシュを更新します。
$ sudo /bin/sh -c "rm extract-cd/md5sum.txt" $ sudo /bin/sh -c "(cd extract-cd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt)"
ISOイメージを生成します。VolumeLabel部分はメディアに設定したいボリュームラベルに置き換えてください。
$ sudo mkisofs -r -V "VolumeLabel" -cache-inodes -J -l -b isolinux/isolinux.bin -c
以上でカスタマイズしたISOの生成は完了です。UCKやRemastersysも基本的には以上の手順とまったく同じことをしていますので、
また、
Desktop CDの今後
LiveCDとしてのDesktop CDの今後については、
- 「カスタマイズのテンプレートとなりうる、
ベースとなるLiveCDの構築を目指す」 “LiveCDCreator” - 「DVD-RWなどにおいて、
LiveCDとしての動作に加えて、 書き換え可能なUDF領域を用いて “Persistence” 機能を実現する」 Live CD - Write-as-you-go
その他、参考になるドキュメント
- “How to Customize the Ubuntu Desktop CD”
https://
help. ubuntu. com/ community/ LiveCDCustomization - “How-To: Customize your Ubuntu Live CD”
http://
www. debuntu. org/ how-to-customize-your-ubuntu-live-cd - Desktop CDにssh daemonを導入する
https://
help. ubuntu. com/ community/ RemoteConnectionUbuntuLiveCD - 既存のイメージ編集ではなく、
新規にイメージを作成する https:// help. ubuntu. com/ community/ LiveCDCustomizationFromScratch