//#nomenubar 松本成司 (matsu AT johnen.shinshu-u.ac.jp) このページは、[[Debian Live System を使ったライブ・システム構築のメモ>DebianLive/Build-HOWTO]]の簡易版です。 Debian GNU/Linux testing (lenny) あるいは unstable (sid) 上での作業を前提としています。 詳しくは[[本家の説明:http://wiki.debian.org/DebianLive]] や live-helper の manpage などを参考にしてください。 目次 #contents * 必要なツールのインストール [#z4a79440] # apt-get install live-helper live-initramfs qemu wodim ビルドに必要なツールは live-helper というパッケージに含まれています。qemu はビルドしたイメージをテストするためのエミュレータ、wodim は CDやDVDにイメージを焼くためのツールです。 * lh_config で設定 [#gf17bbbc] まず作業ディレクトリを用意してそこに移動します。 以下の例では debian-live というディレクトリ名になっていますが、何でもかまいません。 700MBくらいのイメージを作成する場合には、4GB くらいの空き容量が最低でも必要です。 $ mkdir debian-live $ cd debian-live このディレクトリで lh_config というツールを使って必要な設定を行っていきます。 lh_config を実行する際には複数のオプションを指定するともできますが、説明をわかりやすくするため以下では一つの設定(一つのオプション)に対して lh_config を一回ずつ走らせています。 まずdebファイルをダウンロードするミラーサイトを指定します。 以下の ftp.jp.debian.org をお近くのミラーサイトに置き換えてください。 $ lh_config --mirror-bootstrap "http://ftp.jp.debian.org/debian/" $ lh_config --mirror-chroot "http://ftp.jp.debian.org/debian/" $ lh_config --mirror-binary "http://ftp.jp.debian.org/debian/" 言語やブート時のパラメータを指定します。 $ lh_config --language ja $ lh_config --bootappend-live "locale=ja_JP.UTF-8 keyb=jp kmodel=jp106" USBメモリから起動する場合には、データを保存できるように persistent オプションもブートパラメータにいれておきます (ついでに noprompt も)。 $ lh_config --bootappend-live "locale=ja_JP.UTF-8 keyb=jp kmodel=jp106 persistent noprompt" バイナリの形式を指定します。CDに焼く場合は、 $ lh_config --binary-images iso USBメモリの場合は、 $ lh_config --binary-images usb-hdd ディストリビューション (lenny またはsid)、セクションを指定します。 $ lh_config --distribution lenny $ lh_config --categories "main contrib non-free" つぎにパッケージリストを指定します。 /usr/share/live-helper/lists/ に用意されているリストをそのまま使う場合には、単に $ lh_config --packages-lists リスト名 と指定すれば良いのですが、これだと日本語関連のパッケージが入らないので、次のようにしてパッケージリストを自作することにします。 自作のリストは作業ディレクトリの下にある config/chroot_local-packageslists/ に保存します。 あらかじめ以下の例のような日本語関連で必要そうなパッケージのリストを作成しておくと便利です。 取り合えず以下のリストをコピーして japanese というファイル名でこのディレクトリに保存し、他のリストからインクルードしておけば、anthy による日本語入力なども可能になります (日本語化については http://wiki.debian.org/JapaneseEnvironment にまとまった情報があります)。 # 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 lv nkf 次にデスクトップ環境やインストールしたいパッケージを指定します。 例えば Xfce を使う場合には、/usr/share/live-helper/lists/ の中に xfce というファイルあるので、これを include した次のようなファイルを作り、 config/chroot_local-packageslists/xfce-ja として保存します (名前は適当に)。 他のデスクトップ環境 (gnome や kde) の場合も同様です (リストを自作する際には /usr/share/live-helper/lists/ の中にあるサンプルを参考に)。 先ほど作成した japanese も include しておきます (#include で指定できるのは /usr/share/live-helper/lists/ と config/chroot_local-packageslists/ 内のファイル)。 #include <xfce> #include <japanese> # miscellaneous Xfce4 packages xfce4-goodies xfce4-places-plugin thunar-volman xfmedia # misc iceweasel-l10n-ja mozilla-plugin-gnash w3m xterm less openssh-client このリストを config/chroot_local-packageslists/xfce-ja というファイル名で保存して、lh_config でこのパッケージリストを指定します (ファイル名はお好みで)。 $ lh_config --packages-lists xfce-ja リストに入れなかったパッケージでインストールしたいものがあれば追加します。例えば $ lh_config --packages "nqc g++ w3m" これらのコマンドは一度走らせると、前の設定を上書きしてしまうので注意してください。 次にカスタマイズした設定ファイルや Debian のパッケージ管理ツールで管理されていないファイルを config/chroot_local-includes/ 以下にコピーします (デフォルトの設定のままでよい場合にはこの作業は不要です)。 例えば、現在使っている /etc/bash.bashrc や /etc/skel/ 以下の初期設定ファイル、 /usr/local/bin/ 以下のファイルなどをビルドするイメージにも入れておきたい場合には、 $ mkdir -p config/chroot_local-includes/etc/ $ mkdir -p config/chroot_local-includes/usr/local/ $ cp /etc/bash.bashrc config/chroot_local-includes/etc/ $ cp -a /etc/skel/ config/chroot_local-includes/etc/ $ cp -a /usr/local/bin/ config/chroot_local-includes/usr/local/ のような感じでコピーします。 * lh_build でビルド [#i11729a2] root になって次のコマンドを一発たたくと、それだけでディスクイメージをビルドしてくれます。 $ su # lh_build これでオリジナルのライブCDのイメージ (binary.iso) あるいは USB メモリのイメージ (binary.img) がカレントディレクトリにできるはずです。 ちなみに、2008年9月に某ストアで12,800円で購入した激安サーバ (Celeron 430 - 1.8GHz, 512MB RAM, HD 80GB) を使ってここで紹介した設定例のままビルドした場合、deb ファイルのダウンロード時間を除いて20分程度かかりました((メモリを8GBに増設してRAMディスク上で作業すると12分程度に大幅に短縮されました。パッケージの展開やインストールは劇的に速くなりました。あとは CPUを Q8200に乗せ替えて squashfs を作成する時間を短縮すればコストパフォーマンス抜群の高性能開発マシンになるはず・・・ですが先立つものが・・・))。一方 X61 (T7500 - 2.2GHz, 4GB RAM) では、12分程度でした。 出来上がったディスクイメージは約400MB、作業ディレクトリはこのイメージを含めて最終的に約2.4GBになりました。 設定を変更して再度ビルドする際には、ビルドの前に lh_clean を実行してください。 ただし lh_clean では config/ 以下のローカルファイルは削除されないので、不必要になったローカルな(=自分でコピーした)ファイルなどは手で削除する必要があります。 # lh_clean --all # lh_build また --all オプションをつけてもダウンロードした deb ファイルは cache/packages_chroot/ に残っているので 2回目以降はダウンロード時間が短縮されるはずです。 * qemuでテスト [#q1c91f17] $ qemu -cdrom binary.iso または $ qemu -hda binary.img デフォルトでは qemu が使用するメモリは 128MB ですが、作業マシンに余裕があれば以下のように 256MBくらいは用意したほうが快適なエミュレーションができます。 $ qemu -m 256 -hda binary.img * CD や USBメモリへの書き込み [#fafc9c28] CDに書き込む場合は、例えば、 # wodim -eject binary.iso USBメモリに書き込む場合は、マウントしていない状態で、例えば # dd if=binary.img of=/dev/sdb of= で書き込み先のUSBメモリのデバイス名を指定します (この例では /dev/sdb)。 USBメモリ内のデータはすべて消去されてしまうので注意してください。 (dd で bs=1024k などのオプションをつければコピーのスピードが速くなると思います)。 このイメージはパーティション情報まで含んだイメージなので、書き込み先が /dev/sdb1 ではなくて /dev/sdb になっていることに注意してください。 ddでイメージを書き込むと、USBメモリには新しいパーティションが一つ切られて (例えば /dev/sdb1)、残りは空き領域となっています。 ここに 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/ をカスタマイズしたい場合には便利です。 * 参考リンク [#n52d67d1] - http://wiki.debian.org/DebianLive (本家) - [[Debian Live 3分クッキング:http://cliplife.jp/clip/?content_id=d068osmn]] (Debian開発者のやまねさんによるプレゼン --- とてもわかりやすいです) 2008年10月24日からのこのページのだいたいの訪問者数: 本日&counter(today); 昨日&counter(yesterday); 合計&counter(all);