Live manual Debian Live

# Debian Live Manual

# 例

803

# 16. 例

804

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

805

16.1 例の使用

806

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

807

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

808

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

809

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

810

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

811

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

812

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

813

$ mkdir tutorial1 ; cd tutorial1 ; lb config

814

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

815

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

816

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

817

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.

818

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

819

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

820

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

821

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

822

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

823

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

824

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

825

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

826

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

827

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

828

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

829

16.4.1 最初の改訂

830

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

831

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

832

#!/bin/sh
lb config noauto \
--distribution stable \
"${@}"

833

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

834

$ lb config

835

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

836

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

837

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.

838

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

839

# lb build

840

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

841

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

842

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

843

16.4.2 2回目の改訂

844

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

845

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

846

# lb clean

847

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`:

848

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

849

再びビルドします:

850

# lb build

851

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

852

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

853

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

854

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

855

16.5 VNC 公衆クライアント

856

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

857

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

858

$ 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

859

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

860

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

861

$ apt-cache depends live-config live-boot

862

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

863

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

864

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

865

$ 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

866

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

867

# lb build

868

楽しみましょう。

869

16.6 A minimal image for a 512MB USB key

870

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.

871

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.

872

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

873

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

874

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

875

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

876

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

877

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

878

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

879

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.

880

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

881

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.

882

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

883

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

884

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.

885

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

886

# apt-get install dctrl-tools tasksel-data

887

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

888

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

889

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

890

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

891

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

892

$ 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

893

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