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
まず作業ディレクトリを用意してそこに移動します。 以下の例では 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/
のような感じでコピーします。
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 -cdrom binary.iso
または
$ qemu -hda binary-hybrid.iso
デフォルトでは qemu が使用するメモリは 128MB ですが、作業マシンに余裕があれば以下のように 256MBくらいは用意したほうが快適なエミュレーションができます。
$ qemu -m 256 -hda binary-hybrid.iso
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 合計&counter([total|today|yesterday]);