このページは、Debian Live System を使ったライブ・システム構築のメモで、Debian GNU/Linux testing (lenny) あるいは unstable (sid) 上での作業を前提としています。 詳しくは本家の説明 http://wiki.debian.org/DebianLive などを参考にしてください。 目次 #contents * 下準備 [#j68bb16f] ** live-helper のインストール [#f7d92f35] # apt-get install live-helper live-initramfs live-helper だけでなく live-initramfs もインストールしておきます。 ** apt-cacher のインストール [#r7d84d55] 通常のインストールと同様に、ビルドを実行するとパッケージの自動ダウンロードから始まるので、何度もライブシステムをビルドする場合には、proxy ソフトの apt-cacher をインストールしておくと便利です。 # apt-get install apt-cacher とりあえずデフォルトのままでも動くと思います。ポートの変更やアクセス制限などの設定が必要であれば /etc/apt-cacher/apt-cacher.conf を編集します。 デフォルトの設定の場合、 http://localhost:3142/ でアクセスできればOK。 もし /var/cache/apt/archives/ 以下に deb ファイルを残していれば、ダウンロード時間の節約のために apt-cacher-import.pl という付属のツールで apt-cacher にインポートしておきます。 # /usr/share/apt-cacher/apt-cacher-import.pl -r /var/cache/apt/archives/ 設定の問題なのかどうかわかりませんが apt-cacher 経由で cache にないパッケージをダウンロードするとスピードがとても遅くなってしまうので、このツールはとても重宝します。 デフォルトでは apt-cacher は WWWサーバのユーザ権限で (www-data として) 動くので、インポートした deb ファイルも一応 chown しておきます (これは必要なし?) # chown www-data:www-data /var/cache/apt-cacher/var/cache/apt-cacher/packages/*.deb ** qemu のインストール [#a0622e6c] できたイメージ を CD に焼き付ける前にテストしてみるために qemu もインストールしておきます。 # apt-get install qemu * 試しにビルドしてみる [#naef5521] 作業するためのディレクトリを適当に作って、そこに移動します。 $ mkdir debian-live $ cd debian-live $ su ディレクトリ名は何でもかまいません。 以下は root で作業します (sudo でもうまく行く?)。 実はここで # lh_config && lh_build という一行の命令だけで、なんと Debian Live の ISO イメージができてしまうのですが、せっかく apt-cacher もインストールしたので、以下それを利用するための設定を行います。lh_config は一般ユーザでも実行可能のようですが、以下の例では root で実行しています。 まず、 # lh_config を実行します。 これで、カレントディレクトリの下に config/ と scripts/ というディレクトリができているか確認します (以下のようにさらにオプションで種々の指定をする場合は、実はこのステップは必要ありません)。 この後、config/ 以下のファイルを直接編集しなくても lh_config コマンドで種々の設定が行えます。テストビルドなので、とりあえずミラーサイトだけ指定しておきます。 以下の例では ftp.jp.debian.org をミラーサイトに指定しています (近くのミラーサイトに置き換えてください)。 # lh_config --mirror-bootstrap "http://localhost:3142/ftp.jp.debian.org/debian/" # lh_config --mirror-chroot "http://localhost:3142/ftp.jp.debian.org/debian/" # lh_config --mirror-binary "http://ftp.jp.debian.org/debian/" lh_config の後にオプションを続けて指定すれば、この例のように3回 lh_config を実行する必要はありません。 これでビルドします。 # lh_build 少し時間がかかりますが、これでカレントディレクトリに binary.iso というファイルができればビルド成功です。 qemu でテストしてみます。 $ qemu -cdrom binary.iso このISOイメージを cdrecord などで CD に焼き付ければ、ライブCDのできあがりです。 例えば、 $ cdrecord -eject -data binary.iso * カスタマイズ [#t7db9dea] ** 言語の指定、ブート時のパラメータ指定 [#s965fda0] # lh_config --language ja # lh_config --bootappend-live "locale=ja_JP.UTF-8 keyb=jp kmodel=jp106" keyb=jp は X では有効ですがコンソールでは無視されてしまうようです。 また、kmodelの指定がないと xorg.conf で XkbModel として jp106 が採用されないようです。 ** ディストリビューション、セクションを指定 [#sa910981] sid上でlennyのライブシステムを作りたい場合やその逆の場合に必要です。 また contrib や non-free のパッケージをインストールする場合にはセクションも指定しておきます。 # lh_config -d lenny # lh_config --categories "main contrib non-free" ** パッケージ、パッケージリストの指定とカスタマイズ [#fba0488c] 例えば、デスクトップ環境の KDE に加え NQC と g++ をインストールしたい場合は、 # lh_config --packages-lists=kde --packages="nqc g++" のように指定します。この例のように --packages ではパッケージ名をスペースで区切って並べていけば複数個指定できる一方、--packages-lists で指定できるファイル名 (リスト名) は一つだけです。 このリスト名は /usr/share/live-helper/lists/ にあるものから選ぶか、あるいはそれらを参考にして独自に作成することもできます。その場合にはリストファイルを、config/chroot_local-packageslists/ の下に適当な名前で保存しておきます。 ところで /usr/share/live-helper/lists/ 以下の例をみても分かるように、リストは他のリストを include できます。 以下は、Debian Wiki の日本語環境の説明 http://wiki.debian.org/JapaneseEnvironment を参考にして作成した Xfce + NQC + 日本語環境 +α のオリジナル・リストの例です。 # DEBIANLIVE/config/chroot_local-packageslists/xfce-nqc-ja - package list for live-helper(7) ## LH: Xfce Debian #include <xfce> # miscellaneous Xfce4 packages xfce4-goodies xfce4-places-plugin thunar-volman xfmedia # NQC, g++, Ruby nqc g++ ruby # japanese env uim uim-anthy unifont xfonts-a12k12 xfonts-intl-japanese xfonts-intl-japanese-big xfonts-unifont ttf-sazanami-gothic ttf-sazanami-mincho ttf-vlgothic xpdf-japanese w3m lv nkf # misc iceweasel-l10n-ja mozilla-plugin-gnash xterm less openssh-client このリストを config/chroot_local-packageslists/xfce-nqc-ja というファイルに保存すれば # lh_config --packages-lists=xfce-nqc-ja でパッケージリスト指定ができます。 必要なパッケージをすべてこのリストに入れておくと --packages で追加パッケージを指定する必要はありません。 もちろん上記リストに含まれる日本語関連のパッケージだけを別リストとして config/chroot_local-packageslists/japanese に保存して xfce-nqc-ja の中では単に #include <japanese> と include するだけにしたほうがすっきりするかもしれません。 ** パッケージインストール後の設定 [#t421448b] *** ローカルファイルのコピー [#d2927528] カスタマイズした設定ファイルや Debian のパッケージ管理ツールで管理されていないファイルは、あらかじめ config/chroot_local-includes/ にディレクトリ構造を保ったまま入れておきます。 例えば、カスタマイズした /etc/bash.bashrc (システムワイドな .bashrc ファイル) を使いたい場合には、config/chroot_local-includes/etc/ というディレクトリを作って config/chroot_local-includes/etc/bash.bashrc として保存しておきます。そうすればデフォルトの bash.bashrc が上書きされます。 この機能の応用として、ユーザの初期設定のファイルを config/chroot_local-includes/etc/skel/ 以下に入れておいたり、非Debianパッケージを config/chroot_local-includes/usr/local/ 以下に入れておけば、現在使用しているシステムを簡単にライブシステムに反映させることができます。 *** シェル・コマンドの実行 [#n348e8a3] インストール終了後、シェルコマンドを走らせたい場合には、シェルスクリプトとして debian-live/config/chroot_local-hooks/ 以下に適当な名前をつけて保存しておきます。 例えば、uim の表示をパネル内に表示したい場合には #!/bin/sh test -x /usr/bin/im-switch || exit 0 im-switch -s uim-systray update-alternatives --set xinput-ja_JP /etc/X11/xinit/xinput.d/uim-systray のような中身のファイルを、例えば config/chroot_local-hooks/90-uim というファイル名で保存して # chmod +x config/chroot_local-hooks/90-uim で実行可能にしておきます。 ** 再ビルド [#ff273bb9] 設定をしたあと、再度ISOイメージをビルドする際には lh_clean というコマンドで作業ディレクトリをきれいにしておきます # lh_clean --all # lh_build * USBメモリ用のライブシステムの作成 [#ba4dd651] 基本的な設定は ISOイメージの場合と同じです。 バイナリイメージとして usb-hdd を指定します。 # lh_config -b usb-hdd ブート時のパラメータとして persistent と noprompt を追加しておきます。 lh_config --bootappend-live "locale=ja_JP.UTF-8 keyb=jp kmodel=jp106 persistent noprompt" ISOイメージを作成した後、usb-hdd のディスクイメージをビルドするには、 # lh_clean --binary # lh_build とします。lh_clean -all できれいに掃除するよりもビルドする時間が少し短縮されます。 ビルドに成功すると、今度は binary.iso のかわりに binary.img というファイルができます。 dd コマンドを使ってこのディスクイメージを USBメモリに書き込みます。 このとき USBメモリはマウントしていない状態で書き込みます。 もしUSBメモリのデバイス名が、/dev/sdb だとすると、 # dd if=binary.img of=/dev/sdb でイメージをコピーできます。このイメージはパーティション情報まで含んだイメージなので、書き込み先が /dev/sdb1 ではなくて /dev/sdb になっていることを注意してください。 イメージのコピーが終了した時点で、USBメモリにはイメージ用にパーティションが一つ切られて (/dev/sdb1)、残りは空き領域となっています。さらに cfdisk などのツールを使ってその空き領域に Linux のパーティションを追加し、そのボリューム名を home-rw にすることで、起動時にそのパーティションを /home として自動的にマウントしてくれます。 # cfdisk /dev/sdb # mkfs.ext3 /dev/sdb2 -L home-rw これでライブUSBメモリのできあがりです。簡単! ちなみに再び ISO イメージを作成する時には # lh_clean --binary # lh_config -b iso を忘れずに。 * 参考リンク [#n52d67d1] - http://wiki.debian.org/DebianLive (本家) - [[Debian Live 3分クッキング:http://cliplife.jp/clip/?content_id=d068osmn]] (Debian開発者のやまねさんによるプレゼン)