:B~ ツールの概要 1~overview-of-tools ツールの概要 この章では Live システムのビルドに使う3つの主要ツール live-build、live-boot、live-config の概要をまとめています。 2~live-build live-build パッケージ live-build は Live システムをビルドするためのスクリプト集です。収録されているスクリプトは「コマンド」としても言及されています。 live-build の背景となる考え方は、設定ディレクトリを使って Live イメージのビルドに関するあらゆる面を完全に自動化、独自化するフレームワークにしようということです。 その多くの概念は /{debhelper}/ で Debian パッケージをビルドするのと同様です: _* スクリプトには操作を制御するために中心となる位置があります。/{debhelper}/ ではパッケージツリーの #{debian/}# サブディレクトリがこれにあたります。例えば dh_install は、他にもありますが、#{debian/install}# というファイルを探して特定のバイナリパッケージに収録すべきファイルを判断します。ほぼ同様に live-build は設定全体を #{config/}# サブディレクトリ以下に保管します。 _* スクリプトは独立しています - つまり、各コマンドの実行は常に安全です。 /{debhelper}/ とは異なり、live-build は設定ディレクトリの骨格を生成するツールを提供しています。これは /{dh-make}/ 等のツールに似ていると言っても良いでしょう。こういったツールのさらなる情報については、この節の残りで最も重要な4つのコマンドについて触れているので続きを読んでください。各コマンドで先行している #{lb}# は live-build コマンドのラッパーであることに注意してください。 _* *{lb config}*: Live システム設定ディレクトリの初期化を担当します。さらなる情報については {lb config コマンド}#lb-config を見てください。 _* *{lb build}*: Live システムのビルドの開始を担当します。さらなる情報については {lb build}#lb-build を見てください。 _* *{lb clean}*: Live システムでビルドされた部分の掃除を担当します。さらなる情報については {lb clean コマンド}#lb-clean を見てください。 3~lb-config #{lb config}# コマンド {live-build}#live-build で説明しているように、live-build を構成するスクリプトは #{config/}# という名の単一のディレクトリから #{source}# コマンドで指定された設定を読み込みます。このディレクトリを手作業により構成するのは時間がかかる上に誤りの元となりやすいため、#{lb config}# コマンドを使って初期設定ツリーの骨格を作成できるようになっています。 引数を付けずに #{lb config}# を実行すると #{config/}# サブディレクトリを作成してデフォルト設定がいくらか指定された設定ファイルを配置し、#{auto/}# 及び #{local/}# という骨格となる2つのツリーを作成します。 code{ $ lb config [2015-01-06 19:25:58] lb config P: Creating config tree for a debian/stretch/i386 system P: Symlinking hooks... }code とても基本的なイメージを必要とするユーザや後で #{auto/config}# を使ってもっと全面的な設定を行おうと考えている場合は #{lb config}# を引数無しで使うのが適切でしょう (詳細は{設定管理}#managing-a-configuration 参照)。 通常はオプションをいくらか指定します。例えばイメージのビルド時に利用するパッケージマネージャーを指定する場合: code{ $ lb config --apt aptitude }code 多数のオプションを指定することもできます: code{ $ lb config --binary-images netboot --bootappend-live "boot=live components hostname=live-host username=live-user" ... }code 利用可能なオプションの全容は #{lb_config}# man ページにあります。 3~lb-build #{lb build}# コマンド #{lb build}# コマンドは #{config/}# ディレクトリから設定を読み込みます。それから Live システムのビルドに必要な低レベルコマンドを実行します。 3~lb-clean #{lb clean}# コマンド ビルドによる様々な生成物を削除するのは #{lb clean}# コマンドの役目で、それによりその後のビルドがきれいな状態から始められるようになります。デフォルトで #{chroot}#、#{バイナリ}#、#{ソース}#の段階が対象となりますが、キャッシュはそのまま残されます。また、個々の段階を個別に掃除することもできます。例えばバイナリ段階にのみ影響のある変更を加えた場合は新しいバイナリをビルドする前に #{lb clean --binary}# を実行します。変更がパッケージ収集やパッケージのキャッシュを無効化するようなもの、例えば #{--mode}# や #{--architecture}#、#{--bootstrap}# を変更した場合は #{lb clean --purge}# を実行しないといけません。オプションの全容については #{lb_clean}# man ページを見てください。 2~live-boot live-boot パッケージ live-boot は live-build 等により作成される Live システムのブート時に利用する initramfs の生成に利用する /{initramfs-tools}/ のフックを提供するスクリプト集です。Live システムのISOやネットワーク経由のブートに利用するtarアーカイブ、USBメモリ向けイメージも対象です。 ブート時にはルートファイルシステム (squashfs のような圧縮ファイルシステムのイメージであることが多い) が保存されている #{/live/}# ディレクトリを収録する読み取り専用メディアを探します。見つかった場合は Debian 類似システムでそのメディアからブートできるように、aufs を使って書き込み可能な環境を作成します。 Debian の初期RAMファイルシステムについてのさらなる情報は http://kernel-handbook.alioth.debian.org/ にある Debian Linux カーネルハンドブックの initramfs の章にあります。 2~live-config live-config パッケージ live-config はブート時に live-boot の後に実行して Live システムを自動的に設定するためのスクリプト集で構成されています。ホスト名やロケール、タイムゾーンの設定や live ユーザの作成、cron ジョブの抑制、live ユーザの自動ログイン等のタスクを処理します。