: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 ユーザのホームディレクトリを作成するということがあります。別の使い方としては設定ファイルを提供し、そのまま加工せずイメージ中に追加または置換するということがあります。加工が必要な場合は {Live/chroot ローカルフック}#live-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 及び バイナリの段階でコマンドを実行し、イメージを独自化できます。 3~live-chroot-local-hooks Live/chroot ローカルフック chroot の段階でコマンドを実行するにはファイル名末尾が #{.hook.chroot}# でコマンドを収録するフックスクリプトを #{config/hooks/}# ディレクトリに作成します。フックは残りの chroot 設定の適用後に chroot 内で実行されるため、フックの実行に必要なパッケージやファイルを全て確実に設定に収録することを忘れないようにしてください。代表的な chroot の様々な独自化タスクについて #{/usr/share/doc/live-build/examples/hooks}# で提供されている chroot フックスクリプトの例を確認してください。この例からコピーやシンボリックリンクを作成して自分の設定で使えます。 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 で説明している独自パッケージとして提供してください。 3~ バイナリローカルフック バイナリ段階でコマンドを実行するには、コマンドを収録するフックスクリプトを、末尾に #{.hook.binary}# を付けて #{config/hooks/}# ディレクトリに作成します。このフックは他の binary_checksums を除いたバイナリコマンドを全て実行した後の、バイナリコマンドのほぼ最後に実行されます。フック内のコマンドは chroot 内で実行されるのではないため、ビルドツリー外のファイルを変更することのないように注意してください。変更するとビルドシステムが機能しなくなるかもしれません! 代表的なバイナリ独自化タスクについて #{/usr/share/doc/live-build/examples/hooks}# で提供されているバイナリフックスクリプトの例を確認してください。この例からコピーやシンボリックリンクを作成して自分の設定で使えます。 2~ Debconf 質問の preseed #{config/preseed/}# ディレクトリにある、末尾が段階 (#{.chroot}# か #{.binary}#) に続いて #{.cfg}# で終わるファイルは debconf の preseed ファイルと見なされ、対応する段階で live-build により #{debconf-set-selections}# を使ってインストールされます。 debconf のさらなる情報については、/{debconf}/ パッケージの #{debconf(7)}# を見てください。