Ubuntu Weekly Recipe

第114回 Debian Liveのlive-helperを使ってUbuntu Liveを作成する (2)

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

自作のdebパッケージをインストールするには

自作debパッケージをライブシステムにインストールするには,作成したdebパッケージをconfig/chroot_sources/ディレクトリに置き,lh_configの--packagesオプションにパッケージ名を指定します。

初期設定ではSecure Aptが有効になっているので,GPG署名をしていないdebパッケージはインストールできません。この場合,署名をしたパッケージに作り直すか,lh_configの--apt-secureオプションにdisableを指定してSecure Aptを無効にしてインストールします。

 $ lh_config --apt-secure disable

カーネルパッケージをインストールするには

カーネルパッケージのインストールは,--linux-packagesオプションにカーネル名,--linux-flavoursオプションに用途(フレーバー)を指定してインストールします。

 $ lh_config --linux-pakges "(カーネル名)" --linux-flavours "(フレーバー)"

PAEが有効なカーネル(linux-image-pae)をインストールするには次のようにします。

 $ lh_config --linux-pakges "linux-image" --linux-flavours "generic-pae"

kernel-packageのmake-kpkgを利用して作成した自作カーネルパッケージもインストールできます。インストールをするにはカーネルのdebパッケージをconfig/chroot_sources/ディレクトリに置き,--linux-packagesと--linux-flavoursオプションにカーネル名とフレーバーを指定します。Secure Aptの制限は自作debパッケージのインストールと同じですので参考にしてください。

キーリングを指定する

GPG鍵がキーリングパッケージの形で配布されている場合は,使用するキーリングパッケージを指定できます。

 $ lh_config --keyring-packages "キーリングパッケージ名 …"

Aptリポジトリの追加

Aptリポジトリを追加するには,Apt-lineを書いたファイルをconfig/chroot_sources/ディレクトリに置きます。 リストのファイル名には拡張子をつける必要があり,lh_chrootステージで使うリストには「.chroot⁠⁠,lh_binaryステージで使うリストには「.binary」とつけます。

追加したAptリポジトリからのパッケージインストールにGPG鍵が必要な場合は,GPG公開鍵のファイルも一緒に置きます。GPG公開鍵のファイルにも拡張子をつける必要があり,lh_chrootステージで利用するなら「.chroot.gpg⁠⁠,lh_binaryステージでは「.binary.gpg」とつけます。

Ubuntu Japanese Teamのリポジトリ追加を例に説明します。

config/chroot_sources/ディレクトリに入ります。

 $ cd config/chroot_sources/

wgetでUbuntu Japanese TeamのリポジトリリストとGPG鍵をダウンロードします。

 config/chroot_sources$ wget https://www.ubuntulinux.jp/sources.list.d/karmic.list
 config/chroot_sources$ wget https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg
 config/chroot_sources$ wget https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg

ダウンロードしたリポジトリリストとGPG公開鍵の拡張子を.chrootと.chroot.gpgに変更します。

 config/chroot_sources$ mv karmic.list karmic.list.chroot
 config/chroot_sources$ mv ubuntu-ja-archive-keyring.gpg ubuntu-ja-archive-keyring.chroot.gpg 
 config/chroot_sources$ mv ubuntu-jp-ppa-keyring.gpg ubuntu-jp-ppa-keyring.chroot.gpg 

これで--pacakgesオプションを使ってUbuntu Japanese Teamのパッケージがインストールできます。

ライブシステムにファイルを追加

ライブシステムの中にファイルを追加するには,config/chroot_local-includes/ディレクトリを/(ルート)にファイルを置きます。画像ファイルwallpaper.jpgを/usr/share/backgroundsに置きたい場合は次のようになります。

 $ mkdir -p config/chroot_local-includes/usr/share/backgrounds/
 $ cp wallpaper.jpg config/chroot_local-includes/usr/share/backgrounds/

ブートローダーとスプラッシュ画面の変更

ブートローダーにSyslinuxかGrub(1)を選択できます。UbuntuのインストールCDで使われているGfxbootはまだ対応していません。

 $ lh_config --bootloader "grub"

スプラッシュスクリーンはDebian用しか用意されていないので,差し替えるにはオプションでファイルを指定します。対応画像ファイルはSyslinuxは640x480ピクセル,256色,pngかjpeg形式,Grubは640x480ピクセル,14色,xpm.gz形式です。

 $ lh_config --grub-splash "config/binary_grub/splash.png"
 $ lh_config --syslinux-splash "config/binary_syslinux/splash.png"

LXDEを使った軽量デスクトップの作成

一通り設定を解説したところで,実際に使えるライブシステムを作成してみましょう。最近はLXDEを使った軽量デスクトップ環境が流行っているそうなので,LXDEを使った300MBほどのミニライブCDを作成します。もちろんハードディスクにインストールもできます。

ライブシステム作成を自動化する

lh_configの設定項目は多く,ビルドやクリーンアップのためにいちいちsudoをつけてコマンドを実行するのはとても面倒です。live-helperには自動化のための仕組みが用意されているので,作成の前にmakeと入力するだけでライブシステムの構築ができるようにしましょう。

自動化は,lh_config,lh_build,lh_cleanコマンド実行時,scriptsディレクトリにconfig,build,cleanという名前のスクリプトがあると,自動的に呼び出され実行されるようになっています。これを利用し定番の設定をおこなうようにします。そしてlh_config,lh_build,lh_cleanコマンドはMakefileから実行するようにしましょう。

scripts/config

scripts/configにはモードやミラーサイトの設定などの基本設定を書きます。

#!/bin/sh

MIRROR_UBUNTU="http://jp.archive.ubuntu.com/ubuntu/"
MIRROR_SECURITY="http://security.ubuntu.com/ubuntu/"

lh_config noautoconfig \
        --mode ubuntu \
        --distribution karmic \
        --language ja \
        --mirror-binary ${MIRROR_UBUNTU} \
        --mirror-binary-security ${MIRROR_SECURITY} \
        --mirror-bootstrap ${MIRROR_UBUNTU} \
        --mirror-chroot ${MIRROR_UBUNTU} \
        --mirror-chroot-security ${MIRROR_SECURITY} \
        --categories "main restricted universe multiverse" \
        ${@}
scripts/build

scripts/buildはビルドと同時にbinary.buildlogという名前で作業ログを記録するようにします。

#!/bin/sh

lh_build noautoconfig 2>&1 | tee binary.buildlog
scripts/clean

scripts/cleanはキャッシュファイルの削除と同時に不要な設定ファイルも削除するようにします。

#!/bin/sh

lh_clean noautoconfig --all ${@}

# Remove generated files
rm -f config/binary config/bootstrap config/chroot config/common config/source

# Remove empty directories in config tree
if ls config/*/ > /dev/null 2>&1
then
        rmdir --ignore-fail-on-non-empty config/*/
fi

if [ -d config ]
then
        rmdir --ignore-fail-on-non-empty config
fi

著者プロフィール

のがたじゅん

Debian JP Projectメンバー。普段は関西Debian勉強会やDebian Liveで活動中。いくやさんの紹介により今回ゲスト参加。