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

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

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

Details on how the different Debian Installer components actually work can be found in Раздел 6.3, «Применение отдельных компонент».

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

Настройка значений локализации работает только для метода initrd. Во всех остальных методах файл ответов загружается после того, как эти вопросы уже заданы.

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

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

# Автоответ для языка и страны на основе локали.
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 en_US.UTF-8, nl_NL.UTF-8

При настройке клавиатуры выбирается архитектура клавиатуры и раскладка. В большинстве случаев правильная архитектура клавиатуры уже выбрана по умолчанию, поэтому обычно не нужно задавать автоматический ответ. Раскладка клавиатуры должна быть известна debian-installer для выбранной архитектуры клавиатуры.

# Выбор клавиатуры.
#d-i console-tools/archs select at
d-i console-keymaps-at/keymap select ru
d-i keyboard-configuration/xkb-keymap select ru
# Пример другой архитектуры клавиатуры
#d-i console-keymaps-usb/keymap select mac-usb-us

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

Замечание

Изменения в уровне ввода в ядрах версии 2.6 сделали архитектуру клавиатуры виртуально ненужной. Для ядер версии 2.6 обычно нужно выбирать клавиатурную раскладку «PC» (at).

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

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

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

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

killall.sh; netcfg

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

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

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

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

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

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

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

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

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

# Выключить показ надоедливого диалога с 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/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. Настройка учётной записи

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

Внимание

Обратите внимание, что автоматическую настройку паролей использовать небезопасно, так как любой может получить доступ к файлу ответов и узнать пароли. Считается, что использование хешей MD5 улучшает ситуацию с точки зрения безопасности, но MD5 хеш всё ещё остаётся доступным для атак на пароль прямым перебором.

# Пропустить создание учётной записи суперпользователя (в обычной учётной
# записи пользователя можно использовать 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
# или в виде MD5 хеша.
#d-i passwd/root-password-crypted password [MD5 хеш]

# Создать учётную запись обычного пользователя.
#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
# или в виде MD5 хеша.
#d-i passwd/user-password-crypted password [MD5 хеш]
# Создать первую учётную запись с заданным 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).

С помощью следующей команды можно сгенерировать MD5 хеш для пароля:

$ printf "r00tme" | mkpasswd -s -m md5

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. Пример разметки

# Если система имеет свободное место, вы можете выбрать для разметки
# только его.
# Это соблюдается, только есть не задан partman-auto/method (ниже).
#d-i partman-auto/init_automatically_partition select biggest_free

# Или же, вы можете задать размечаемый диск. Если в системе
# имеется только один диск, то программа установки будет
# использовать его по умолчанию, иначе имя устройства
# должно задаваться в обычном не-devfs формате (то есть,
# /dev/hda или /dev/sda, а не /dev/discs/disc0/disc).
# Например, для использования первого жёсткого диска SCSI/SATA:
#d-i partman-auto/disk string /dev/sda
# Также, вы можете указать какой метод использовать.
# Доступные методы:
# - regular: использовать обычные для архитектуры типы разделов
# - lvm: при разметке диска использовать LVM
# - crypto: использовать LVM с шифрованием
d-i partman-auto/method string lvm

# Если один из дисков, который нужно разметить с помощью автоматической
# разметки, содержит старую конфигурацию LVM, то пользователю выдаётся
# предупреждение. Ответ можно автоматизировать...
d-i partman-lvm/device_remove_lvm boolean true
# То же самое для существующих программных RAID массивов:
d-i partman-md/device_remove_md boolean true
# И подтвердить запись lvm разделов.
d-i partman-lvm/confirm boolean true

# Вы можете выбрать один из трёх имеющихся наборов разметки:
# - atomic: все файлы в одном разделе
# - home:   отдельный раздел для /home
# - multi:  отдельные разделы для /home, /usr, /var и /tmp
d-i partman-auto/choose_recipe select atomic

# Или создать набор вручную...
# Если вы каким-то образом поместили файл набора в окружение d-i, то можно
# просто указать его.
#d-i partman-auto/expert_recipe_file string /hd-media/recipe

# Если нет, то можно записать набор полностью в файле ответов в одну
# (логическую) строку. В примере ниже создаётся маленький /boot
# раздел, подходящего размера раздел подкачки,
# а оставшееся место используется под корневой раздел:
#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{ }                \
#              .

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

# Это заставляет partman автоматически выполнить разметку
# без подтверждения, ровно такую, которую вы указали в методах выше.
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.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

# Выбрать генератор initramfs, используемый для создания initrd
# для ядер 2.6.
#d-i base-installer/kernel/linux/initramfs-generators string initramfs-tools

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

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

Настройка файла /etc/apt/sources.list и основных параметров конфигурации выполняется автоматически на основании метода установки и ответов на ранее заданные вопросы. Необязательно вы можете добавить другие (локальные) репозитории.

# Вы можете указать нужно ли устанавливать non-free и contrib ПО.
#d-i apt-setup/non-free boolean true
#d-i apt-setup/contrib boolean true
# Раскомментируйте, если не хотите использовать зеркало из сети.
#d-i apt-setup/use_mirror boolean false
# Выберите обновляемые сервисы; задайте используемые зеркала.
# Значения ниже используются по умолчанию.
#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

# Дополнительные репозитории доступны как local[0-9]
#d-i apt-setup/local0/repository string \
#       http://local.server/debian stable main
#d-i apt-setup/local0/comment string local server
# Активировать строки для deb-src
#d-i apt-setup/local0/source boolean true
# URL публичного ключа локального репозитория; вы должны
# предоставлять ключ, или apt будет жаловаться о невозможности
# аутентифицировать репозиторий и закомментирует строку,
# описывающую этот репозиторий в sources.list
#d-i apt-setup/local0/key string http://local.server/key

# По умолчанию программа установки требует, чтобы репозитории
# аутентифицировались с помощью известного ключа gpg.
# Этот параметр выключает данную аутентификацию.
# Предупреждение: это небезопасно, рекомендуется не делать этого.
#d-i debian-installer/allow_unauthenticated boolean true

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

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

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

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

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

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

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

  • print-server (сервер печати)

  • dns-server (DNS-сервер)

  • file-server (файловый сервер)

  • mail-server (почтовый сервер)

  • sql-database (база данных SQL)

  • laptop (для ноутбука)

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

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

#tasksel tasksel/first multiselect standard, web-server
# Если выбрана задача Рабочий стол, то установить рабочие столы
# kde и xfce вместо рабочего стола gnome по умолчанию.
#tasksel tasksel/desktop multiselect kde, xfce

# Отдельные дополнительные пакеты для установки
#d-i pkgsel/include string openssh-server build-essential
# Обновлять ли пакеты после debootstrap.
# Возможные значения: none, safe-upgrade, full-upgrade
#d-i pkgsel/upgrade select none

# Некоторые версии программы установки могут отсылать отчёт
# об установленных и используемых пакетах. По умолчанию данная
# возможность выключена, но отправка отчёта помогает проекту
# определить популярность программ и какие из них включать на CD.
#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 
>
> файл


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