B.4. Содержимое файла ответов (для bullseye)

Фрагменты конфигурации, используемые в этом приложении, также доступны в примере файла ответов https://www.debian.org/releases/bullseye/example-preseed.txt.

Заметим, что показанный пример основан на установке для архитектуры Intel x86. Если вы выполняете установку на другую архитектуру, то некоторые примеры (например, выбор клавиатуры и установка загрузчика) могут различаться и должны быть заменены на соответствующие настройки debconf для этой архитектуры.

О том, как работают различные компоненты Debian Installer, можно найти в Раздел 6.3, «Применение отдельных компонент».

B.4.1. Локализация

При обычной установке вопросы о локализации задаются первыми, поэтому их значения можно указать только в методе initrd или параметрах загрузки ядра. Автоматический режим (Раздел B.2.3, «Автоматический режим») включает настройку auto-install/enable=true (обычно, через псевдоним auto). Это задерживает вопросы локализации для того, чтобы их можно было указать с любым методом.

Для указания языка и страны можно использовать локаль; возможна любая комбинация для языка, если она поддерживается debian-installer, и страны. Если в локали указана недопустимая комбинация, то программа установки автоматически выберет локаль, подходящую для выбранного языка. Чтобы указать локаль в параметре загрузки, используйте locale=ru_RU.

Хотя этот метод очень прост в использовании, с его помощью нельзя задать любые комбинации языка, страны и локали[20]. Поэтому есть возможность задать автоматический ответ для каждого параметра отдельно. Язык и страну также можно указывать в параметрах запуска.

# Автоответ только для языка, страны и локали.
d-i debian-installer/locale string en_US

# Значения можно указывать отдельно для каждого параметра.
#d-i debian-installer/language string en
#d-i debian-installer/country string NL
#d-i debian-installer/locale string en_GB.UTF-8
# В добавок, можно указать дополнительные локали для генерации.
#d-i localechooser/supported-locales multiselect en_US.UTF-8, nl_NL.UTF-8

При настройке клавиатуры выбирается раскладка и (для нелатинских раскладок) клавиша переключения между нелатинской раскладкой и раскладкой US. Во время установки доступны только основные варианты раскладок. Дополнительные варианты доступны только в установленной системе; их можно выбрать с помощью команды dpkg-reconfigure keyboard-configuration.

# Выбор клавиатуры.
d-i keyboard-configuration/xkb-keymap select ru
# d-i keyboard-configuration/toggle select No toggling

Чтобы не выполнять настройку клавиатуры укажите в keymap значение skip-config. В результате останется активной клавиатурная раскладка ядра.

B.4.2. Настройка сети

Of course, preseeding the network configuration won't work if you're loading your preconfiguration file from the network. But it's great when you're booting from optical disc or USB stick. If you are loading preconfiguration files from the network, you can pass network config parameters by using kernel boot parameters.

Если нужно использовать определённый интерфейс для загрузки по сети перед загрузкой файла ответов из сети, используйте параметр загрузки interface=eth1.

Хотя автоматическая настройка сети обычно невозможна при загрузки файла ответов по сети (с помощью «preseed/url»), вы можете обойти этот недостаток, например, если задав статический адрес на сетевом интерфейса. Данное обходное решение заставит запуститься настройку сети ещё раз после загрузки файла ответов, если создать сценарий «preseed/run» со следующими строчками:

kill-all-dhcp; netcfg

Следующие переменные debconf относятся к настройке сети.

# Выключить настройку сети полностью. Это полезно при установке с cdrom
# на устройства, не имеющих сети, где вопросы о сети,
# предупреждения и длительные паузы неуместны.
#d-i netcfg/enable boolean false

# netcfg выбирает активный сетевой интерфейс, если такой имеется. Если
# есть более одного интерфейса, то при данной настройке список
# интерфейсов выводиться не будет.
d-i netcfg/choose_interface select auto

# Чтобы использовать нужный интерфейс:
#d-i netcfg/choose_interface select eth1

# Задаёт время ожидания появления связи (link) (по умолчанию 3 секунды).
# Значения указываются в секундах.
#d-i netcfg/link_wait_timeout string 10

