#nomenubar

このページは、Debian Live System を使ったライブ・システム構築のメモです。
Debian GNU/Linux testing (lenny) あるいは unstable (sid) 上での作業を前提としています。
詳しくは[[本家の説明:http://wiki.debian.org/DebianLive]] や live-helper の manpage などを参考にしてください。
基本的には apt-get (あるいは aptitude) というコマンドを使ったことのある Debian あるいは Ubuntu のユーザ向けの情報ですが、「Debian って何???」という方はまず、[[Debian GNU/Linux のホームページ:http://www.jp.debian.org/]]あたりを読んでみてください。-- 松本成司


目次
#contents

* 準備と練習 [#n73e39b7]

** 準備 [#j68bb16f]

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

 # apt-get install live-helper live-initramfs

live-helper をインストールすると lh_config や lh_build といったライブシステムをビルドするための一連のツールやマニュアルが使えるようになります。
live-helper だけでなく live-initramfs もインストールしておきます。


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

通常のインストールと同様に、ビルドを実行するとパッケージの自動ダウンロードから始まるので、何度もライブシステムをビルドする場合には、proxy ソフトの apt-cacher をインストールしておくと便利です。

 # apt-get install apt-cacher

インストール後、/etc/default/apt-cacher というファイルを編集して AUTOSTARTの値を0から1に変更しておきます。
 AUTOSTART=1
そして apt-cacher を再起動。
 # /etc/init.d/apt-cacher restart
とりあえずこれで動くはずです。
ポートの変更やアクセス制限などの設定が必要であれば /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 にないパッケージをダウンロードするとスピードがかなり遅くなってしまうので、このツールはとても重宝します。 
例えば筆者の場合、作業マシンの /etc/apt/sources.list にはあえてこの proxy を指定せず、作業マシンのアップデート後は apt-get clean ではなく apt-get autoclean でダウンロードした deb を残して apt-cacher にインポートしています (おそらくもっと快適な方法があるかもしれません)。

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

 # chown -R  www-data:www-data /var/cache/apt-cacher/var/cache/apt-cacher/packages/

*** 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_build) は少しおあずけにして、ミラーサイトの設定だけを例としてやってみます。
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 を実行する必要はありません。最後の --mirror-binary オプションは出来上がったイメージでのミラーサイトの指定なので proxy を使わないで、直接ミラーサイトを指定しておきます。

これでビルドします。

 # lh_build

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

最近の Core2 Duo クラスのCPUを搭載したマシンの場合 (もちろんメモリ容量やハードディスクのスピードにもよりますが)、debファイルのダウンロード時間を除けば (つまりローカルのキャッシュに debファイルがあれば)、コーヒーブレイク程度の時間で終了するはずです。

** イメージのテスト&焼き付け [#r5f10599]

できた ISOイメージを早速 qemu でテストしてみます。これはrootでなくてもできます。

 $ qemu -m 256 -cdrom binary.iso

メモリの値は作業マシンのスペックを考慮して -m オプションで適当に指定してください (この例では 256MB)。デフォルトは 128MBなのでこれだとちょっと少ないかもしれません。
ちなみにマウスのフォーカスを元のマシンに戻すのは Ctrl+Alt 。

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

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

* カスタマイズ [#t7db9dea]
** 各種パラメータの指定、パッケージの指定 [#h6d2ef5b]

*** 言語の指定、ブート時のパラメータ指定 [#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 --distribution lenny
 # lh_config --categories "main contrib non-free"

この例では lenny を指定しました (sid にしたい場合は lh_config -d sid)。
この例では lenny を指定しました (sid にしたい場合は lh_config -distribution sid)。
g++ や nqc を使うだけであれば non-free は必要ないのですが、日本語のPDFファイルの閲覧には、non-free に属する Adobe CMAP データが必要です。

*** パッケージ、パッケージリストの指定とカスタマイズ [#fba0488c]

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

 # lh_config --packages-lists=kde
 # lh_config --packages="nqc g++ w3m"
 # lh_config --packages-lists kde
 # lh_config --packages "nqc g++ w3m"

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

この例のように --packages ではパッケージ名をスペースで区切って並べていけば複数個指定できますが、--packages-lists で指定できるファイル名 (リスト名) は一つだけです。
このリスト名は /usr/share/live-helper/lists/ にあるものから選ぶか、あるいはそれらを参考にして独自に作成することもできます。その場合にはリストファイルを、config/chroot_local-packageslists/ の下に適当な名前で保存しておきます。

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

ところで /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++
 nqc
 g++
 
 # 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
 # lh_config --packages-lists xfce-nqc-ja

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

もちろん上記リストに含まれる日本語関連のパッケージだけを別リストとして
 config/chroot_local-packageslists/japanese
というファイルに保存して
 config/chroot_local-packageslists/xfce-nqc-ja
では単に
 #include <xfce>
 #include <japanese>
 nqc
 g++
 ...

のように 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 では config/ 以下のローカルファイルは削除されないので、不必要になったローカルな(=自分でコピーした)ファイルなどは手で削除する必要があります。 

 # lh_clean --all
 # lh_build

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

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

** USBメモリ用のディスクイメージの作成 [#q34cdb2d]

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

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

 # lh_config -b usb-hdd
 # lh_config --binary-images 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 というファイルができます。

** qemuでテスト [#se11582f]

 qemu -m 256 -hda binary.img

** USBメモリへの書き込み [#t967b989]

dd コマンドを使ってこのディスクイメージを USBメモリに書き込みます。
USBメモリ内のデータはすべて消去されてしまうので注意してください。
このとき USBメモリはマウントしていない状態で書き込みます。
もしUSBメモリのデバイス名が、/dev/sdb だとすると、

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

でイメージをコピーできます (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 -b iso
 # lh_config --binary-images iso

を忘れずに。


* 参考リンク [#n52d67d1]

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


2008年10月21日からのこのページのだいたいの訪問者数:
本日&counter(today);
昨日&counter(yesterday);
合計&counter(all);


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