B.2. preseed の利用

事前設定ファイルを最初に作成し、使用する場所に配置する必要があります。事前設定ファイルの作成は本付録で後ほど扱います。ネットワーク preseed の場合や、ファイルをフロッピーや USB メモリから読み込む場合、簡単に正しい位置に事前設定ファイルを配置できます。CD や DVD にファイルを含めたければ、ISO イメージを再度マスタリングする必要があります。initrd に含まれている事前設定ファイルを取り出す方法は、この文書では扱いません。debian-installer の開発者向け文書を当たってください。

事前設定ファイルの手本にできる事前設定ファイルのサンプルは、http://www.debian.org/releases/squeeze/example-preseed.txt から取得できます。このファイルは、この付録にある設定の断片を元にしています。

B.2.1. 事前設定ファイルの読み込み

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/urlurl に、preseed/filefile に短縮できることに注意してください。

B.2.2. preseed が質問するブートパラメータの利用

事前設定ファイルを preseed の各段階で使用できない場合でも、preseed の値をインストーラ起動時のコマンドラインに与えることで、インストールを自動で行えます。

preseed を使用せず指定した質問への答を設定したい場合にも、ブートパラメータを使用します。有用な使用法のサンプルが、このマニュアルの別の場所にあります。

debian-installer 内部で使用する値をセットするには、path/to/variable=value のように本付録の例にある preseed 変数を渡すだけです。値がターゲットシステムのパッケージを設定することがある場合、owner[28] 変数を、あらかじめ用意し、owner:path/to/variable=value で使用する必要があります。owner を指定しない場合、変数の値はターゲットシステムの debconf データベースにコピーされず、関連パッケージの設定中使用されません。

通常、この方法で答をあらかじめ設定しておくと、質問してきません。質問のデフォルト値を指定しているのに、まだ質問してくる場合には、「=」 演算子の代わりに、「?=」 を使用してください。項B.5.2. 「preseed を用いたデフォルト値変更」 もご覧ください。

ブートプロンプトによく使用される変数には、短いエイリアスがあることに注意してください。有効なエイリアスは、本サンプル内で完全な変数名の代わりに使用しています。例えば preseed/url 変数には url というエイリアスがあります。もう一つ、tasks というエイリアスがあり、これは tasksel:tasksel/first に変換されます。

ブートオプションの 「--」 は特別な意味を持ちます。最後の 「--」 に続きカーネルパラメータがあると、(インストーラがサポートするブートローダの場合) インストール済みのブートローダの設定にコピーされます。インストーラは、(事前設定オプションのような) オプションを認識すると、自動的にフィルタをかけます。

注意

現在の Linux カーネル (2.6.9 以降) では、最大 (インストーラがデフォルトで指定するオプションを含め) コマンドラインオプションを 32 個、環境オプションを 32 個受け取れます。この数を超えると、カーネルはパニック (クラッシュ) してしまいます (以前のカーネルではこの数字がもっと少ないです)。

ほとんどのインストールでは、ブートローダ設定ファイルにある (vga=normal のような) デフォルトオプションを安全に削除できるかもしれません。これにより preseed 用にもっとオプションを追加できます。

注意

ブートパラメータに空白を含んだ値を設定するのは、引用符で囲んだとしてもいつもうまくいくとは限りません。

B.2.3. 自動モード

かなりシンプルなコマンドラインをブートプロンプトに与え、任意の複雑なカスタマイズを自動インストールに対して行う Debian Installer の機能があります。これを説明するため、以下にブートプロンプトで使用できる例を示します。

auto url=autoserver

これは、DNS で autoserver の名前解決ができ (おそらく DHCP でローカルドメイン追加後)、そのマシンが DHCP サーバであることを前提にしています。example.com というドメインのサイトが、普通のまともな DHCP を設定していれば、http://autoserver.example.com/d-i/squeeze/./preseed.cfg から、preseed ファイルを取得するようになります。

URL (d-i/squeeze/./preseed.cfg) の最後の部分は、auto-install/defaultroot から取られています。デフォルトでは、将来のバージョンでコードネームを指定して移行していけるように、squeeze ディレクトリが含まれています。/./ は、その後に続くパスが確定するように、ルートからの相対パスを示します (preseed/include や preseed/run で使用)。これにより、完全な URL や / で始まるパス、前回 preseed が見つかった場所からの相対パスでファイルを指定できます。スクリプトの階層構造を壊さずに新しい場所に移動できる (例えば ウェブサーバで開始し、USB メモリにコピーする)、よりポータブルなスクリプトを構成するのに便利です。このサンプルでは、preseed ファイルの preseed/run/scripts/late_command.sh が設定されている場合、http://autoserver.example.com/d-i/squeeze/./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 のような物かもしれません。これが必要だと思うのなら、名前空間の衝突を避けるために メーリングリストで提案してください。おそらくパラメータのエイリアスが追加されます。

auto ブートラベルは、まだどこにも定義されていません。カーネルのコマンドラインに、単にパラメータを 2 つ auto=true priority=critical を追加すると、同じ効果を得られます。auto パラメータは auto-install/enable のエイリアスで、true に設定するとロケールやキーボードの質問を preseed で行えるよう遅らせます。また、prioritydebconf/priority のエイリアスで、critical に設定すると、優先度の低い質問を抑制するようになります。

DHCP を使用してインストールの自動化を行う際に、関連する追加オプションは以下の通りです。interface=auto netcfg/dhcp_timeout=60 これはマシンが最初の使用可能 NIC を選択し、DHCP 問い合わせに対する返答をもっと我慢強く待つようになります。

ティップ

スクリプトやクラスのサンプルを含む、フレームワークの使用法についての大規模なサンプルが、開発者のウェブサイトにあります。そこで得られるサンプルでも、事前設定の独創的な使用を成し遂げる、たくさんのすばらしい効果があります。

B.2.4. preseed で利用できるエイリアス

以下のエイリアスは、(自動モード) preseed の際に、役に立つ場合があります。これらは単に、質問名の短いエイリアスであることに注意してください。そのうえで、常に値を指定する必要があります。例えば、auto=trueinterface=eth0 のようにです。

auto auto-install/enable
classes auto-install/classes
fb debian-installer/framebuffer
language debian-installer/language
country debian-installer/country
locale debian-installer/locale
priority debconf/priority
ファイル preseed/file
url preseed/url
interface netcfg/choose_interface
hostname    netcfg/get_hostname
domain netcfg/get_domain
protocol mirror/protocol
suite mirror/suite

B.2.5. 事前設定ファイルを指定するための DHCP の利用方法

事前設定ファイルをネットワークからダウンロードするよう指定するのに、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 の完全自動インストールは、充分注意しなければ行うべきではありません。



[28] debconf 変数 (やテンプレート) の所有者 (owner) は、debconf テンプレートに含まれるように、通常パッケージ名です。インストーラ自体が使用する値は、「d-i」 になっています。テンプレートや変数は、複数の owner を持て、パッケージを完全削除する際に debconf データベースから削除できるかどうかを決定するのに利用されます。