# Если у вас медленный сервер dhcp и программа установки не дожидается
# ответа, то данная настройка может оказаться полезной.
#d-i netcfg/dhcp_timeout string 60
#d-i netcfg/dhcpv6_timeout string 60

# Если вы предпочитаете настраивать сеть вручную, раскомментируйте эту
# строку и статические настройки сети ниже.
#d-i netcfg/disable_autoconfig boolean true

# Если вы хотите, чтобы файл ответов работал при наличии и без сервера
# dhcp, раскомментируйте эти строки и статические настройки сети ниже.
#d-i netcfg/dhcp_failed note
#d-i netcfg/dhcp_options select Configure network manually

# Статические настройки сети.
#
# Пример для IPv4
#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

# Пример для IPv6
#d-i netcfg/get_ipaddress string fc00::2
#d-i netcfg/get_netmask string ffff:ffff:ffff:ffff::
#d-i netcfg/get_gateway string fc00::1
#d-i netcfg/get_nameservers string fc00::1
#d-i netcfg/confirm_static boolean true

# Имя узла и домен, назначенные с помощью dhcp, имеют приоритет над
# значениями, установленными здесь. Однако, установка значений всё ещё
# предотвращает показ вопросов, даже если значения получены по dhcp.
d-i netcfg/get_hostname string unassigned-hostname
d-i netcfg/get_domain string unassigned-domain

# Если вы хотите принудительно задать имя узла, не учитывая того, что
# предложит сервер DHCP или какая будет запись для этого IP в
# обратной зоне  DNS, раскомментируйте
# и измените следующую строку.
#d-i netcfg/hostname string somehost

# Выключает показ надоедливого диалога о ключе WEP.
d-i netcfg/wireless_wep string
# Странное имя dhcp-сервера, которое используют некоторые провайдеры в
# качестве некоего пароля.
#d-i netcfg/dhcp_hostname string radish

# Если для работы сети или другого оборудования требуется несвободная
# микропрограмма, то вы можете указать программе установки всегда пытаться
# её загружать не задавая вопросов. Или замените значение на false, чтобы
# этот вопрос вообще не задавался.
#d-i hw-detect/load_firmware boolean true

Заметим, что netcfg автоматически выберет маску сети,если она не указана в netcfg/get_netmask. В этом случае, переменная будет помечена как seen при автоматической установке. Аналогично netcfg выберет подходящий адрес шлюза, если не указано значение в netcfg/get_gateway. Но есть специальная настройка: netcfg/get_gateway можно установить в «none», чтобы указать, что шлюз вообще не должен использоваться.

B.4.3. Сетевая консоль

# Используйте следующие настройки, если хотите использовать компоненту
# network-consoleдля удалённой установки через SSH. Это имеет смысл, если вы
# намереваетесь выполнять оставшуюся часть установки вручную.
#d-i anna/choose_modules string network-console
#d-i network-console/authorized_keys_url string http://10.0.0.1/openssh-key
#d-i network-console/password password r00tme
#d-i network-console/password-again password r00tme

B.4.4. Настройка сервера-зеркала

В зависимости от используемого метода установки для загрузки дополнительных компонент программы установки, установки базовой системы и настройки файла /etc/apt/sources.list в установленной системе можно использовать сервер-зеркало.

Параметр mirror/suite определяет версию дистрибутива для устанавливаемой системы.

Параметр mirror/udeb/suite определяет версию дистрибутива для дополнительных компонент программы установки. Он нужен только если компоненты загружаются по сети и должны соответствовать версии, которая была использована для сборки initrd, который используется для установки с помощью одноимённого метода. Обычно программа установки автоматически определяет правильное значение, и этот параметр задавать ненужно.

# Если вы выберете ftp, то mirror/country string устанавливать не нужно.
#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

# Устанавливаемая версия.
#d-i mirror/suite string testing
# Версия загружаемых компонент (необязательно).
#d-i mirror/udeb/suite string testing

B.4.5. Настройка учётной записи

Могут быть автоматически настроены пароль суперпользователя и имя и пароль первого обычного пользователя. Пароли могут быть заданы как нешифрованные текстовые значения или в виде хешей crypt(3).

[Предупреждение] Предупреждение

