(準備中)
このページは、Debian Live System を使ったライブ・システム構築のメモで、Debian GNU/Linux testing (lenny) あるいは unstable (sid) 上での作業を前提としています。
詳しくは本家の説明 http://wiki.debian.org/DebianLive などを参考にしてください。

以下の説明は、Debian GNU/Linux の testing (lenny), unstable (sid) 上でライブシステムを作成する方法です。
目次
#contents

* 下準備 [#j68bb16f]

** live-helper のインストール [#x2adb385]
** live-helper のインストール [#f7d92f35]

 apt-get install live-helper live-initramfs
 # apt-get install live-helper live-initramfs

live-helper だけでなく live-initramfs もインストールしておきます。

** apt-cacher のインストール [#p8a362ef]
** apt-cacher のインストール [#r7d84d55]

何度もライブシステムを構築する場合には、proxy ソフトの apt-cacher をインストールしておくと便利です。

 apt-get install 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 にインポートしておきます。
もし /var/cache/apt/archives/ 以下に deb ファイルを残していれば、ダウンロード時間の節約のために apt-cacher-import.pl という付属のツールで apt-cacher にインポートしておきます。設定の問題なのかどうかわかりませんが apt-cacher 経由で cache にないパッケージをダウンロードするとスピードがとても遅くなってしまうので、このツールはとても重宝します。

 /usr/share/apt-cacher/apt-cacher-import.pl -r /var/cache/apt/archives/
 # /usr/share/apt-cacher/apt-cacher-import.pl -r /var/cache/apt/archives/

デフォルトでは apt-cacher は www-data の権限で動くので、インポートした deb ファイルも一応 chown しておきます (これは必要なし?)
デフォルトでは apt-cacher は WWWサーバのユーザ権限で (www-data として) 動くので、インポートした deb ファイルも一応 chown しておきます (これは必要なし?)

 chown www-data:www-data /var/cache/apt-cacher/var/cache/apt-cacher/packages/*.deb
 # chown www-data:www-data /var/cache/apt-cacher/var/cache/apt-cacher/packages/*.deb

** qemu のインストール [#a0622e6c]

できたイメージ を CD に焼き付ける前にテストしてみるために qemu もインストールしておきます。

 apt-get install qemu
 # apt-get install qemu

* 試しにビルドしてみる [#naef5521]

作業するためのディレクトリを適当に作って、そこに移動します。

 mkdir debian-live
 cd debian-live
 su
 $ mkdir debian-live
 $ cd debian-live
 $ su

ディレクトリ名は何でもかまいません。

以下は root で作業します (sudo でもうまく行く?)。
実はここで

 # lh_config && lh_build

という一行の命令だけで、なんと Debian Live の ISO イメージができてしまうのですが、せっかく apt-cacher もインストールしたので、以下それを利用するための設定を行います。lh_config は一般ユーザでも実行可能のようですが、以下の例では root で実行しています。

まず、

 lh_config
 # lh_config

これで、カレントディレクトリの下に config/ と scripts/ というディレクトリができているか確認します (以下のようにさらにオプションで種々の指定をする場合は、実はこのステップは必要ありませんが…)。
これで、カレントディレクトリの下に config/ と scripts/ というディレクトリができているか確認します (以下のようにさらにオプションで種々の指定をする場合は、実はこのステップは必要ありません)。

この後、種々の設定は config/ 以下のファイルを直接編集せずに lh_config コマンドで行います。テストビルドなので、とりあえずミラーサイトだけ指定しておきます。
この後、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 --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
 # lh_build

少し時間がかかりますが、これでカレントディレクトリに binary.iso というファイルができればビルド成功です。

qemu でテストしてみます。

 qemu -cdrom binary.iso
 $ qemu -cdrom binary.iso

このISOイメージを cdrecord などで CD に焼き付ければ、ライブCDのできあがりです。
例えば、

 cdrecord -eject -data binary.iso
 $ cdrecord -eject -data binary.iso

* 言語設定やインストールするパッケージのカスタマイズ [#i6560e21]
* カスタマイズ [#t7db9dea]

セクションを指定 (contrib や non-free のパッケージをインストールする場合)
 lh_config --categories "main contrib non-free"
** 言語の指定、ブート時のパラメータ指定 [#s965fda0]
 # lh_config --language ja
 # lh_config --bootappend-live "locale=ja_JP.UTF-8 keyb=jp kmodel=jp106"

言語の指定
 lh_config --language ja
keyb=jp は X では有効ですがコンソールでは無視されてしまうようです。
また、kmodelの指定がないと xorg.conf で XkbModel として jp106 が採用されないようです。

ブート時のパラメータ指定
 lh_config --bootappend-live "locale=ja_JP.UTF-8 keyb=jp kmodel=jp106"
** ディストリビューション、セクションを指定 [#sa910981]
sid上でlennyのライブシステムを作りたい場合やその逆の場合に必要です。
また contrib や non-free のパッケージをインストールする場合にはセクションも指定しておきます。

ディストリビューション指定 (sid または lenny)
 lh_config -d sid
 # 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>
としたほうがすっきりするかもしれません。

** パッケージインストール後の設定 [#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
 
 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

* USBメモリ用のライブシステムの作成 [#ba4dd651]

バイナリイメージとして 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イメージを作成したあとビルドするには、

 # lh_clean --binary
 # lh_build

とします。

ビルドに成功すると、今度は binary.iso のかわりに binary.img というファイルができます。
dd コマンドを使ってこのディスクイメージを USBメモリに書き込みます。
このとき USBメモリはマウントしていない状態で書き込みます。
もしUSBメモリのデバイス名が、/dev/sdb だとすると、

 # dd if=binary.img of=/dev/sdb

でイメージをコピーできます。このイメージはパーティション情報まで含んだイメージなので書き込み先が /dev/sdb1 ではなくて /dev/sdb になっていることを注意してください。

イメージのコピーが終了した時点で、USBメモリはイメージ用にパーティションが一つ切られて残りは空き領域になっています。その空き領域に cfdisk などを使って Linux のパーティションを追加して、そのボリューム名を home-rw にすると、自動的にそのパーティションを /home としてマウントしてくれます。

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

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


* 参考リンク [#n52d67d1]

- http://wiki.debian.org/DebianLive (本家)
- [[Debian Live 3分クッキング:http://cliplife.jp/clip/?content_id=d068osmn]] (Debian開発者のやまねさんによるプレゼン)


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS