Ubuntu Weekly Recipe

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

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

前回に引き続き,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 Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。

コメント

コメントの記入