松本成司 Seiji Matsumoto (matsu AT johnen.shinshu-u.ac.jp)

このページはDebianライブシステムの構築のメモです。 Debian GNU/Linux stable (wheezy)上での作業を前提としています。

lenny用やsqueeze用の古いメモは、DebianLive/Build-HOWTO-for-the-Impatient-lennyDebianLive/Build-HOWTO-for-the-Impatient-squeezeをご覧ください。

詳しくは本家の説明 や live-build の manpage などを参考にしてください。 感想やお気づきの点があれば松本まで連絡をいただけると幸いです。

目次

必要なツールのインストール

# apt-get install live-build live-boot live-config apt-cacher-ng

live-bootとlive-configはライブシステム用のpackageで、ホストシステム(ビルド作業用マシン) には不要ですが、特に害もないのでインストールしておきます。 ライブ起動時のスクリプトがどうなっているのか調べるときに便利です。

また apt-cacher-ng はプロキシソフトで、複数回ビルドするときには(通常1回では済まない)あると便利です。イメージをテストしたり、CDやDVDにイメージを焼くためにはさらに、qemuなどもインストールしておきましょう。

# apt-get install qemu wodim

lb config で設定

まず作業ディレクトリを用意してそこに移動します。 以下の例では debian-live というディレクトリ名になっていますが、何でもかまいません。 700MBくらいのイメージを作成する場合には、最低でも 4GB くらいの空き容量が必要です。 (ハードディスクの代わりにramdiskを使えばかなり高速にビルドできます)

$ mkdir debian-live
$ cd debian-live

このディレクトリで必要な設定を行っていきます。 といっても実際には、

$ lb config && sudo lb build

でイメージができあがってしまいます。基本的には lb config で設定、 lb build でビルドするだけです(ビルドは管理者権限で)。ただ、デフォルトのままだと日本語パッケージが入りません。以下の例では、日本のミラーサイトを使い、日本語の標準的なデスクトップ環境に加え、nqc と g++ を追加してUSBメモリ用のイメージを作る例を示します。

lb config を実行する際には同時に複数のオプションを指定することができますが、以下では説明をわかりやすくするため一つの設定(一つのオプション)に対して lb config を一回ずつ走らせています。(ただし同じオプションを再度指定すると前の設定が上書きされるの注意)

まずプロキシの設定。プロキシを使わない場合は不要です。

$ lb config --apt-http-proxy "http://localhost:3142"

次にdebファイルをダウンロードするミラーサイトの設定。以下の ftp.jp.debian.org をお近くのミラーサイトに置き換えてください。指定しなければ、自動的に http://ftp.debian.org/debian/ になります。

$ lb config --parent-mirror-bootstrap "http://ftp.jp.debian.org/debian/"
$ lb config --parent-mirror-binary "http://ftp.jp.debian.org/debian/"
$ lb config --mirror-bootstrap "http://ftp.jp.debian.org/debian/"
$ lb config --mirror-binary "http://ftp.jp.debian.org/debian/"
$ lb config --mirror-chroot "http://ftp.jp.debian.org/debian/"

$ lb config --parent-archive-areas "main contrib non-free" \
$ lb config --archive-areas "main contrib non-free" \

ロケールやキーボードなどの設定はブート時のパラメータとして指定します。

$ lb config --bootappend-live \
      "boot=live config persistence noeject live-config.utc=no
      "live-config.locales=ja_JP.UTF-8 \
       live-config.keyboard-model=jp106 \
       live-config.keyboard-layouts=jp"

USBメモリなどにデータ(ライブイメージとの差分)を保存できるように persistence オプションもブートパラメータにいれておきます。ついで noeject というオプションを指定しておくと再起動時のメディアの取り外しの確認が省略されます。

バイナリの形式は、デフォルトではiso-hybridになっていますので、CD,DVDだけでなくUSBメモリ用のイメージとしても使用できます。もし何らかの理由で起動に失敗する場合には、次のようにしてバイナリ形式を指定します。CD/DVDに焼く場合は、

$ lb config --binary-images iso

一方、USBメモリの場合は、

$ lb config --binary-images hdd

(iso-hybrid で問題なければ、この設定は不要です)

さらにセクション (main,contrib,non-free) を指定します。

$ lb config --parent-archive-areas "main contrib non-free"
$ lb config --archive-areas "main contrib non-free"

ライブシステムに含めたいパッケージは、config/package-lists/ というディレクトリに .list.chroot という拡張子をつけたファイルに指定します。この時、言語環境も一緒に指定しておくと便利です。 たとえば、xfce-japanese.list.chroot というファイルに

task-japanese
task-japanese-desktop
task-xfce-desktop
nqc
g++
openssh-client

のように指定しておけばxfceを使った日本語デスクトップ環境が揃います。 kdeやgnomeの場合は、task-japanese-gnome-desktop や task-japanese-kde-desktop を指定すれば よいでしょう。

パッケージリストはいくつあってかまいません。メンテしやすいように適当に分類しておきましょう。 つぎにパッケージリストを指定します。

とにかく .list.chroot という拡張子のついたファイルを作業ディレクトリの下にある config/packages-lists/ に保存しておけば自動的に読み込まれてインストールされます。

ちなみに上記の task-japanese-desktop を指定しない場合には、あらかじめ以下の例のような日本語関連で必要そうなパッケージのリストを japanese.list.chroot というファイル名でこのディレクトリに作成しておくと便利です (日本語化については http://wiki.debian.org/JapaneseEnvironment にまとまった情報があります)。

次にカスタマイズした設定ファイルや Debian のパッケージ管理ツールで管理されていないファイルを config/includes.chroot/ 以下にコピーします (デフォルトの設定のままでよい場合にはこの作業は不要です)。 例えば、現在使っている /etc/bash.bashrc や /etc/skel/ 以下の初期設定ファイル、 /usr/local/bin/ 以下のファイルなどをビルドするイメージにも入れておきたい場合には、

$ mkdir -p config/includes.chroot/etc/
$ cp /etc/bash.bashrc config/includes.chroot/etc/
$ cp -a /etc/skel/ config/includes.chroot/etc/
$ mkdir -p config/includes.chroot/usr/local/
$ cp -a /usr/local/bin/ config/includes.chroot/usr/local/

のような感じでコピーします。

lb build でビルド

次のコマンドを一発たたくと、それだけでディスクイメージをビルドしてくれます。

$ sudo lb build

これでDebian Liveのイメージ (binary.hybrid.iso)、あるいはCD/DVD専用イメージ (binary.iso) あるいは USBメモリのイメージ (binary.img) がカレントディレクトリにできるはずです。

設定を変更して再度ビルドする際には、ビルドの前に lb clean を実行してください。 ただし lb clean --all や lb clean --purge でも config/ 以下のローカルファイルは削除されないので、不必要になったローカルな(=自分でコピーした)ファイルなどは手で削除する必要があります。

# lb clean --all
# lb build

詳しくは man lb_clean を参照してください。 また --purge オプションをつけなければダウンロードした deb ファイルが cache/ に残っているので 2回目以降はダウンロード時間が短縮されるはずです。

qemuでテスト

$ qemu -cdrom binary.iso

または

$ qemu -hda binary.img

デフォルトでは qemu が使用するメモリは 128MB ですが、作業マシンに余裕があれば以下のように 512MBくらいは用意したほうが快適なエミュレーションができます。

$ qemu -m 512 -hda binary.img

CD や USBメモリへの書き込み

CDに書き込む場合は、例えば、

# wodim -eject binary.hybrid.iso

とします。一方USBメモリに書き込む場合は、マウントしていない状態で、例えば

# dd if=binary.hybrid.iso of=/dev/sdb

のように of= で書き込み先のUSBメモリのデバイス名を指定します (この例では /dev/sdb)。 このときUSBメモリ内のデータはすべて消去されてしまうので注意してください。 (dd で bs=4M などのオプションをつければコピーのスピードが速くなると思います)。 このイメージはパーティション情報まで含んだイメージなので、書き込み先が /dev/sdb1 ではなくて /dev/sdb になっていることに注意してください。

ddでイメージを書き込むと、USBメモリには新しいパーティションが一つ切られて (例えば /dev/sdb1)、残りは空き領域となっています。 ユーザのデータもこのUSBメモリに保存したい場合には、 この後に home 用のパーティションを追加します。 そのためには cfdisk などのツールを使ってその空き領域に Linux のパーティション (ext3 など) を追加し、そのボリューム名を persistence にします (別のUSBメモリなどのストレージでもボリューム名を persistence にしておけばOKです)。

# cfdisk /dev/sdb
# mkfs.ext3 /dev/sdb2 -L persistence

さらに persistence.conf というファイルをそのボリュームとトップに置きます。 中身は保存したいディレクトリを指定します。例えば

# mount /dev/sdb2 /mnt
# echo "/home" > /mnt/persistence.conf
# umount /mnt

これでライブUSBメモリのできあがりです。簡単!

ちなみに /home だけでなく、/ 以下の変更をすべて保存しておきたい場合には、persistence.confに

/ union

と書いておきます。 これでイメージとの差分が保存されるので、パッケージを追加したい場合や /usr/local/ をカスタマイズしたい場合には便利です。

参考リンク

2008年10月24日からのこのページのだいたいの訪問者数: 本日1 昨日0 合計&counter([total|today|yesterday]);


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-03-20 (水) 13:25:33