本付録で使用する設定の断片は、http://d-i.alioth.debian.org/manual/example-preseed.txt のサンプル事前設定ファイルでも利用できます。
本サンプルは、Intel x86 アーキテクチャ用インストールを元にしていることに注意してください。他のアーキテクチャにインストールする場合、サンプルのいくつか (キーボードの選択やブートローダの選択など) は適切でないかもしれませんので、そのアーキテクチャ用に適切な debconf 設定で置き換える必要があるでしょう。
地域化の設定値は initrd preseed を利用しているときのみ動作します。他のすべての方法では、この質問をされた後にしか事前設定ファイルを読み込めません。
ロケールは言語と国を両方指定でき、debian-installer がサポートする言語と認識する国のいずれかの組み合わせでもかまいません。組み合わせが正しいロケールの形になっていない場合、インストーラは選択した言語から正しいロケールを自動選択します。ブートパラメータでロケールを指定するには、locale= としてください。 en_US
Although this method is very easy to use, it does not allow preseeding of all possible combinations of language, country and locale[29]. So alternatively the values can be preseeded individually. Language and country can also be specified as boot parameters.
# Preseeding only locale sets language, country and locale. d-i debian-installer/locale string en_US # The values can also be preseeded individually for greater flexibility. #d-i debian-installer/language string en #d-i debian-installer/country string NL #d-i debian-installer/locale string en_GB.UTF-8 # Optionally specify additional locales to be generated. #d-i localechooser/supported-locales en_US.UTF-8, nl_NL.UTF-8
キーボード設定は、キーボードアーキテクチャとキーマップを選択することから成っています。ほとんどの場合、正しいキーボードアーキテクチャはデフォルトで選択されています。そのため、通常 preseed する必要はありません。キーマップは選択したキーボードアーキテクチャ向けに、debian-installer で有効でなくてはなりません。
# Keyboard selection. #d-i console-tools/archs select at d-i console-keymaps-at/keymap select us # Example for a different keyboard architecture #d-i console-keymaps-usb/keymap select mac-usb-us
キーボード設定をスキップするには、console-tools/archs を skip-config と preseed してください。これにより、カーネルのキーマップが有効になったままとなります。
カーネル 2.6 では入力レイヤが変更され、キーボードアーキテクチャは事実上時代遅れです。カーネル 2.6 では通常、「PC」 (at) キーマップが既に選択されています。
もちろん、ネットワークから事前設定ファイルを読み込む場合、preseed のネットワーク設定は動作しません。しかし、CD や USB メモリから起動するときには重要です。ネットワークから事前設定ファイルを読み込む場合、ネットワーク設定パラメータは、カーネルブートパラメータで渡すことになります。
ネットワークから事前設定ファイルを読み込む前に netboot するとき、特定のインターフェースを選ぶ必要があるなら、interface= のようにブートパラメータを使用してください。 eth1
「preseed/url」 でネットワーク preseed を使用する際、ネットワーク設定の preseed は通常不可能ですが、例えば、ネットワークインターフェースに静的アドレスを設定するといった、以下のハックを利用して動作させることができます。このハックは、以下のコマンドを含む 「preseed/run」 スクリプトを作成し、事前設定ファイルを読み込んだ後でネットワークの設定を強制的に再度行う、というものです。
killall.sh; netcfg
以下の debconf 変数は、ネットワークの設定と関係があります。
# Disable network configuration entirely. This is useful for cdrom # installations on non-networked devices where the network questions, # warning and long timeouts are a nuisance. #d-i netcfg/enable boolean false # netcfg will choose an interface that has link if possible. This makes it # skip displaying a list if there is more than one interface. d-i netcfg/choose_interface select auto # To pick a particular interface instead: #d-i netcfg/choose_interface select eth1 # If you have a slow dhcp server and the installer times out waiting for # it, this might be useful. #d-i netcfg/dhcp_timeout string 60 # If you prefer to configure the network manually, uncomment this line and # the static network configuration below. #d-i netcfg/disable_dhcp boolean true # If you want the preconfiguration file to work on systems both with and # without a dhcp server, uncomment these lines and the static network # configuration below. #d-i netcfg/dhcp_failed note #d-i netcfg/dhcp_options select Configure network manually # Static network configuration. #d-i netcfg/get_nameservers string 192.168.1.1 #d-i netcfg/get_ipaddress string 192.168.1.42 #d-i netcfg/get_netmask string 255.255.255.0 #d-i netcfg/get_gateway string 192.168.1.1 #d-i netcfg/confirm_static boolean true # Any hostname and domain names assigned from dhcp take precedence over # values set here. However, setting the values still prevents the questions # from being shown, even if values come from dhcp. d-i netcfg/get_hostname string unassigned-hostname d-i netcfg/get_domain string unassigned-domain # Disable that annoying WEP key dialog. d-i netcfg/wireless_wep string # The wacky dhcp hostname that some ISPs use as a password of sorts. #d-i netcfg/dhcp_hostname string radish # If non-free firmware is needed for the network or other hardware, you can # configure the installer to always try to load it, without prompting. Or # change to false to disable asking. #d-i hw-detect/load_firmware boolean true
netcfg/get_netmask が preseed されていない場合、netcfg は自動的にネットマスクを決定することに注意してください。この場合、自動インストールを行うためには、この変数を seen としてマークされていなければなりません。同様に、netcfg/get_gateway が設定されていないと、netcfg は適切なアドレスを選択します。特殊な場合として、netcfg/get_gateway に 「none」 と設定して、ゲートウェイを使用しないようにできます。
# Use the following settings if you wish to make use of the network-console # component for remote installation over SSH. This only makes sense if you # intend to perform the remainder of the installation manually. #d-i anna/choose_modules string network-console #d-i network-console/password password r00tme #d-i network-console/password-again password r00tme
使用するインストール方法に依存しますが、インストーラの追加コンポーネントのダウンロードや、基本システムのインストール、インストールしたシステムの /etc/apt/sources.list のセットアップにミラーサイトを使用できます。
mirror/suite パラメータでは、インストールするシステム用の組を設定します。
The parameter mirror/udeb/suite determines the suite for additional components for the installer. It is only useful to set this if components are actually downloaded over the network and should match the suite that was used to build the initrd for the installation method used for the installation. Normally the installer will automatically use the correct value and there should be no need to set this.
# If you select ftp, the mirror/country string does not need to be set. #d-i mirror/protocol string ftp d-i mirror/country string manual d-i mirror/http/hostname string http.us.debian.org d-i mirror/http/directory string /debian d-i mirror/http/proxy string # Suite to install. #d-i mirror/suite string testing # Suite to use for loading installer components (optional). #d-i mirror/udeb/suite string testing
# Controls whether or not the hardware clock is set to UTC. d-i clock-setup/utc boolean true # You may set this to any valid setting for $TZ; see the contents of # /usr/share/zoneinfo/ for valid values. d-i time/zone string US/Eastern # Controls whether to use NTP to set the clock during the install d-i clock-setup/ntp boolean true # NTP server to use. The default is almost always fine here. #d-i clock-setup/ntp-server string ntp.example.com
ハードディスクのパーティション分割に preseed を使用するのは、partman-auto でサポートしている機能に限定されています。パーティションはディスクに既存の空き領域とディスク全体のどちらかから選べます。ディスクレイアウトは、あらかじめ定義したレシピ、レシピファイルによるカスタムレシピ、事前設定ファイルに書いたレシピから選択できます。現在のところ、パーティションに preseed を用いて複数のディスクを割り当てることはできません。
ディスクの識別は、ドライバの読み込み順に依存します。複数のディスクがシステムにある場合、preseed を使用する前に、正しいディスクを確実に選択できるようにしなければなりません。
# If the system has free space you can choose to only partition that space.
# This is only honoured if partman-auto/method (below) is not set.
#d-i partman-auto/init_automatically_partition select biggest_free
# Alternatively, you can specify a disk to partition. The device name must
# be given in traditional non-devfs format.
# Note: A disk must be specified, unless the system has only one disk.
# For example, to use the first SCSI/SATA hard disk:
#d-i partman-auto/disk string /dev/sda
# In addition, you'll need to specify the method to use.
# The presently available methods are: "regular", "lvm" and "crypto"
d-i partman-auto/method string lvm
# If one of the disks that are going to be automatically partitioned
# contains an old LVM configuration, the user will normally receive a
# warning. This can be preseeded away...
d-i partman-lvm/device_remove_lvm boolean true
# The same applies to pre-existing software RAID array:
d-i partman-md/device_remove_md boolean true
# And the same goes for the confirmation to write the lvm partitions.
d-i partman-lvm/confirm boolean true
# You can choose one of the three predefined partitioning recipes:
# - atomic: all files in one partition
# - home: separate /home partition
# - multi: separate /home, /usr, /var, and /tmp partitions
d-i partman-auto/choose_recipe select atomic
# Or provide a recipe of your own...
# The recipe format is documented in the file devel/partman-auto-recipe.txt.
# If you have a way to get a recipe file into the d-i environment, you can
# just point at it.
#d-i partman-auto/expert_recipe_file string /hd-media/recipe
# If not, you can put an entire recipe into the preconfiguration file in one
# (logical) line. This example creates a small /boot partition, suitable
# swap, and uses the rest of the space for the root partition:
#d-i partman-auto/expert_recipe string \
# boot-root :: \
# 40 50 100 ext3 \
# $primary{ } $bootable{ } \
# method{ format } format{ } \
# use_filesystem{ } filesystem{ ext3 } \
# mountpoint{ /boot } \
# . \
# 500 10000 1000000000 ext3 \
# method{ format } format{ } \
# use_filesystem{ } filesystem{ ext3 } \
# mountpoint{ / } \
# . \
# 64 512 300% linux-swap \
# method{ swap } format{ } \
# .
# This makes partman automatically partition without confirmation, provided
# that you told it what to do using one of the methods above.
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
ソフトウェア RAID アレイにパーティションをセットアップすることも、preseed を使用してできます。サポートしているのは、RAID 0, 1, 5, 6, 10、や縮退アレイの作成、スペアデバイスの指定です。RAID 1 を使用する際には、アレイで使用する全デバイスへインストールするよう、preseed で探せます。項B.4.13. 「ブートローダのインストール」 をご覧ください。
自動パーティション分割でのこの形式は、誤動作をしやすいです。またこの機能は、debian-installer の開発者によって、相対的にまだあまりテストを受けていません。様々な条件で正しく動作するかの責任 (理解でき衝突しない限り) は、ユーザの側にあります。問題が発生したら、/var/log/syslog をチェックしてください。
# NOTE: this option is of beta release quality and should be used carefully
# The method should be set to "raid".
#d-i partman-auto/method string raid
# Specify the disks to be partitioned. They will all get the same layout,
# so this will only work if the disks are the same size.
#d-i partman-auto/disk string /dev/sda /dev/sdb
# Next you need to specify the physical partitions that will be used.
#d-i partman-auto/expert_recipe string \
# multiraid :: \
# 1000 5000 4000 raid \
# $primary{ } method{ raid } \
# . \
# 64 512 300% raid \
# method{ raid } \
# . \
# 500 10000 1000000000 raid \
# method{ raid } \
# .
# Last you need to specify how the previously defined partitions will be
# used in the RAID setup. Remember to use the correct partition numbers
# for logical partitions.
# Parameters are:
# <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \
# <devices> <sparedevices>
# RAID levels 0, 1, 5, 6 and 10 are supported; devices are separated using "#"
#d-i partman-auto-raid/recipe string \
# 1 2 0 ext3 / \
# /dev/sda1#/dev/sdb1 \
# . \
# 1 2 0 swap - \
# /dev/sda5#/dev/sdb5 \
# . \
# 0 2 0 ext3 /home \
# /dev/sda6#/dev/sdb6 \
# .
# This makes partman automatically partition without confirmation.
d-i partman-md/confirm boolean true
d-i partman-partitioning/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
通常、ファイルシステムは、汎用一意識別子 (UUID) をキーとしてマウントされます。これにより、デバイス名が変更されたとしても、適切にマウントできます。UUID は長く読みにくいため、お好みにより、インストーラは、伝統的なデバイス名やあなたが割り当てたラベルをベースにして、ファイルシステムをマウントできます。インストーラにラベルでマウントさせる場合、ラベルがないファイルシステムは、UUID でマウントされます。
LVM 論理ボリュームのような不変名のデバイスは、UUID ではなく伝統的な名前で使用され続けます。
伝統的なデバイス名は、ブート時にカーネルが検出する順番によって、変わってしまう可能性があり、そのため、誤ったファイルシステムをマウントする原因になります。同様に、新しいディスクや USB ドライブを挿すと、ラベルが競合してしまいます。こうなってしまうと、起動時の挙動が不定になってしまいます。
# The default is to mount by UUID, but you can also choose "traditional" to # use traditional device names, or "label" to try filesystem labels before # falling back to UUIDs. #d-i partman/mount_style select uuid
インストールのこの段階で、実際に preseed できる項目は多くありません。質問はカーネルのインストールに関するものだけです。
# Configure APT to not install recommended packages by default. Use of this # option can result in an incomplete system and should only be used by very # experienced users. #d-i base-installer/install-recommends boolean false # Select the initramfs generator used to generate the initrd for 2.6 kernels. #d-i base-installer/kernel/linux/initramfs-generators string yaird # The kernel image (meta) package to be installed; "none" can be used if no # kernel is to be installed. #d-i base-installer/kernel/image string linux-image-2.6-486
root アカウント用のパスワードや、最初のユーザアカウントの名前・パスワードは preseed できます。パスワードには、平文か MD5 ハッシュのどちらかを使用できます。
preseed のパスワードは、パスワードを知っている事前設定ファイルが誰でもアクセスできるために、完全に安全というわけではないことを知っておいてください。MD5 ハッシュを使えば、セキュリティ的には多少ましと言えますが、MD5 ハッシュは総当たり攻撃にかけられることを考えると、セキュリティ的に誤解を与えるかもしれません。
# Skip creation of a root account (normal user account will be able to # use sudo). #d-i passwd/root-login boolean false # Alternatively, to skip creation of a normal user account. #d-i passwd/make-user boolean false # Root password, either in clear text #d-i passwd/root-password password r00tme #d-i passwd/root-password-again password r00tme # or encrypted using an MD5 hash. #d-i passwd/root-password-crypted password [MD5 hash] # To create a normal user account. #d-i passwd/user-fullname string Debian User #d-i passwd/username string debian # Normal user's password, either in clear text #d-i passwd/user-password password insecure #d-i passwd/user-password-again password insecure # or encrypted using an MD5 hash. #d-i passwd/user-password-crypted password [MD5 hash] # Create the first user with the specified UID instead of the default. #d-i passwd/user-uid string 1010 # The user account will be added to some standard initial groups. To # override that, use this. #d-i passwd/user-default-groups string audio cdrom video
passwd/root-password-crypted 変数や passwd/user-password-crypted 変数では、preseed で 「!」 という値を取れます。この場合、そのアカウントは無効となります。もちろん管理権限での実行や root ログインを許可する代替手段 (例えば SSH キー認証や sudo) を用意しておいた上で、root アカウントに設定すると便利です。
以下のコマンドを、パスワードの MD5 ハッシュを生成するのに利用できます。
$ printf "r00tme" | mkpasswd -s -m md5
/etc/apt/sources.list のセットアップと基本設定オプションは、インストール方法と初期の質問への回答から、完全に自動的に行われます。さらに、他の (ローカルな) リポジトリを追加できます。
# You can choose to install non-free and contrib software. #d-i apt-setup/non-free boolean true #d-i apt-setup/contrib boolean true # Uncomment this if you don't want to use a network mirror. #d-i apt-setup/use_mirror boolean false # Select which update services to use; define the mirrors to be used. # Values shown below are the normal defaults. #d-i apt-setup/services-select multiselect security, volatile #d-i apt-setup/security_host string security.debian.org #d-i apt-setup/volatile_host string volatile.debian.org # Additional repositories, local[0-9] available #d-i apt-setup/local0/repository string \ # http://local.server/debian stable main #d-i apt-setup/local0/comment string local server # Enable deb-src lines #d-i apt-setup/local0/source boolean true # URL to the public key of the local repository; you must provide a key or # apt will complain about the unauthenticated repository and so the # sources.list line will be left commented out #d-i apt-setup/local0/key string http://local.server/key # By default the installer requires that repositories be authenticated # using a known gpg key. This setting can be used to disable that # authentication. Warning: Insecure, not recommended. #d-i debian-installer/allow_unauthenticated boolean true
有効なタスクを組み合わせてインストールするものを選ぶことができます。有効なタスクを以下に書き出します。
standard
desktop
gnome-desktop
kde-desktop
web-server
print-server
dns-server
file-server
mail-server
sql-database
laptop
タスクをインストールしないこともできますし、他の方法でパッケージのセットが強制的にインストールされることもあります。standard タスクは常に含めるのをお奨めします。
タスクでインストールするパッケージに加えて、特定のパッケージをインストールする場合、pkgsel/include パラメータを使用できます。このパラメータの値は、カーネルコマンドラインにそのまま渡されるので、カンマか空白で区切ったパッケージのリストを取れます。
#tasksel tasksel/first multiselect standard, web-server # If the desktop task is selected, install the kde and xfce desktops # instead of the default gnome desktop. #tasksel tasksel/desktop multiselect kde, xfce # Individual additional packages to install #d-i pkgsel/include string openssh-server build-essential # By default, packages that are only Recommended by packages installed using # pkgsel/include (as opposed to their dependencies) will not be installed. # Whether to upgrade packages after debootstrap. # Allowed values: none, safe-upgrade, full-upgrade #d-i pkgsel/upgrade select none # Some versions of the installer can report back on what software you have # installed, and what software you use. The default is not to report back, # but sending reports helps the project determine what software is most # popular and include it on CDs. #popularity-contest popularity-contest/participate boolean false
# Grub is the default boot loader (for x86). If you want lilo installed # instead, uncomment this: #d-i grub-installer/skip boolean true # To also skip installing lilo, and install no bootloader, uncomment this # too: #d-i lilo-installer/skip boolean true # This is fairly safe to set, it makes grub install automatically to the MBR # if no other operating system is detected on the machine. d-i grub-installer/only_debian boolean true # This one makes grub-installer install to the MBR if it also finds some other # OS, which is less safe as it might not be able to boot that other OS. d-i grub-installer/with_other_os boolean true # Alternatively, if you want to install to a location other than the mbr, # uncomment and edit these lines: #d-i grub-installer/only_debian boolean false #d-i grub-installer/with_other_os boolean false #d-i grub-installer/bootdev string (hd0,0) # To install grub to multiple disks: #d-i grub-installer/bootdev string (hd0,0) (hd1,0) (hd2,0) # Optional password for grub, either in clear text #d-i grub-installer/password password r00tme #d-i grub-installer/password-again password r00tme # or encrypted using an MD5 hash, see grub-md5-crypt(8). #d-i grub-installer/password-crypted password [MD5 hash] # Use the following option to add additional boot parameters for the # installed system (if supported by the bootloader installer). # Note: options passed to the installer will be added automatically. #d-i debian-installer/add-kernel-opts string nousb
grub で使用するパスワードの MD5 ハッシュは、grub-md5-crypt を使用して生成するか、項B.4.10. 「アカウント設定」 にあるコマンドを使用して生成します。
# During installations from serial console, the regular virtual consoles # (VT1-VT6) are normally disabled in /etc/inittab. Uncomment the next # line to prevent this. #d-i finish-install/keep-consoles boolean true # Avoid that last message about the install being complete. d-i finish-install/reboot_in_progress note # This will prevent the installer from ejecting the CD during the reboot, # which is useful in some situations. #d-i cdrom-detect/eject boolean false # This is how to make the installer shutdown when finished, but not # reboot into the installed system. #d-i debian-installer/exit/halt boolean true # This will power off the machine instead of just halting it. #d-i debian-installer/exit/poweroff boolean true
# Depending on what software you choose to install, or if things go wrong # during the installation process, it's possible that other questions may # be asked. You can preseed those too, of course. To get a list of every # possible question that could be asked during an install, do an # installation, and then run these commands: # debconf-get-selections --installer > file # debconf-get-selections > > file
[29] Preseeding locale to en_NL would for example result in en_US.UTF-8 as default locale for the installed system. If e.g. en_GB.UTF-8 is preferred instead, the values will need to be preseeded individually.