事前設定ツールには、インストール中の一定の箇所でコマンドやスクリプトを実行するといった、とても強力で柔軟なオプションが存在します。
When the filesystem of the target system is mounted, it is available in /target
. If an installation CD/DVD is used, when it is mounted it is available in /cdrom
.
# d-i preseeding is inherently not secure. Nothing in the installer checks # for attempts at buffer overflows or other exploits of the values of a # preconfiguration file like this one. Only use preconfiguration files from # trusted locations! To drive that home, and because it's generally useful, # here's a way to run any shell command you'd like inside the installer, # automatically. # This first command is run as early as possible, just after # preseeding is read. #d-i preseed/early_command string anna-install some-udeb # This command is run immediately before the partitioner starts. It may be # useful to apply dynamic partitioner preseeding that depends on the state # of the disks (which may not be visible when preseed/early_command runs). #d-i partman/early_command \ # string debconf-set partman-auto/disk "$(list-devices disk | head -n1)" # This command is run just before the install finishes, but when there is # still a usable /target directory. You can chroot to /target and use it # directly, or use the apt-install and in-target commands to easily install # packages and run commands in the target system. #d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh
It is possible to use preseeding to change the default answer for a question, but still have the question asked. To do this the seen flag must be reset to 「false」 after setting the value for a question.
d-i foo/bar string value d-i foo/bar seen false
The same effect can be achieved for all questions by setting the parameter preseed/interactive=true
at the boot prompt. This can also be useful for testing or debugging your preconfiguration file.
「d-i」 という owner は、インストーラ自身が使用する変数でのみ、使用するべきであることに注意してください。ターゲットシステムにインストールされたパッケージに属する変数用には、パッケージ名を代わりに使用するべきです。「preseed が質問するブートパラメータの利用」 の脚注をご覧ください。
ブートパラメータを利用して preseed を行う場合、質問に対して 「?=」 演算子を使用して回答できます。例:
(もしくは foo
/bar
?=value
) これはもちろん、インストール中に実際に表示される質問に対応するパラメータにのみ効果を及ぼし、「内部」パラメータには効果を及ぼしません。 owner
:foo/bar
?=value
詳細なデバッグ情報を取得するためには、ブートパラメータ DEBCONF_DEBUG=5
を使用してください。これにより debconf
が、各変数の現在の設定と各パッケージのインストールスクリプトの動作について、より詳細な情報を出力してくれます。
事前設定ファイルから他の事前設定ファイルを読み込めます。先に読み込まれたファイルの既存設定を、後から読み込まれた設定で上書きします。これは例えば、あるファイルに一般的なネットワークの設定を書いておき、他のファイルで具体的な設定を指定する、という使い方ができます。
# More than one file can be listed, separated by spaces; all will be # loaded. The included files can have preseed/include directives of their # own as well. Note that if the filenames are relative, they are taken from # the same directory as the preconfiguration file that includes them. #d-i preseed/include string x.cfg # The installer can optionally verify checksums of preconfiguration files # before using them. Currently only md5sums are supported, list the md5sums # in the same order as the list of files to include. #d-i preseed/include/checksum string 5da499872becccfeda2c4872f9171c3d # More flexibly, this runs a shell command and if it outputs the names of # preconfiguration files, includes those files. #d-i preseed/include_command \ # string if [ "`hostname`" = bob ]; then echo bob.cfg; fi # Most flexibly of all, this downloads a program and runs it. The program # can use commands such as debconf-set to manipulate the debconf database. # More than one script can be listed, separated by spaces. # Note that if the filenames are relative, they are taken from the same # directory as the preconfiguration file that runs them. #d-i preseed/run string foo.sh
また initrd や file preseed の段階で、あらかじめ用意したファイルの preseed/url で設定した network preseed へ、チェーンロードを行うことができます。これにより、ネットワークに接続した時点で network preseed を行えます。この場合、2 種類の異なる preseed が実行されることに注意してください。例えば、preseed/early コマンドを実行する機会が 2 度あり、2 回目はネットワークに接続した時に発生するということです。