Обратите внимание, что автоматическую настройку паролей использовать небезопасно, так как любой может получить доступ к файлу ответов и узнать пароли. Хранение хешей паролей считается безопасным, если для них не используются нестойкие алгоритмы хеширования DES или MD5, которые доступны для атак перебором. Для вычисления хешей рекомендуется использовать алгоритмы SHA-256 и SHA512.

# Пропустить создание учётной записи суперпользователя (в обычной учётной
# записи пользователя можно использовать sudo).
#d-i passwd/root-login boolean false
# Или же пропустить создание обычной учётной записи пользователя.
#d-i passwd/make-user boolean false

# Пароль суперпользователя, любой открытым текстом
#d-i passwd/root-password password r00tme
#d-i passwd/root-password-again password r00tme
# или в виде хеша crypt(3).
#d-i passwd/root-password-crypted password [хеш crypt(3)]

# Создать учётную запись обычного пользователя.
#d-i passwd/user-fullname string Debian User
#d-i passwd/username string debian
# Пароль обычного пользователя, или открытым текстом
#d-i passwd/user-password password insecure
#d-i passwd/user-password-again password insecure
# или в виде хеша crypt(3).
#d-i passwd/user-password-crypted password [хеш crypt(3)]
# Создать первую учётную запись с заданным UID вместо значения по
# умолчанию.
#d-i passwd/user-uid string 1010

# Учётная запись будет добавлена в несколько стандартных начальных групп.
# Чтобы это изменить -- отредактируйте и раскомментируйте строчку ниже.
#d-i passwd/user-default-groups string audio cdrom video

Также, в начале значений переменных passwd/root-password-crypted и passwd/user-password-crypted можно указать знак «!». В этом случае, соответствующая учётная запись будет заблокирована. Это может быть удобно для учётной записи суперпользователя, если используется другой метод настройки, предоставляющий возможность выполнить административные действия или вход в систему от имени суперпользователя (например, используя аутентификацию по SSH ключу или sudo).

С помощью следующей команды (доступной из пакета whois) можно сгенерировать хеш SHA-512 из crypt(3) для пароля:

mkpasswd -m sha-512

B.4.6. Настройка времени и часового пояса

# Задаёт, установлены или нет аппаратные часы по Гринвичу.
d-i clock-setup/utc boolean true

# Здесь вы можете указать любое допустимое значение для $TZ; смотрите
# допустимые значения в файле /usr/share/zoneinfo/.
d-i time/zone string US/Eastern

# Определяет, нужно ли использовать NTP для установки часов во время установки
d-i clock-setup/ntp boolean true
# Используемый сервер NTP. Значение по умолчанию указывается здесь.
#d-i clock-setup/ntp-server string ntp.example.com

B.4.7. Разметка дисков

Использование настроек разметки жёсткого диска в автоматической установке очень ограничено; поддерживаются параметры только для partman-auto. Вы можете выбрать разметку только свободного места на диске или всего диска. Разметку диска можно выбрать из одного из имеющихся в программе установки наборов, пользовательского набора из файла или набора из файла ответов.

Расширенные возможности разметки с использованием RAID, LVM и шифрования поддерживаются в автоматической установке, но не так гибки как при разметке без автоматической установки.

Представленные далее примеры показывают только основы по использованию наборов. Подробности смотрите в файлах partman-auto-recipe.txt и partman-auto-raid-recipe.txt из пакета debian-installer. Также эти файлы доступны в репозитории debian-installer. Заметим, что список поддерживаемых возможностей может поменяться между выпусками.

[Предупреждение] Предупреждение

Идентификация дисков зависит от порядка загрузки драйверов. Если в системе есть несколько дисков, проверьте, что выбирается правильный диск перед тем как использовать автоматическую установку.

B.4.7.1. Пример разметки

# 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 may specify a disk to partition. If the system has only
# one disk the installer will default to using that, but otherwise the device
# name must be given in traditional, non-devfs format (so e.g. /dev/sda
# and not e.g. /dev/discs/disc0/disc).
# 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: use the usual partition types for your architecture
# - lvm:     use LVM to partition the disk
# - crypto:  use LVM within an encrypted partition
d-i partman-auto/method string lvm

