[[DebianLive/Build-HOWTO]]

#nomenubar
松本成司 (matsu AT johnen.shinshu-u.ac.jp)

このページは、[[Debian Live System を使ったライブ・システム構築のメモ>DebianLive/Build-HOWTO]]をまとめたものです。
このページは、[[Debian Live System を使ったライブ・システム構築のメモ>DebianLive/Build-HOWTO]]の簡易版です。
Debian GNU/Linux testing (lenny) あるいは unstable (sid) 上での作業を前提としています。
詳しくは[[本家の説明:http://wiki.debian.org/DebianLive]] や live-helper の manpage などを参考にしてください。

目次
#contents

* 準備 (必要なツールのインストール) [#z4a79440]
* 必要なツールのインストール [#z4a79440]

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

Debian Live System を実際にビルドする際に使うコマンドは、lh_config, lh_build, lh_clean 程度ですが、これらのツールは live-helper というパッケージに含まれています。qemu はビルドしたイメージをテストするためのエミュレータ、wodim は CDやDVDにイメージを焼くためのツールです (USBメモリにコピーする場合は不要です)。
ビルドに必要なツールは live-helper というパッケージに含まれています。qemu はビルドしたイメージをテストするためのエミュレータ、wodim は CDやDVDにイメージを焼くためのツールです。

* ミラーサイトやインストールするパッケージの指定など [#z40f8722]
* lh_config で設定 [#gf17bbbc]

まず作業ディレクトリを用意してそこに移動します。
以下の例では debian-live というディレクトリ名になっていますが、何でもかまいません。
700MBくらいのイメージを作成する場合には、4~5GB くらいの空き容量が必要です。

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

以下の例は、ミラーサイトとして ftp.jp.debian.org を使う場合の例ですがお近くのミラーサイトを指定してください。
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 --distribution lenny
 # lh_config --categories "main contrib non-free"
 # lh_config --bootappend-live "locale=ja_JP.UTF-8 keyb=jp kmodel=jp106 persistent noprompt"

パッケージリストの作成
バイナリの形式を指定します。CDに焼く場合は、

例えば、デスクトップ環境の KDE に加え NQC と g++ と w3m をインストールしたい場合は、
 # lh_config --binary iso

 # lh_config --packages-lists kde
 # lh_config --packages "nqc g++ w3m"
USBメモリの場合は、

のように指定します。もちろん一度に
 # lh_config --packages-lists kde --packages "nqc g++ w3m"
のように指定しても大丈夫です。
 # lh_config --binary usb-hdd

/usr/share/live-helper/lists/ にあるものから選ぶか、あるいはそれらを参考にして独自に作成することもできます。その場合にはリストファイルを、config/chroot_local-packageslists/ の下に適当な名前で保存しておきます。
ディストリビューション (lenny またはsid)、セクションを指定します。

また、--packages で個々のパッケージを指定する場合でも、lh_config --pakages="..." を走らせる度に設定が上書きされてしまうので、たくさんパッケージを指定したい場合には  --packages-lists を使ったほうが便利です。
 # lh_config --distribution lenny
 # lh_config --categories "main contrib non-free"

ところで /usr/share/live-helper/lists/ 以下の例をみても分かるように、リストは他のリストを include できます。
次にパッケージリストの作成して config/chroot_local-packageslists/ に保存します。
あらかじめ以下の例のように日本語関連で必要そうなパッケージのリストを作成して 
作業ディレクトリの下にある
config/chroot_local-packageslists/ というディレクトリに japanese というファイル名で保存しておきます
(http://wiki.debian.org/JapaneseEnvironment を参考に)。

以下は、Debian Wiki の日本語環境の説明
http://wiki.debian.org/JapaneseEnvironment
を参考にして作成した Xfce + NQC + 日本語環境 +α のオリジナル・リストの例です。

 # DEBIANLIVE/config/chroot_local-packageslists/xfce-ja
 #include <xfce>
 
 # miscellaneous Xfce4 packages
 xfce4-goodies
 xfce4-places-plugin 
 thunar-volman
 xfmedia
 

 # 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 というファイルを参考にして、以下のような内容のファイルを作り config/chroot_local-packageslists/xfce-ja として保存します (名前は適当に)。
他のデスクトップ環境 (gnome や kde) の場合も同様です。
このファイルの中で先ほど作成した japanese を include しておきます。

 #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
 nqc
 g++
 
このリストを

 config/chroot_local-packageslists/xfce-ja
このリストを config/chroot_local-packageslists/xfce-ja というファイル名で保存した場合は、次のようにパッケージリストを指定します。

というファイルに保存すれば
 # lh_config --packages-lists xfce-ja

 # lh_config --packages-lists xfce-nqc-ja
リストに入れなかったパッケージでインストールしたいものがあれば追加します。例えば

でパッケージリスト指定ができます。
上で書いたように必要なパッケージをすべてこのリストに入れておくと --packages で追加パッケージを指定する必要はありません。
 # lh_config --packages "nqc g++ w3m"

もちろん上記リストに含まれる日本語関連のパッケージだけを別リストとして
 config/chroot_local-packageslists/japanese
というファイルに保存して
 config/chroot_local-packageslists/xfce-nqc-ja
では単に
 #include <xfce>
 #include <japanese>
 nqc
 g++
 ...
これらのコマンドは一度走らせると、前の設定を上書きしてしまうので注意してください。

のように include するのが本来のやり方だと思います。
次にカスタマイズした設定ファイルや Debian のパッケージ管理ツールで管理されていないファイルを config/chroot_local-includes/ 以下にコピーします。
例えば、現在使っている /etc/bash.bashrc や /etc/skel/、/usr/local/ 以下のファイルをビルドするイメージにも入れておきたい場合には、

** パッケージインストール後の設定 [#t421448b]
 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/* config/chroot_local-includes/usr/local/

*** ローカルファイルのコピー [#d2927528]
のような感じでコピーします。

カスタマイズした設定ファイルや Debian のパッケージ管理ツールで管理されていないファイルは、あらかじめ
* lh_build でビルド [#i11729a2]

 config/chroot_local-includes/
次のコマンド一発で、イメージをビルドしてくれます。

にディレクトリ構造を保ったまま入れておきます。
 # lh_build

例えば、カスタマイズした /etc/bash.bashrc (システムワイドな .bashrc ファイル) を使いたい場合には、config/chroot_local-includes/etc/ というディレクトリを作って
これでオリジナルのライブCDのイメージ (binary.iso) あるいは USB メモリのイメージ (binary.img) がカレントディレクトリにできるはずです。

 config/chroot_local-includes/etc/bash.bashrc

として保存しておきます。そうすればデフォルトの bash.bashrc が上書きされます。

この機能の応用として、ユーザの初期設定のファイルを
 config/chroot_local-includes/etc/skel/
の中に入れておいたり、非Debianパッケージを
 config/chroot_local-includes/usr/local/
の中に入れておけば、現在使用しているシステムを簡単にライブシステムに反映させることができます。


設定をしたあと、再度ISOイメージをビルドする際には lh_clean というコマンドで作業ディレクトリをきれいにしておきます。
設定を変更して再度ビルドする際には、lh_clean を実行したあとビルドしてください。
ただし lh_clean では config/ 以下のローカルファイルは削除されないので、不必要になったローカルな(=自分でコピーした)ファイルなどは手で削除する必要があります。 

 # lh_clean --all
 # lh_build

これでオリジナルのライブCDのイメージ (binary.iso) ができるはずです。

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

** USBメモリ用のディスクイメージの作成 [#q34cdb2d]
 qemu -m 256 -cdrom binary.iso

基本的な設定は ISOイメージの場合と同じです。
または

バイナリイメージとして usb-hdd を指定します (デフォルトでは iso になっています)。
 qemu -m 256 -hda binary.img

 # lh_config --binary-images usb-hdd
 # lh_config --bootappend-live "locale=ja_JP.UTF-8 keyb=jp kmodel=jp106 persistent noprompt"
メモリは作業マシンのスペックに応じて -m オプションで適当に指定してください。この例では256MB を指定しています。

ISOイメージを作成した後、usb-hdd のディスクイメージをビルドするには、
* CD や USBメモリへの書き込み [#fafc9c28]

 # lh_clean --binary
 # lh_build
CDに書き込む場合は、例えば、

ビルドに成功すると、今度は binary.iso のかわりに binary.img というファイルができます。
 # wodim -eject binary.iso

* qemuでテスト [#a621f3f7]
USBメモリに書き込む場合は、マウントしていない状態で、例えば

 qemu -m 256 -hda binary.img
 # dd if=binary.img of=/dev/sdb


* CD や USBメモリへの書き込み [#l1bbe285]

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

 # dd if=binary.img of=/dev/sdb
これでUSBメモリには新しいパーティションが一つ切られて (例えば /dev/sdb1)、残りは空き領域となっているので、ここに home 用のパーティションを追加します。
そのためには cfdisk などのツールを使ってその空き領域に Linux のパーティション (ext3 など) を追加し、そのボリューム名を home-rw にします。そうすることで起動時にそのパーティションを /home として自動的にマウントしてくれます。

でイメージをコピーできます (bs=1024k などのオプションをつければコピーのスピードが速くなると思います)。このイメージはパーティション情報まで含んだイメージなので、書き込み先が /dev/sdb1 ではなくて /dev/sdb になっていることに注意してください。

イメージのコピーが終了した時点で、USBメモリには新しいパーティションが一つ切られて (例えば /dev/sdb1)、残りは空き領域となっています。
この状態でも、すぐにUSB起動ディスクとして使えますが、せっかくUSBメモリを使うので残りの領域を個人のデータ保存用にセットアップしておきましょう。

そのためには cfdisk などのツールを使ってその空き領域に Linux のパーティションを追加し、そのボリューム名を home-rw にします。そうすることで起動時にそのパーティションを /home として自動的にマウントしてくれます。

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

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

再び ISO イメージを作成する時には lh_build する前に

 # lh_clean --binary
 # lh_config --binary-images iso

を忘れずに。


* 参考リンク [#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);


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