DebianLive/Build-HOWTO-for-the-Impatient

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

このページはDebianライブシステムの構築のメモで、少し詳しいDebianLive/Build-HOWTOの簡易版です。 Debian GNU/Linux stable (squeeze)上での作業を前提としています。

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

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

目次

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

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

イメージをテストしたり、CDやDVDにイメージを焼くためにはさらに、

# apt-get install qemu wodim

lb config で設定

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

$ mkdir debian-live
$ cd debian-live

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

# lb config && lb build

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

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

まずdebファイルをダウンロードするミラーサイトの設定。以下の ftp.jp.debian.org をお近くのミラーサイトに置き換えてください。

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

言語やブート時のパラメータを指定します。

$ lb config --language ja
$ lb config --bootappend-live \
      "live-config.locales=ja_JP.UTF-8 \
       live-config.keyboard-model=jp106 \
       live-config.keyboard-layouts=jp \
       persistent quickreboot"

("--language" というオプションは wheezy では存在しないようです -- 2012-06-27追記)

USBメモリのライブイメージを作成する場合には、データを保存できるように persistent オプションもブートパラメータにいれておきます (ついでに noprompt も quickreboot というオプションを指定しておくと再起動時のメディアの取り外しの確認が省略されます*1 )。もちろんCD用イメージの作成時でも、別途データ保存用のメディアを用意する場合には persistent オプションを指定しておきます。

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

$ lb config --binary-images iso

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

$ lb config --binary-images usb-hdd

(iso-hybrid で問題なければ、この設定は不要です。wheezyでは usb-hdd が hdd に変更されました --2012-06-27追記)

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

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

ところで、日本語関連のパッケージについては、日本語taskを使って

$ lb config --tasks "japanese-desktop"

のように指定すれば通常のインストールと同様に日本語デスクトップ環境が揃います。

ただ、japanese-desktop 自体は標準的なデスクトップ環境を想定しているようで openoffice や gnome なども一緒にインストールされてしまうので、イメージのサイズを気にしなければならない場合には、この task は指定せずに、以下を参考に自作のパッケージリストを使ってください。

wheezyでは、task-japanese-desktop という meta-package があるので、これを通常のパッケージリストに追加して好きなデスクトップ環境を選べよいようです (ただし libreoffice は含まれる)。gnomeやkdeの場合には、直接 task-japanese-gnome-desktop や task-japanese-kde-desktop を指定すればよいでしょう (2012-06-26追記)

つぎにパッケージリストを指定します。 gnome, kde, lxde, xfce など、 /usr/share/live/lists/ に用意されているリストをそのまま使う場合には、単に

$ lb config --packages-lists リスト名

と指定します。複数のリストを指定する場合には"(ダブルコーテーション)で囲みます。

自作のリストは .list という拡張子をつけて作業ディレクトリの下にある config/chroot_local-packageslists/ に保存しておけば自動的に読み込まれます。 (wheezyでは .list.chroot という拡張子をつけて config/package-lists/ に保存します。2013-02-09追記)

例えば、上記の japanese-desktop を task で指定しない場合には、あらかじめ以下の例のような日本語関連で必要そうなパッケージのリストを japanese.list というファイル名でこのディレクトリに作成しておくと便利です。 とりあえず以下のリストをコピーして、他のリストからインクルードしておけば、anthy + uim による日本語入力なども可能になります (日本語化については http://wiki.debian.org/JapaneseEnvironment にまとまった情報があります)。

# japanese env
# save this file as "config/chroot_local-packageslists/japanese.list"

uim
uim-anthy
unifont
xfonts-a12k12
xfonts-intl-japanese
xfonts-intl-japanese-big
xfonts-unifont 
ttf-sazanami-gothic
ttf-sazanami-mincho
ttf-vlgothic
lv
nkf
okular

さらにインストールしたいパッケージを指定します。/usr/share/live/lists/ のリストをインクルードすることも可能です。 例えば Xfce を使う場合には、/usr/share/live/lists/ の中に xfce というファイルあるので、これを include した次のようなファイルを作り、 config/chroot_local-packageslists/xfce-ja.list として保存します (名前は適当に)。squeeze以降では, config/chroot_local-packageslist/ 内にある *.list というファイルはすべて自動的に登録されるのでわざわざ include する必要はありません。 他のデスクトップ環境 (gnome や kde) の場合も同様です (リストを自作する際には /usr/share/live/lists/ の中にあるサンプルを参考に)。

#include <xfce>

# miscellaneous Xfce4 packages
xfce4-goodies
xfce4-places-plugin 
thunar-volman
xfmedia

# misc
iceweasel-l10n-ja
mozilla-plugin-gnash
gcj-jre 
w3m
xterm
less
openssh-client

このリストを config/chroot_local-packageslists/xfce-ja.list というファイル名で保存します。 (wheezyでは config/package-lists/xfce-ja.list.chroot)

あとリストに入れなかったパッケージでインストールしたいものがあれば追加します。例えば

$ lb config --packages "nqc g++ wodim"

(wheezy ではこのオプションはなくなっているようです --2012-06-26追記)

これらのコマンドは一度走らせると、前の設定を上書きしてしまうので注意してください。

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

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

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

lb build でビルド

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

$ su
# lb build

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

ちなみに、2008年9月に某ストアで12,800円で購入した激安サーバ (Celeron 430 - 1.8GHz, 512MB RAM, HD 80GB) を使ってここで紹介した設定例のままビルドした場合、deb ファイルのダウンロード時間を除いて20分程度かかりました*2。一方 X61 (T7500 - 2.2GHz, 4GB RAM) では、12分程度でした。 出来上がったディスクイメージは約400MB、作業ディレクトリはこのイメージを含めて最終的に約2.4GBになりました。

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

# lb clean --all
# lb build

また --all オプションをつけてもダウンロードした deb ファイルは cache/packages_chroot/ に残っているので 2回目以降はダウンロード時間が短縮されるはずです。

qemuでテスト

$ qemu -cdrom binary.iso

または

$ qemu -hda binary-hybrid.iso

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

$ qemu -m 256 -hda binary-hybrid.iso

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

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

# wodim -eject binary-hybrid.iso

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

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

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

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

# cfdisk /dev/sdb
# mkfs.ext3 /dev/sdb2 -L home-rw

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

ちなみに /home だけでなく、/ 以下の変更をすべて保存しておきたい場合には、ボリューム名を live-rw にします。これでイメージとの差分が保存されるので、パッケージを追加したい場合や /usr/local/ をカスタマイズしたい場合には便利です。

参考リンク

2008年10月24日からのこのページのだいたいの訪問者数: 本日1 昨日0 合計1276


*1 CDの場合には noprompt というオプションを指定しておけばCDの取り出し確認はされません
*2 メモリを8GBに増設してRAMディスク上で作業すると12分程度に大幅に短縮されました。パッケージの展開やインストールは劇的に速くなりました。さらに CPUを Q8200に乗せ替えると squashfs を作成する時間が短縮され、6分半ほどでビルドが完了しました

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