Live manual Debian Live

# Debian Live Manual

# 例

770

# 16. 例

771

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

772

16.1 例の使用

773

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

774

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

775

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

776

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

777

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

778

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

779

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

780

$ mkdir tutorial1 ; cd tutorial1 ; lb config

781

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

782

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

783

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

784

すべてがうまくいくとして、しばらくすると現在のディレクトリに `live-image-i386.hybrid.iso` が出来上がります。この ISO hybrid イメージは Qemu でのISOイメージのテスト や VirtualBox でのISOイメージのテスト で説明しているように仮想マシンで直接、あるいは 物理メディアへのISOイメージ書き込み や USBメモリへの ISO hybrid イメージのコピー で説明しているように光学メディアやUSBフラッシュ機器に書き込んだイメージ、それぞれからブートできます。

785

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

786

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

787

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

788

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

789

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

790

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

791

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

792

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

793

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

794

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

795

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

796

16.4.1 最初の改訂

797

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

798

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

799

#!/bin/sh
lb config noauto \
--architectures i386 \
--linux-flavours 686-pae \
"${@}"

800

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

801

$ lb config

802

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

803

$ echo "task-lxde-desktop iceweasel xchat" >> config/package-lists/my.list.chroot

804

まず、`--architectures i386` により必ず `amd64` ビルドシステムでほとんどのマシンでの利用に適応する32ビット版をビルドするようにします。次に、相当に古いシステムでのこのイメージの利用を想定しないため `--linux-flavours 686-pae` を使います。lxde のタスクメタパッケージを選択して最小限のデスクトップを揃えます。最後に、好みのパッケージの初期値として iceweasel と xchat を追加しています。

805

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

806

# lb build

807

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

808

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

809

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

810

16.4.2 2回目の改訂

811

この改訂では、最初のビルドをきれいにし、vlc パッケージを設定に追加して再ビルド、テストコミットを行います。

812

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

813

# lb clean

814

vlc パッケージを `config/package-lists/my.list.chroot` のローカルパッケージ一覧に追記します:

815

$ echo vlc >> config/package-lists/my.list.chroot

816

再びビルドします:

817

# lb build

818

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

819

$ git commit -a -m "Adding vlc media player."

820

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

821

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

822

16.5 VNC 公衆クライアント

823

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

824

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

825

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

826

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

827

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

828

$ apt-cache depends live-config live-boot

829

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

830

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

831

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

832

$ 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

833

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

834

# lb build

835

楽しみましょう。

836

16.6 128MB USB メモリ向けの基本イメージ

837

事例: 128MB USB メモリに収まるように構成要素をいくらか削除して、収まることがわかるように容量を少し空けたデフォルトのイメージの作成。

838

特定のメディア容量に収まるようにイメージを最適化する場合、イメージのサイズと機能はトレードオフになることを理解する必要があります。この例では削るだけにしているので 128MB のメディアサイズ内に何か追加する余地をできるだけ残していますが、localepurge パッケージによるロケールの完全削除や収録しているパッケージ内の一貫性は何も壊していません。また、その他の「押し付ける」ような最適化もしていません。特に注目すべきなのは、最小限のシステムを最初から作成するために `--debootstrap-options` を利用している点です。

839

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

840

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

841

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

842

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

843

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

844

これを書いている時点の著者のシステムでは、上記の設定により 110MB のイメージができました。これを チュートリアル 1 のデフォルト設定で作成された 192MB のイメージと都合良く比較してみましょう。

845

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

846

注意: 最小限のシステムの構成はフックを使って、例えば `/usr/share/doc/live-build/examples/hooks` にある `stripped.hook.chroot` でも実現できます。これは容量をさらに少し減らし、62MB のイメージを生成します。しかしこれはその実現のために、システムにインストールしたパッケージから文書その他のファイルを削除しています。これはそうしたパッケージの完全性を破壊し、ヘッダで警告しているように思わぬ結果をもたらすかもしれません。それが、この目標のために推奨するのが最小限の debootstrap を利用する方法になっている理由です。

847

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

848

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

849

好みのデスクトップを使った i386 アーキテクチャ向けの iso-hybrid イメージを作りたい。ここでは GNOME を使用して、GNOME 用の標準の Debian インストーラによりインストールされるのと同一のパッケージを全て収録します。

850

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

851

# apt-get install dctrl-tools tasksel-data

852

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

853

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

854

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

855

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

856

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

857

$ mkdir live-gnome-ch
$ cd live-gnome-ch
$ lb config \
-a i386 \
--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

858

のようになります。インストーラを Live デスクトップから立ち上げるために debian-installer-launcher パッケージを収録していることに注意してください。さらに、インストーラを立ち上げる機能が適切に動作するために現在必要な `586` 用のカーネルがデフォルトで収録されます。