:B~ 収録内容の独自化

1~customizing-contents 収録内容の独自化

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

2~includes Includes

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

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

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

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

3~live-chroot-local-includes Live/chroot ローカルインクルード

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

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

code{

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

}code

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

code{

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

}code

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

3~binary-local-includes バイナリローカルインクルード

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

code{

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

}code

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

2~hooks フック

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

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

3~chroot-local-hooks chroot ローカルフック

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

3~ バイナリローカルフック

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

3~boot-time-hooks ブート時フック

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

2~ Debconf 質問の preseed

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

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