事前設定ファイルを最初に作成し、使用する場所に配置する必要があります。
事前設定ファイルの作成は本付録で後ほど扱います。
ネットワーク preseed の場合や、
ファイルをフロッピーや USB メモリから読み込む場合、
簡単に正しい位置に事前設定ファイルを配置できます。
CD や DVD にファイルを含めたければ、
ISO イメージを再度マスタリングする必要があります。
initrd に含まれている事前設定ファイルを取り出す方法は、
この文書では扱いません。debian-installer
の開発者向け文書を当たってください。
事前設定ファイルの手本にできる事前設定ファイルのサンプルは、 ../example-preseed.txt から取得できます。 このファイルは、この付録にある設定の断片を元にしています。
initrd preseed を使用する場合、preseed.cfg
というファイルが initrd のルートディレクトリに確実にある必要があります。
インストーラは、このファイルがあるか自動的にチェックし、読み込みます。
他の preseed 方法では、起動時にどのファイルを読み込むか、
インストーラに指定する必要があります。
通常、カーネルのブートパラメータで渡して行います。
これは起動時に手動で与えるか、
ブートローダ設定ファイル (例: syslinux.cfg
) を編集し、
カーネルへの append 行の最後にパラメータを追加して与えます。
ブートローダの設定で事前設定ファイルを指定する場合、
設定を変更すれば、インストーラの起動時に ENTER を押す必要はありません。
syslinux ではこの設定をするのに、
syslinux.cfg
でタイムアウトを 1
にします。
インストーラが確実に正しい事前設定ファイルを取得するのに、 このファイルのチェックサムを指定できます。 現在、これには md5sum 値の指定が必要です。 指定した値と事前設定ファイルの値は一致しなければなりません。 一致しない場合は、インストーラは事前設定ファイルを使用しません。
ブートパラメータの設定: - netboot の場合: preseed/url=http://host/path/to/preseed.cfg preseed/url/checksum=5da499872becccfeda2c4872f9171c3d - リマスタリングした CD で起動する場合: preseed/file=/cdrom/preseed.cfg preseed/file/checksum=5da499872becccfeda2c4872f9171c3d - USB メディアで起動する場合 (事前設定ファイルを USB メモリの トップレベルディレクトリに置くこと): preseed/file=/hd-media/preseed.cfg preseed/file/checksum=5da499872becccfeda2c4872f9171c3d
ブートパラメータに渡す際に、
preseed/url
は url
に、
preseed/file
は file
に
短縮できることに注意してください。
事前設定ファイルを preseed の各段階で使用できない場合でも、 preseed の値をインストーラ起動時のコマンドラインに与えることで、 インストールを自動で行えます。
preseed を使用せず指定した質問への答を設定したい場合にも、 ブートパラメータを使用します。 有用な使用法のサンプルが、このマニュアルの別の場所にあります。
debian-installer
内部で使用する値をセットするには、
のように本付録の例にある preseed 変数を渡すだけです。
値がターゲットシステムのパッケージを設定することがある場合、
owner[16] 変数を、あらかじめ用意し、
path/to/variable
=value
で使用する必要があります。
owner を指定しない場合、
変数の値はターゲットシステムの debconf データベースにコピーされず、
関連パッケージの設定中使用されません。
owner
:path/to/variable
=value
ブートプロンプトによく使用される変数には、
短いエイリアスがあることに注意してください。
有効なエイリアスは、本サンプル内で完全な変数名の代わりに使用しています。
特に、preseed/url
変数には url
というエイリアスがあり、短い URL が使えることによる技がいくつかあります。
もう一つ、tasks
というエイリアスがあり、
これは tasksel:tasksel/first
に変換されます。
ブートオプションの 「--」 は特別な意味を持ちます。 最後の 「--」 に続きカーネルパラメータがあると、 (インストーラがサポートするブートローダの場合) インストール済みのブートローダの設定にコピーされます。 インストーラは、(事前設定オプションのような) オプションを認識すると、 自動的にフィルタをかけます。
現在の Linux カーネル (2.6.9 以降) では、 最大 (インストーラがデフォルトで指定するオプションを含め) コマンドラインオプションを 32 個、環境オプションを 32 個受け取れます。 この数を超えると、カーネルはパニック (クラッシュ) してしまいます。 (初期のカーネルではこの数字がもっと少ないです)
ほとんどのインストールでは、ブートローダ設定ファイルにある
(vga=normal
のような)
デフォルトオプションを安全に削除できるかもしれません。
これにより preseed 用にもっとオプションを追加できます。
ブートパラメータに空白を含んだ値を設定するのは、 引用符で囲んだとしてもいつもうまくいくとは限りません。
かなりシンプルなコマンドラインをブートプロンプトに与え、 任意の複雑なカスタマイズを自動インストールに対して行う Debian Installer の機能があります。 これを説明するため、以下にブートプロンプトで使用できる例を示します。
auto url=autoserver
これは、DNS で autoserver
の名前解決ができ
(おそらく DHCP でローカルドメイン追加後)、
そのマシンが DHCP サーバであることを前提にしています。
example.com
というドメインのサイトが、
普通のまともな DHCP を設定していれば、
http://autoserver.example.com/d-i/etch/./preseed.cfg
から、preseed ファイルを取得するようになります。
URL (d-i/etch/./preseed.cfg
) の最後の部分は、
auto-install/defaultroot
から取られています。
デフォルトでは、将来のバージョンでコードネームを指定して移行していけるように、
etch
ディレクトリが含まれています。
/./
は、その後に続くパスが確定するように、
ルートからの相対パスを示します (preseed/include や preseed/run で使用)。
これにより、完全な URLや / で始まるパス、
前回 preseed が見つかった場所からの相対パスでファイルを指定できます。
スクリプトの階層構造を壊さずに新しい場所に移動できる
(例えば ウェブサーバで開始し、USB メモリにコピーする)、
よりポータブルなスクリプトを構成するのに便利です。
このサンプルでは、preseed ファイルの preseed/run
に
/scripts/late_command.sh
が設定されている場合、
http://autoserver.example.com/d-i/etch/./scripts/late_command.sh
からファイルを取得します。
手元に DHCP や DNS のインフラがない場合や、
preseed.cfg
のデフォルトパスを使用したくない場合でも、
きちんとした URL を使用でき、/./
要素を使用しない場合は、
パスの開始点を決定できます (例えば URL の 3 つ目の /
)。
以下は、手元のネットワークインフラから最低限必要な物のサンプルです。
auto url=http://192.168.1.2/path/to/mypreseed.file
この方法は次のように動作します。
URL が見つからない場合、http だと仮定します。
ホスト名セクションにピリオドがなければ、DHCP から引き出して追加します。
ホスト名の後に /
がなければ、デフォルトパスを追加します。
URL を指定するのに加えて、
debian-installer
自身の振る舞いには直接影響しない設定も追加できますが、
読み込んだ preseed ファイルの preseed/run
で指定した、
スクリプトに渡すことができます。
現在のところ、classes
というエイリアスを持つ、
auto-install/classes
のサンプルのみです。
以下のように使用します。
auto url=example.com
classes=class_A;class_B
classes にはこのサンプルでは、インストールするシステムのタイプや、 地域化を指定するのに使用できます。
この概念はもちろん拡張でき、もしそうする場合、
auto-install 名前空間を使用するのが妥当です。
ですから、次にあなたのスクリプトで使用する
auto-install/style
のような物かもしれません。
これが必要だと思うのなら、名前空間の衝突を避けるために
<debian-boot@lists.debian.org>
メーリングリストで提案してください。
おそらくパラメータのエイリアスが追加されます。
auto
ブートラベルは、
どのアーキテクチャでもまだ定義されていません。
カーネルのコマンドラインに、単にパラメータを 2 つ
auto=true priority=critical
を追加すると、
同じ効果を得られます。
auto
パラメータは auto-install/enable
のエイリアスで、ロケールやキーボードの質問を preseed で行えるよう遅らせます。
また、priority
は debconf/priority
のエイリアスで、critical
に設定すると、
優先度の低い質問を抑制するようになります。
DHCP を使用してインストールの自動化を行う際に、
関連する追加オプションは以下の通りです。interface=auto
netcfg/dhcp_timeout=60
これはマシンが最初の使用可能 NIC を選択し、
DHCP 問い合わせに対する返答をもっと我慢強く待つようになります。
スクリプトやクラスのサンプルを含む、 フレームワークの使用法についての大規模なサンプルが、 開発者のウェブサイトにあります。 そこで得られるサンプルでも、事前設定の独創的な使用を成し遂げる、 たくさんのすばらしい効果があります。
以下のエイリアスが (自動モード) preseed を使用する際に利用できます。
auto | auto-install/enable |
classes | auto-install/classes |
fb | debian-installer/framebuffer |
locale | debian-installer/locale |
priority | debconf/priority |
file | preseed/file |
url | preseed/url |
interface | netcfg/choose_interface |
hostname | netcfg/get_hostname |
domain | netcfg/get_domain |
protocol | mirror/protocol |
suite | mirror/suite |
事前設定ファイルをネットワークからダウンロードするよう指定するのに、 DHCP も使用できます。DHCP はファイル名の指定ができます。 通常これは netboot のファイルですが、URL 形式になっていると、 ネットワーク preseed をサポートするインストールメディアが、 URL からファイルをダウンロードし、事前設定ファイルとして使用します。 以下は、ISC DHCP サーバのバージョン 3 用 dhcpd.conf で設定するサンプルです。
if substring (option vendor-class-identifier, 0, 3) = "d-i" { filename "http://host/preseed.cfg"; }
上記の例は、 "d-i" を名乗る DHCP クライアントにこのファイル名を渡すよう制限されており、 通常の DHCP クライアントではなく、 インストーラにのみ影響を与えることに注意してください。 この文字列で、ネットワーク上の全マシンに preseed でインストールするのではなく、 特定のホストに対して行うようにもできます。
DHCP preseed を使用するよい方法は、自分のネットワークには、 Debian ミラーサイトのような preseed の値のみ指定することです。 自分のネットワークにこの方法でインストールすると、 選択したよいミラーサイトから自動で取得しますが、 インストールの残りのプロセスはインタラクティブに行われます。 DHCP preseed を用いた Debian の完全自動インストールは、 充分注意しなければ行うべきではありません。
[16] debconf 変数 (やテンプレート) の所有者 (owner) は、 debconf テンプレートに含まれるように、通常パッケージ名です。 インストーラ自体が使用する値は、「d-i」 になっています。 テンプレートや変数は、複数の owner を持て、パッケージを完全削除する際に debconf データベースから削除できるかどうかを決定するのに利用されます。