- 追加された行はこの色です。
- 削除された行はこの色です。
//#nomenubar
松本成司 Seiji Matsumoto (matsu AT johnen.shinshu-u.ac.jp)
このページは、Debian Live System を使ったライブ・システム構築のメモです。
Debian GNU/Linux stable (lenny), testing (squeeze) あるいは unstable (sid) 上での作業を前提としています。
詳しくは[[本家の説明:http://wiki.debian.org/DebianLive]] や live-helper の manpage などを参考にしてください。
基本的には apt-get (あるいは aptitude) というコマンドを使ったことのある Debian あるいは Ubuntu のユーザ向けの情報ですが、「Debian って何???」という方はまず、[[Debian GNU/Linux のホームページ:http://www.jp.debian.org/]]あたりを読んでみてください。
[[簡易版を用意しました>DebianLive/Build-HOWTO-for-the-Impatient]]。うだうだした説明は必要ないという方は[[そちら>DebianLive/Build-HOWTO-for-the-Impatient]]をまずご覧ください。(2008-10-24)
目次
#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 のインストール (オプショナル) [#nf26d7cc]
通常のインストールと同様に、ビルドを実行するとパッケージの自動ダウンロードから始まります。
このとき一つの作業ディレクトリで作業している限りは deb ファイルが自動的にキャッシュに残るので、たとえ設定&ビルドを繰り返す場合でもダウンロードは繰り返しませんが、例えば複数台のマシンで作業させたり、すでにダウンロードした deb ファイルがたくさんあってそれらを使いたい場合には、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/packages/
*** qemu のインストール (オプショナル) [#h4ea419e]
できたイメージ を CD に焼き付ける前にテストしてみるために qemu もインストールしておきます。
# apt-get install qemu
*** wodim のインストール (オプショナル) [#fb1630d4]
wodim は cdrecord の後継となる CD/DVD ライティング・ツールです。他のツールがすでにインストールされている場合や CD に焼き付けない場合には不要です。
# apt-get install wodim
** 試しにビルドしてみる [#naef5521]
作業するためのディレクトリを適当に作って、そこに移動します。
$ mkdir debian-live
$ cd debian-live
ディレクトリ名は何でもかまいません。
以下は root で (あるいは sudo で) 作業します。
ここで「作業します」と書いたものの、実は
$ su
# lh_config && lh_build
という命令一発だけで、なんと Debian Live の ISO イメージができてしまいます。
しかし、せっかく apt-cacher もインストールしたので、ミラーサイトの設定をするまで lh_build でビルドするのは少しおあずけにします。
lh_build は root の権限が必要ですが、lh_config は一般ユーザでも実行可能です。
まず、
$ lh_config
を実行します。
これで、カレントディレクトリの下に config/ と scripts/ というディレクトリができているか確認します (以下のようにさらにオプションで種々の指定をする場合は、実はこのステップは必要ありません)。
config/ 以下にミラーサイトの設定を初め、ビルドのための種々の設定ファイルが置かれるわけですが、基本的にはそれらのファイルを直接編集しなくても lh_config コマンドだけで種々の設定が行えるようになっています。
テストビルドなので、とりあえずミラーサイトだけ指定しておきます。
以下の例ではローカルの apt-cacher 経由で 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 を使わないで、直接ミラーサイトを指定しておきます。
これでビルドします。
$ su
# 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イメージを wodim や cdrecord などのツールで CD に焼き付ければ、ライブCDのできあがりです。
例えば、
$ 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 --distribution lenny
$ lh_config --categories "main contrib non-free"
この例では 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 --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
でパッケージリスト指定ができます。
上で書いたように必要なパッケージをすべてこのリストに入れておくと --packages で追加パッケージを指定する必要はありません。
もちろん上記リストに含まれる日本語関連のパッケージだけを別リストとして
config/chroot_local-packageslists/japanese
というファイルに保存して
config/chroot_local-packageslists/xfce-nqc-ja
では単に
#include <xfce>
#include <japanese>
nqc
g++
...
のように include するのが本来のやり方だと思います。
*** 独自のリポジトリを追加 [#qe397947]
debian公式パッケージ以外のパッケージをインストールしたい場合には、追加のリポジトリを指定します。以下は、[[wicd:http://wicd.sourceforge.net/]]という無線LANの設定ツールを追加する場合の例です (wicd は sid には公式パッケージとして含まれますが、残念ながら lenny には含まれていません)。
まず、config/chroot_sources/
というディレクトリに、wicd.chroot と wicd.binary という名のファイルを作り、それぞれの中にリポジトリを指定します (どちらのファイルも中身は同じ)。
deb http://apt.wicd.net hardy extras
ファイル名は、foo.chroot, foo.binary のようなものであれば何でもかまいません。
次に、gpgキーを wicd.chroot.gpg, wicd.binary.gpg という名前でそのディレクトリにコピーします。これだけでそのリポジトリに含まれるパッケージを利用できます。
** パッケージインストール後の設定 [#t421448b]
*** ローカルファイルのコピー [#d2927528]
カスタマイズした設定ファイルや Debian のパッケージ管理ツールで管理されていないファイルは、あらかじめ
カスタマイズした設定ファイルや Debian のパッケージ管理ツールで管理されていないファイルは、あらかじめ config/chroot_local-includes/ というディレクトリにディレクトリ構造を保ったまま入れておきます。
config/chroot_local-includes/
にディレクトリ構造を保ったまま入れておきます。
例えば、カスタマイズした /etc/bash.bashrc (システムワイドな .bashrc ファイル) を使いたい場合には、config/chroot_local-includes/etc/ というディレクトリを作って
config/chroot_local-includes/etc/bash.bashrc
として保存しておきます。そうすればデフォルトの /etc/bash.bashrc が上書きされます。
config/chroot_local-includes/etc/bash.bashrc
として保存しておきます。そうすればデフォルトの bash.bashrc が上書きされます。
この機能の応用として、ユーザの初期設定のファイルを
config/chroot_local-includes/etc/skel/
config/chroot_local-includes/etc/skel/
の中に入れておいたり、非Debianパッケージを
config/chroot_local-includes/usr/local/
config/chroot_local-includes/usr/local/
の中に入れておけば、現在使用しているシステムを簡単にライブシステムに反映させることができます。
//*** ローカルなdebファイルのインストール
//ローカルな (非公式な) deb ファイルをインストールしたい場合には、deb ファイルを
// config/binary_local-debs/
//に入れておくとビルド時にインストールしてくれます。
*** シェル・コマンドの実行 [#n348e8a3]
インストール終了後、シェルコマンドを走らせたい場合には、シェルスクリプトとして
debian-live/config/chroot_local-hooks/ というディレクトリの中に適当な名前をつけて保存しておきます。
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
のような中身のファイルを、
config/chroot_local-hooks/90-uim
というファイル名で保存して
$ chmod +x config/chroot_local-hooks/90-uim
で実行可能にしておきます。
で実行可能にしておきます (ファイル名は適当に決めてください)。
** 再ビルド [#ff273bb9]
設定をしたあと、再度ISOイメージをビルドする際には lh_clean というコマンドで作業ディレクトリをきれいにしておきます。
ただし lh_clean では config/ 以下のローカルファイルは削除されないので、不必要になったローカルな(=自分でコピーした)ファイルなどは手で削除する必要があります。
$ su
# lh_clean --all
# lh_build
これでオリジナルのライブCDのイメージ (binary.iso) ができるはずです。
* USBメモリ用のライブシステムの作成 [#ba4dd651]
** USBメモリ用のディスクイメージの作成 [#q34cdb2d]
基本的な設定は ISOイメージの場合と同じです。
バイナリイメージとして usb-hdd を指定します (デフォルトでは iso になっています)。
$ lh_config --binary-images usb-hdd
ブート時のパラメータとして persistent を追加しておけばデータの保存が可能になります。
lh_config --bootappend-live "locale=ja_JP.UTF-8 keyb=jp kmodel=jp106 persistent quickreboot"
(quickrebootというオプションを指定することで再起動時にメディアの取り出しの確認を省略することができます)
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_config --binary-images iso
のあと
$ su
# lh_clean --binary
を忘れずに。
* 参考リンク [#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);