事前設定ファイルを最初に作成し、使用する場所に配置する必要があります。事前設定ファイルの作成は本付録で後ほど扱います。network preseed の場合や、ファイルを USB メモリから読み込む場合、簡単に正しい位置に事前設定ファイルを配置できます。インストール ISO イメージにファイルを含めたければ、イメージを再度マスタリングする必要があります。initrd に含まれている事前設定ファイルを取り出す方法は、この文書では扱いません。debian-installer
の開発者向け文書を当たってください。
事前設定ファイルの手本にできる事前設定ファイルのサンプルは、https://www.debian.org/releases/bookworm/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 - または preseed/url=tftp://host/path/to/preseed.cfg preseed/url/checksum=5da499872becccfeda2c4872f9171c3d - リマスタリングしたインストールイメージで起動する場合: 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/file/checksum
は preseed-md5
に短縮できることに注意してください。
事前設定ファイルを preseed の各段階で使用できない場合でも、preseed の値をインストーラ起動時のコマンドラインに与えることで、インストールを自動で行えます。
preseed を使用せず指定した質問への答を設定したい場合にも、ブートパラメータを使用します。有用な使用法のサンプルが、このマニュアルの別の場所にあります。
debian-installer
内部で使用する値をセットするには、
のように本付録の例にある preseed 変数を渡すだけです。値がターゲットシステムのパッケージを設定することがある場合、owner[19] 変数を、あらかじめ用意し、path/to/variable
=value
で使用する必要があります。owner を指定しない場合、変数の値はターゲットシステムの debconf データベースにコピーされず、関連パッケージの設定中使用されません。 owner
:path/to/variable
=value
通常、この方法で答をあらかじめ設定しておくと、質問してきません。質問のデフォルト値を指定しているのに、まだ質問してくる場合には、「=」 演算子の代わりに、「?=」 を使用してください。「preseed を用いたデフォルト値変更」 もご覧ください。
ブートプロンプトによく使用される変数には、短いエイリアスがあることに注意してください。有効なエイリアスは、本サンプル内で完全な変数名の代わりに使用しています。例えば preseed/url
変数には url
というエイリアスがあります。もう一つ、tasks
というエイリアスがあり、これは tasksel:tasksel/first
に変換されます。
ブートオプションの 「---」 は特別な意味を持ちます。最後の 「---」 に続きカーネルパラメータがあると、(インストーラがサポートするブートローダの場合) インストール済みのブートローダの設定にコピーされます。インストーラは、(事前設定オプションのような) オプションを認識すると、自動的にフィルタをかけます。
注記 | |
---|---|
現在の Linux カーネル (2.6.9 以降) では、最大 (インストーラがデフォルトで指定するオプションを含め) コマンドラインオプションを 32 個、環境オプションを 32 個受け取れます。この数を超えると、カーネルはパニック (クラッシュ) してしまいます (以前のカーネルではこの数字がもっと少ないです)。 |
ほとんどのインストールでは、ブートローダ設定ファイルにある (vga=normal
のような) デフォルトオプションを安全に削除できるかもしれません。これにより preseed 用にもっとオプションを追加できます。
注記 | |
---|---|
ブートパラメータに空白を含んだ値を設定するのは、引用符で囲んだとしてもいつもうまくいくとは限りません。 |
ブートプロンプトでの非常に簡単なコマンドラインで、自動インストールに対して任意の複雑なカスタマイズを行えるよう組み合わせる、Debian インストーラの機能がいくつかあります。
これは起動時の選択からインストールの自動化
を使うことで有効化できます。アーキテクチャや起動方法によっては auto
とも呼ばれます。ここでは、auto
パラメータではなく、起動時の選択でそれを選択して起動時のプロンプトに以下のパラメータを付加するという意味になります。
これを説明するため、以下にブートプロンプトで使用できる例を示します。
auto url=autoserver
これは、DNS で autoserver
の名前解決ができ (おそらく DHCP でローカルドメイン追加後)、そのマシンが DHCP サーバであることを前提にしています。example.com
というドメインのサイトが、普通のまともな DHCP を設定していれば、http://autoserver.example.com/d-i/bookworm/./preseed.cfg
から、preseed ファイルを取得するようになります。
URL (d-i/bookworm/./preseed.cfg
) の最後の部分は、auto-install/defaultroot
から取られています。デフォルトでは、将来のバージョンでコードネームを指定して移行していけるように、bookworm
ディレクトリが含まれています。/./
は、その後に続くパスが確定するように、ルートからの相対パスを示します (preseed/include や preseed/run で使用)。これにより、完全な URL や / で始まるパス、前回 preseed が見つかった場所からの相対パスでファイルを指定できます。スクリプトの階層構造を壊さずに新しい場所に移動できる (例えば ウェブサーバで開始し、USB メモリにコピーする)、よりポータブルなスクリプトを構成するのに便利です。このサンプルでは、preseed ファイルの preseed/run
に /scripts/late_command.sh
が設定されている場合、http://autoserver.example.com/d-i/bookworm/./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
のような物かもしれません。これが必要だと思うのなら、名前空間の衝突を避けるために <[email protected]>
メーリングリストで提案してください。おそらくパラメータのエイリアスが追加されます。
auto
ブートの選択肢は、まだ全てのアーキテクチャで定義されてはいません。カーネルのコマンドラインに、単にパラメータを 2 つ auto=true priority=critical
を追加すると、同じ効果を得られます。auto
カーネルパラメータは auto-install/enable
のエイリアスで、true
に設定するとロケールやキーボードの質問を preseed で行えるよう遅らせます。また、priority
は debconf/priority
のエイリアスで、critical
に設定すると、優先度の低い質問を抑制するようになります。
DHCP を使用してインストールの自動化を行う際に、関連する追加オプションは以下の通りです。interface=auto netcfg/dhcp_timeout=60
これはマシンが最初の使用可能 NIC を選択し、DHCP 問い合わせに対する返答をもっと我慢強く待つようになります。
ヒント | |
---|---|
スクリプトやクラスのサンプルを含む、フレームワークの使用法についての大規模なサンプルが、開発者のウェブサイトにあります。そこで得られるサンプルでも、事前設定の独創的な使用を成し遂げる、たくさんのすばらしい効果があります。 |
以下のエイリアスは、(自動モード) preseed の際に、役に立つ場合があります。これらは単に、質問名の短いエイリアスであることに注意してください。そのうえで、常に値を指定する必要があります。例えば、auto=true
や interface=eth0
のようにです。
priority | debconf/priority |
fb | debian-installer/framebuffer |
auto | auto-install/enable |
classes | auto-install/classes |
file | preseed/file |
url | preseed/url |
theme | debian-installer/theme |
language | debian-installer/language |
country | debian-installer/country |
locale | debian-installer/locale |
keymap | keyboard-configuration/xkb-keymap |
modules | anna/choose_modules |
firmware | hw-detect/firmware-lookup |
interface | netcfg/choose_interface |
domain | netcfg/get_domain |
hostname | netcfg/get_hostname |
protocol | mirror/protocol |
suite | mirror/suite |
recommends | base-installer/install-recommends |
tasks | tasksel:tasksel/first |
desktop | tasksel:tasksel/desktop |
preseed-md5 | preseed/file/checksum |
ここではブートプロンプトの見た目の例を示します (これを必要に応じて調整してください)。
# To set French as language and France as country: /install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=fr country=FR --- quiet # To set English as language and Germany as country, and use a German keyboard layout: /install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=en country=DE locale=en_US.UTF-8 keymap=de --- quiet # To install the MATE desktop: /install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet # To install the web-server task: /install.amd/vmlinuz initrd=/install.amd/initrd.gz tasksel:tasksel/first=web-server ---
事前設定ファイルをネットワークからダウンロードするよう指定するのに、DHCP も使用できます。DHCP はファイル名の指定ができます。通常これは netboot のファイルですが、URL 形式になっていると、network 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 の完全自動インストールは、充分注意しなければ行うべきではありません。
[19] debconf 変数 (やテンプレート) の所有者 (owner) は、debconf テンプレートに含まれるように、通常パッケージ名です。インストーラ自体が使用する値は、「d-i」 になっています。テンプレートや変数は、複数の owner を持て、パッケージを完全削除する際に debconf データベースから削除できるかどうかを決定するのに利用されます。