# You can define the amount of space that will be used for the LVM volume
# group. It can either be a size with its unit (eg. 20 GB), a percentage of
# free space or the 'max' keyword.
d-i partman-auto-lvm/guided_size string max

# 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
d-i partman-lvm/confirm_nooverwrite 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, /var, and /tmp partitions
d-i partman-auto/choose_recipe select atomic

# Or provide a recipe of your own...
# 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{ }                \
#              .

# The full recipe format is documented in the file partman-auto-recipe.txt
# included in the 'debian-installer' package or available from D-I source
# repository. This also documents how to specify settings such as file
# system labels, volume group names and which physical devices to include
# in a volume group.

## Partitioning for EFI
# If your system needs an EFI partition you could add something like
# this to the recipe above, as the first element in the recipe:
#               538 538 1075 free                              \
#                      $iflabel{ gpt }                         \
#                      $reusemethod{ }                         \
#                      method{ efi }                           \
#                      format{ }                               \
#               .                                              \
#
# The fragment above is for the amd64 architecture; the details may be
# different on other architectures. The 'partman-auto' package in the
# D-I source repository may have an example you can follow.

# 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
d-i partman/confirm_nooverwrite boolean true

# Force UEFI booting ('BIOS compatibility' will be lost). Default: false.
#d-i partman-efi/non_efi_system boolean true
# Ensure the partition table is GPT - this is required for EFI
#d-i partman-partitioning/choose_label string gpt
#d-i partman-partitioning/default_label string gpt

# When disk encryption is enabled, skip wiping the partitions beforehand.
#d-i partman-auto-crypto/erase_disks boolean false

B.4.7.2. Разметка с использованием RAID

Также вы можете автоматизировать настройку массивов программного RAID. Поддерживаются RAID уровни 0, 1, 5, 6 и 10, создание неполных массивов (degraded arrays) и можно указать запасные устройства.

[Предупреждение] Предупреждение

В данном типе автоматизации разметки легко ошибиться. Также эта возможность тестировалась относительно мало разработчиками debian-installer. Ответственность при создании правильного набора (то есть, чтобы он был логически верным и не имел конфликтов) лежит на пользователе. Если возникают проблемы -- см. /var/log/syslog.

# Метод должен быть установлен в значение "raid".
#d-i partman-auto/method string raid
# Задать размечаемые диски. Они будут иметь одинаковую разметку,
# поэтому это работает только, если диски одинакового размера.
#d-i partman-auto/disk string /dev/sda /dev/sdb

# Далее нужно указать какие физические разделы будут использоваться.
#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 }                       \
#              .

# Наконец, нужно указать как использовать определённые ранее разделы
# в настройке RAID. Указывайте правильные номера разделов
# для логических разделов. Поддерживается RAID 0, 1, 5, 6 и 10;
# устройства разделяются с помощью "#".
# Параметры:
# <raidtype> <devcount> <sparecount> <fstype> <mountpoint> \
#          <devices> <sparedevices>

#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       \
#    .

# Полностью формат набора описан в файле partman-auto-raid-recipe.txt,
# включённом в пакет debian-installer и репозиторий D-I.

# Это заставит partman сделать разметку автоматически, без подтверждения.
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
d-i partman/confirm_nooverwrite boolean true

B.4.7.3. Управление монтированием разделов

Обычно, файловые системы монтируются с использованием в качестве ключа универсального уникального идентификатора (UUID); это позволяет монтировать их правильно, даже если изменились их имена устройств. UUID-ы длинные и их сложно запоминать, поэтому, по вашему желанию, программа установки может смонтировать файловые системы основываясь на традиционных именах устройств, или на основе назначенных вами меток. Если вы укажите программе установки монтировать по меткам, то все файловые системы без метки будут смонтированы на основе UUID.

Для устройств со стабильными именами, такими как логические тома LVM, при монтировании будет продолжено использование их традиционных имён, а не UUID-ы.

[Предупреждение] Предупреждение

Традиционные имена устройств могут изменяться из-за порядка, в котором ядро обнаруживает устройства при загрузке, что может приводить к монтированию не тех файловых систем. Подобным образом, могут встретиться одинаковые метки, если вы подключаете новый диск или USB-устройство, и если это случается, то ваша система начинает работать непредсказуемым образом.

