Live manual

Debian Live

<< previous toc next >>

Debian Live Manual

16. 例

この章では特定の Live システム活用事例向けの見本ビルドについて触れます。自分用の Live システムイメージのビルドが初めてであれば、まず3つのチュートリアルを順に調べてみることを勧めます。それぞれで他の例の利用、理解を支援する新しい技術を学ぶようになっているためです。

16.1 例の使用

提示している例を利用するためには、ビルドするために 要件 に記載されている要件一覧に合致するシステムと、 live-build のインストール で説明しているように live-build がインストールされていることが必要となります。

簡潔にするため、ここに挙げる例ではビルドで利用するローカルミラーを指定していないことに注意してください。ローカルミラーを利用するとダウンロード速度をかなり高速化できます。 ビルド時に利用するディストリビューションのミラー で説明しているように、lb config を使った場合はオプションを指定することができます。ビルドシステムのデフォルト値を /etc/live/build.conf でセットするともっと便利になります。このファイルを単純に作成し、対応する LB_MIRROR_* 変数に望ましいミラーをセットしてください。ビルドで利用する他のミラーは全て、これにより設定した値をデフォルト値として使います。例えば:

LB_MIRROR_BOOTSTRAP="http://mirror/debian/"
LB_MIRROR_CHROOT_SECURITY="http://mirror/debian-security/"
LB_MIRROR_CHROOT_BACKPORTS="http://mirror/debian-backports/"

16.2 チュートリアル 1: デフォルトイメージ

事例: 簡単な最初のイメージを作成して live-build の基礎を学びます。

このチュートリアルでは、live-build を利用した最初の演習としてbase パッケージ (Xorg は含まない) と Live システムを支援するパッケージだけを収録する、デフォルトの ISO hybrid 形式の Live システムイメージをビルドします。

これ以上簡単にすることはなかなかできないでしょう:

$ mkdir tutorial1 ; cd tutorial1 ; lb config

何か望むことがあれば config/ ディレクトリの内容を調べてください。ここには概略の設定があり、すぐ独自化もできますが、ここではそのままでデフォルトのイメージをビルドします。

スーパーユーザでイメージをビルドし、そのログを tee により保存します。

# lb build 2>&1 | tee build.log

Assuming all goes well, after a while, the current directory will contain live-image-amd64.hybrid.iso. This ISO hybrid image can be booted directly in a virtual machine as described in Testing an ISO image with Qemu and Testing an ISO image with VirtualBox, or else imaged onto optical media or a USB flash device as described in Burning an ISO image to a physical medium and Copying an ISO hybrid image to a USB stick, respectively.

16.3 チュートリアル 2: ウェブブラウザユーティリティ

事例: ウェブブラウザユーティリティイメージを作成し、独自化の適用方法を学びます。

このチュートリアルでは Live システムイメージを独自化する方法の紹介として、ウェブブラウザユーティリティとしての利用に適するイメージを作成します。

$ mkdir tutorial2
$ cd tutorial2
$ lb config
$ echo "task-lxde-desktop firefox-esr" >> config/package-lists/my.list.chroot

この例で LXDE を選択しているのは最小限のデスクトップ環境を提供するという私達の目的を反映しています。念頭に置いているこのイメージの目的はただ一つ、ウェブブラウザだけだからです。もっと細かく、config/includes.chroot/etc/iceweasel/profile/ でのウェブブラウザ向けデフォルト設定やウェブ上の様々な種類の内容を表示するための追加のサポートパッケージを提供することはできますが、それは読み手の演習として残しておきます。

チュートリアル 1 と同様、ここでもスーパーユーザでイメージをビルドし、ログを残します:

# lb build 2>&1 | tee build.log

ここでも チュートリアル 1 と同様、イメージがうまくできているか検証し、テストします。

16.4 チュートリアル 3: 私的イメージ

事例: プロジェクトを作成して個人用イメージをビルドします。USBメモリを使って好みのソフトウェアを自由に収録し、要求や設定を変更しながらこのイメージを続けて改訂します。

この個人用イメージを何度も改訂し、変更を追跡しておいて実験的に試してみてうまくいかなかったときには差し戻せるようにしたいため、人気のある#{git}#バージョン管理システムに設定を残します。 設定管理 で説明している auto スクリプトによる自動設定を経由した最善の実践も利用します。

16.4.1 最初の改訂

