Live manual Debian Live

# Debian Live Manual

# 収録内容の独自化

488

# 9. 収録内容の独自化

489

この章では収録するパッケージを単に選択だけにとどまらない、微調整まで含めた Live システムの収録内容の独自化について説明します。インクルードにより Live システムイメージの任意のファイルを追加、置換できるようになり、フックによりビルド時及びブート時の異なる段階で任意のコマンドを実行できるようになり、preseed が debconf の質問に対する回答を提供することでパッケージのインストール時に設定できるようになります。

490

9.1 Includes

491

理想的なのは変更されていないパッケージにより提供されるファイルを Live システムで完全に収録することではありますが、ファイルを使って内容をいくらか提供あるいは変更することが便利なこともあります。インクルードを使うと Live システムイメージ中の任意のファイルを追加 (または置換) することができるようになります。live-build ではこれを使う仕組みを2つ提供しています:

492

- chroot ローカルインクルード: chroot/Live ファイルシステムに対してファイルの追加や置換ができるようになります。さらなる情報については、 Live/chroot ローカルインクルード を見てください。

493

- バイナリローカルインクルード: バイナリイメージ中のファイルの追加や置換ができるようになります。さらなる情報については、 バイナリローカルインクルード を見てください。

494

「Live」及び「バイナリ」イメージの違いについてのさらなる情報は、 用語 を見てください。

495

9.1.1 Live/chroot ローカルインクルード

496

chroot ローカルインクルードを使って chroot/Live ファイルシステム中のファイルの追加や置換を行い、それを Live システムで利用することができます。代表的な使い方として Live システムで利用するユーザディレクトリ (`/etc/skel`) の骨格を構成させ、live ユーザのホームディレクトリを作成するということがあります。別の使い方としては設定ファイルを提供し、そのまま加工せずイメージ中に追加または置換するということがあります。加工が必要な場合は chroot ローカルフック を見てください。

497

ファイルを収録するには `config/includes.chroot` ディレクトリに単純に追加します。このディレクトリが Live システムのルートディレクトリ `/` に対応します。例えば Live システムにファイル `/var/www/index.html` を追加する場合:

498

$ mkdir -p config/includes.chroot/var/www
$ cp /path/to/my/index.html config/includes.chroot/var/www

499

それから設定は以下の配置になっているでしょう:

500

-- config
[...]
|-- includes.chroot
| `-- var
| `-- www
| `-- index.html
[...]

501

chroot ローカルインクルードはパッケージがインストールされた後にインストールされるので、パッケージによりインストールされたファイルは上書きされます。

502

9.1.2 バイナリローカルインクルード

503

文書やビデオ等の内容をメディアのファイルシステムに収録して、メディアを差し込んで Live システムをブートしなくてもすぐにアクセスできるようにするのにバイナリローカルインクルードを使えます。これは chroot ローカルインクルードと同様の方法で動作します。例えばファイル `~/video_demo.*` が Live システムの実演ビデオで、リンク先の HTML 索引ページでそれを説明しているものと仮定しましょう。単純に内容を `config/includes.binary/` にコピーします:

504

$ cp ~/video_demo.* config/includes.binary/

505

これでファイルは Live メディアの最上位ディレクトリに現れます。

506

9.2 フック

507

フックを利用すると、ビルドの chroot 及びバイナリの段階でコマンドを実行し、イメージを独自化できます。ビルドするのが Live イメージなのか普通のシステムのイメージなのかにより、フックはそれぞれ `config/hooks/live` または `config/hooks/normal` に場所/置かないといけません。この2つはビルド環境内で実行されるため、ローカルフックとよく呼ばれます。

508

ブート時のフックもあり、イメージのビルド完了後のブートの過程でコマンドを実行できます。

509

9.2.1 chroot ローカルフック

510

chroot の段階でコマンドを実行するにはファイル名末尾が `.hook.chroot` でコマンドを収録するフックスクリプトを `config/hooks/live` または `config/hooks/normal` ディレクトリに作成します。フックは残りの chroot 設定の適用後に chroot 内で実行されるため、フックの実行に必要なパッケージやファイルを全て確実に設定に収録することを忘れないようにしてください。代表的な chroot の様々な独自化タスクについて `/usr/share/doc/live-build/examples/hooks` で提供されている chroot フックスクリプトの例を確認してください。この例からコピーやシンボリックリンクを作成して自分の設定で使えます。

511

9.2.2 バイナリローカルフック

512

バイナリ段階でコマンドを実行するには、コマンドを収録するフックスクリプトを、末尾に `.hook.binary` を付けて `config/hooks/live` または `config/hooks/normal` ディレクトリに作成します。このフックは他の binary_checksums を除いたバイナリコマンドを全て実行した後の、バイナリコマンドのほぼ最後に実行されます。フック内のコマンドは chroot 内で実行されるのではないため、ビルドツリー外のファイルを変更することのないように注意してください。変更するとビルドシステムが機能しなくなるかもしれません! 代表的なバイナリ独自化タスクについて `/usr/share/doc/live-build/examples/hooks` で提供されているバイナリフックスクリプトの例を確認してください。この例からコピーやシンボリックリンクを作成して自分の設定で使えます。

513

9.2.3 ブート時フック

514

ブート時にコマンドを実行するために man ページの「独自化」節で説明されている live-config フックを提供することができます。`/lib/live/config/` で提供している live-config 独自のフックを、実行順を示す頭の番号に注意して調べてください。それから自分のフックに実行順を示す適切な番号を頭に付けて、`config/includes.chroot/lib/live/config/` 内の chroot ローカルインクルードか、 変更したあるいはサードパーティのパッケージのインストール で説明している独自パッケージとして提供してください。

515

9.3 Debconf 質問の preseed

516

`config/preseed/` ディレクトリにある、末尾が段階 (`.chroot` か `.binary`) に続いて `.cfg` で終わるファイルは debconf の preseed ファイルと見なされ、対応する段階で live-build により `debconf-set-selections` を使ってインストールされます。

517

debconf のさらなる情報については、debconf パッケージの `debconf(7)` を見てください。