# По умолчанию, используется монтирование по UUID, но вы можете
# выбрать "traditional", чтобы использовать обычные имена устройств
# или "label", чтобы попробовать монтирование по меткам, перед
# тем как откатиться к UUID-ам.
#d-i partman/mount_style select uuid

B.4.8. Установка базовой системы

Для этого этапа, фактически, не так много автоматизируемых настроек. В основном они касаются установки ядра.

# Настроить APT для отмены автоматической установки рекомендуемых пакетов.
# Использование данного параметра может привести к установке неполноценной
# системы, и он должен использоваться только
# очень опытными пользователями.
#d-i base-installer/install-recommends boolean false

# Устанавливаемый пакет (мета) с образом ядра; можно указать «none»,
# если ядро устанавливать не нужно.
#d-i base-installer/kernel/image string linux-image-686

B.4.9. Настройка Apt

Настройка файла /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, updates
#d-i apt-setup/security_host string security.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
# If the provided key file ends in ".asc" the key file needs to be an
# ASCII-armoured PGP key, if it ends in ".gpg" it needs to use the
# "GPG key public keyring" format, the "keybox database" format is
# currently not supported.

# 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

# Uncomment this to add multiarch configuration for i386
#d-i apt-setup/multiarch string i386

B.4.10. Выбор пакетов

Вы можете выбрать любую доступную комбинацию устанавливаемых задач. Доступные задачи:

  • standard (стандартные инструменты)

  • desktop (графический рабочий стол)

  • gnome-desktop (рабочий стол Gnome)

  • xfce-desktop (рабочий стол XFCE)

  • kde-desktop (рабочий стол KDE Plasma)

  • cinnamon-desktop (рабочий стол Cinnamon)

  • mate-desktop (рабочий стол MATE)

  • lxde-desktop (рабочий стол LXDE)

  • web-server (веб-сервер)

  • ssh-server (сервер SSH)

Также вы можете не выбирать задачи и выполнить установку списка пакетов каким-то другим способом. Мы рекомендуем всегда включать задачу standard.

Если вы хотите установить несколько отдельных пакетов в дополнении к пакетам, устанавливаемым задачами, то вы можете использовать параметр pkgsel/include. В значении этого параметра в качестве разделителя можно использовать запятые или пробелы, поэтому также его можно указать в командной строке ядра.

#tasksel tasksel/first multiselect standard, web-server, kde-desktop

# Individual additional packages to install
#d-i pkgsel/include string openssh-server build-essential
# 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 should be included on the first CD/DVD.
#popularity-contest popularity-contest/participate boolean false

B.4.11. Завершение установки

# При установке с консоли на последовательном порту обычные виртуальные
# консоли (VT1-VT6) выключаются в /etc/inittab. Раскомментируйте
# следующую строку, чтобы этого не происходило.
#d-i finish-install/keep-consoles boolean true

# Не показывать последнее сообщение о том, что установка завершена.
d-i finish-install/reboot_in_progress note

# Не выдвигать лоток CD при перезагрузке, что иногда может пригодиться.
#d-i cdrom-detect/eject boolean false

# Остановить систему после завершения установки, а
# не перегружаться в установленную систему.
#d-i debian-installer/exit/halt boolean true
# Эта настройка позволяет выключить питание машины, а не просто остановить её.
#d-i debian-installer/exit/poweroff boolean true

B.4.12. Автоматизация других пакетов

# В зависимости от выбранного для установки ПО, или если что-то идёт
# неправильно во время процесса установки, существует вероятность появления других
# вопросов. Естественно, их тоже можно автоматизировать. Чтобы получить список
# всех возможных вопросов, которые могут быть заданы во время установки, выполните
# установку, а затем запустите следующие команды:
#   debconf-get-selections --installer > файл
#   debconf-get-selections >> файл


[20] При задании значения для locale равным en_NL, например, приведёт к установке системы с локалью по умолчанию en_US.UTF-8. Если, например, требуется en_GB.UTF-8, то значения для автоматического ответа нужно задавать отдельно для каждого параметра.