$ mkdir -p tutorial3/auto
$ cp /usr/share/doc/live-build/examples/auto/* tutorial3/auto/
$ cd tutorial3

auto/config を以下のように変更します:

#!/bin/sh

lb config noauto \
     --distribution stable \
     "${@}"

lb config を実行して設定ツリーを生成し、生成された auto/config スクリプトを使います:

$ lb config

ここでローカルパッケージ一覧を設定します:

$ echo "task-lxde-desktop spice-vdagent hexchat" >> config/package-lists/my.list.chroot

First, --distribution stable ensures that ⌠stable} is used instead of the default {testing⌡. Second, we have added spice-vdagent for easier testing the image in qemu. And finally, we have added an initial favourite package: hexchat.

そして、イメージをビルドします:

# lb build

最初の2つのチュートリアルとは異なり、2>&1 | tee build.logauto/build に書かれているため打ち込む必要がなくなっていることに注意してください。

( チュートリアル 1 にあるように) イメージをテストしてうまく機能する確信を得たら#{git}#リポジトリを初期化し、作成したばかりの auto スクリプトだけを追加し、最初のコミットを行います:

$ git init
$ cp /usr/share/doc/live-build/examples/gitignore .gitignore
$ git add .gitignore auto config
$ git commit -m "Initial import."

16.4.2 2回目の改訂

In this revision, we're going to clean up from the first build, replace the smplayer package with vlc package, rebuild, test and commit.

lb clean コマンドは前のビルドで生成したファイルを、パッケージを再びダウンロードせずに済むようにキャッシュを除いて全てきれいにします。これにより以降の lb build が全段階で再び実行され、必ず新しい設定でファイルを再生成するようになります。

# lb clean

Now install the vlc package before the lxde package chooses between smplayer, vlc and mplayer-gui in our local package list in config/package-lists/my.list.chroot:

$ echo "vlc task-lxde-desktop spice-vdagent hexchat" >> config/package-lists/my.list.chroot

再びビルドします:

# lb build

テストして満足したら次の改訂としてコミットします:

$ git commit -a -m "Replacing smplayer with vlc."

もちろん、config/ 以下のサブディレクトリにファイルを追加する等により設定をもっと複雑に変更することも可能です。新しい改訂版をコミットする際、config の最上位にある、LB_* 変数を設定しているファイルもビルドされてできたもので、lb clean と、対応する auto スクリプトを経由して再作成した lb config により常に整理されるものなので、手で編集したりコミットすることのないように注意してください。

一連のチュートリアルもこれで終わりです。もっと多様な独自化はできますが、ここまでの簡単な例で見てきた少しの機能を使うだけでも、イメージはほぼ無限の異なる組み合わせを作成することができます。この節の残りの例では、収集してきた Live システムのユーザの経験を元にした他の事例についていくつか触れます。

16.5 VNC 公衆クライアント

事例: live-build を使って、ブートすると直接 VNC サーバに接続するイメージを作成します。

ビルド用ディレクトリを作ってそこに概略設定を作成し、推奨パッケージを無効にして最小限のシステムを作成します。それから初期パッケージ一覧を2つ作成します: 1つ目は live-build により提供される Packages というスクリプト ( 生成されるパッケージ一覧 参照) により生成し、2つ目では xorggdm3metacityxvnc4viewer を収録します。

$ mkdir vnc-kiosk-client
$ cd vnc-kiosk-client
$ lb config --apt-recommends false
$ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
$ echo "xorg gdm3 metacity xtightvncviewer" > config/package-lists/my.list.chroot

APT の調整による容量の節約 で説明しているように、イメージが適切に機能するためには推奨パッケージを再びいくらか追加する必要があるかもしれません。

推奨パッケージ一覧を調べるための簡単な方法として apt-cache の利用があります。例えば:

$ apt-cache depends live-config live-boot

この例では live-config 及び live-boot により推奨されるパッケージを複数、再び収録する必要があることがわかっています: 自動ログインが機能するためには user-setup、システムをシャットダウンするための不可欠なプログラムとして sudo。他に、イメージをRAMにコピーできるようになる live-tools や Live メディアを最終的に取り出す eject を追加しておくと便利でしょう。それを反映すると:

$ echo "live-tools user-setup sudo eject" > config/package-lists/recommends.list.chroot

その後ディレクトリ /etc/skelconfig/includes.chroot に作成し、その中にデフォルトユーザ向けの独自の .xsession を置きます。このファイルは metacity を立ち上げて xvncviewer を起動し、192.168.1.2 にあるサーバのポート 5901 に接続します:

$ mkdir -p config/includes.chroot/etc/skel
$ cat > config/includes.chroot/etc/skel/.xsession << EOF
#!/bin/sh

/usr/bin/metacity &
/usr/bin/xvncviewer 192.168.1.2:1

exit
EOF

イメージをビルドします:

# lb build

楽しみましょう。

16.6 A minimal image for a 512MB USB key

Use case: Create a default image with some components removed in order to fit on a 512MB USB key with a little space left over to use as you see fit.

When optimizing an image to fit a certain media size, you need to understand the tradeoffs you are making between size and functionality. In this example, we trim only so much as to make room for additional material within a 512MB media size, but without doing anything to destroy the integrity of the packages contained within, such as the purging of locale data via the localepurge package, or other such "intrusive" optimizations. Of particular note, we use --debootstrap-options to create a minimal system from scratch and --binary image hdd to create an image that can be copied to a USB key.

$ lb config --binary-image hdd --apt-indices false --apt-recommends false --debootstrap-options "--variant=minbase" --firmware-chroot false --memtest none

イメージを適切に機能させるためには、最低でも --apt-recommends false オプションにより外されていた推奨パッケージを2つ追加しなおす必要があります。 APTの調整による容量の節約 を見てください。

$ echo "user-setup sudo" > config/package-lists/recommends.list.chroot

Additionally, you'll want to have network access, so another two recommended packages need to be re-added:

$ echo "ifupdown isc-dhcp-client" >> config/package-lists/recommends.list.chroot

ここで、普通の方法でイメージをビルドしてみます:

# lb build 2>&1 | tee build.log

On the author's system at the time of writing this, the above configuration produced a 298MiB image. This compares favourably with the 380MiB image produced by the default configuration in Tutorial 1, when --binary-image hdd is added.

--apt-indices false によりAPTの索引を省くことでかなりの容量を節約していますが、その代わりに Live システムで apt を使う前に apt-get update を実行する必要があります。--apt-recommends false により推奨パッケージを除外することで、本来あるはずのパッケージをいくらか除外する代わりにいくらか追加で容量を節約します。--debootstrap-options "--variant=minbase" で最初から最小限のシステムを構成します。--firmware-chroot false でファームウェアパッケージを自動的に収録しないようにすることでもさらに容量をいくらか節約します。そして最後に、--memtest none によりメモリテスターのインストールを抑制します。

Note: A minimal system can also be achieved using hooks, like for example the stripped.hook.chroot hook found in /usr/share/doc/live-build/examples/hooks. It may shave off additional small amounts of space and produce an image of 277MiB. However, it does so by removal of documentation and other files from packages installed on the system. This violates the integrity of those packages and that, as the comment header warns, may have unforeseen consequences. That is why using a minimal debootstrap is the recommended way of achieving this goal.

16.7 地域化した GNOME デスクトップとインストーラ

事例: GNOME デスクトップのイメージを作成し、スイス用の地域化とインストーラを収録する

We want to make an iso-hybrid image using our preferred desktop, in this case GNOME, containing all of the same packages that would be installed by the standard Debian installer for GNOME.

最初の問題は適切な言語用タスクの名前を判断する方法です。現在 live-build はこれを支援できません。運良くこれを試行錯誤で見つけられるかもしれませんが、そのためのツールがあります。grep-dctrl を利用して tasksel-data にあるタスクの説明を見つけることができます。そのため、準備としてこの両方が揃っていることを確認してください:

# apt-get install dctrl-tools tasksel-data

これで適切なタスクを検索できるようになりました。まず、

$ grep-dctrl -FTest-lang de /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: german

というコマンドにより、呼ばれたタスクが、簡単に言うとここではドイツだということがわかります。次は関連タスクを見つけます:

$ grep-dctrl -FEnhances german /usr/share/tasksel/descs/debian-tasks.desc -sTask
Task: german-desktop
Task: german-kde-desktop

ブート時に de_CH.UTF-8 ロケールを生成して ch のキーボードレイアウトを選択します。一緒に見ていきましょう。 メタパッケージの利用 から、タスクのメタパッケージには先頭に task- が付くことを思いだしてください。こういった言語のブートパラメータを指定し、それから優先度が標準のパッケージと発見したタスクの全メタパッケージをパッケージ一覧に追加するだけです:

$ mkdir live-gnome-ch
$ cd live-gnome-ch
$ lb config \
     --bootappend-live "boot=live components locales=de_CH.UTF-8 keyboard-layouts=ch" \
     --debian-installer live
$ echo '! Packages Priority standard' > config/package-lists/standard.list.chroot
$ echo task-gnome-desktop task-german task-german-desktop >> config/package-lists/desktop.list.chroot
$ echo debian-installer-launcher >> config/package-lists/installer.list.chroot

Note that we have included the debian-installer-launcher package to launch the installer from the live desktop.


<< previous toc next >>