B.2. Использование автоматической установки

You will first need to create a preconfiguration file and place it in the location from where you want to use it. Creating the preconfiguration file is covered later in this appendix. Putting it in the correct location is fairly straightforward for network preseeding or if you want to read the file off a usb-stick. If you want to include the file in an installation ISO image, you will have to remaster the image. How to get the preconfiguration file included in the initrd is outside the scope of this document; please consult the developers' documentation for debian-installer.

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

B.2.1. Загрузка файла ответов

Если используется метод initrd, то нужно убедиться, что файл с именем preseed.cfg лежит в корневом каталоге initrd. Программа установки автоматически проверяет наличие этого файла и загружает его.

Для других методов автоматической установки нужно указать при загрузке программе установки какой файл использовать при загрузке. Это можно сделать через параметр загрузки ядра, вручную во время загрузки или изменив файл настройки системного загрузчика (например, syslinux.cfg) и добавить параметр в конец строки append для ядра.

Если вы указываете файл ответов в настройке системного загрузчика, то можно изменить конфигурацию таким образом, чтобы не нажимать клавишу ввод для загрузки программы установки. Для syslinux это достигается установкой timeout равным 1 в файле syslinux.cfg.

Чтобы убедиться, что программа установки получила правильный файл ответов, можно дополнительно указать контрольную сумму файла. Это значение вычисляется с помощью md5sum, и если его указать, то оно должно соответствовать указываемому файлу, иначе программа установки не будет использовать данный файл.

Boot parameters to specify:
- if you're netbooting:
  preseed/url=http://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d
- or
  preseed/url=tftp://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- if you're booting a remastered installation image:
  preseed/file=/cdrom/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

- if you're installing from USB media (put the preconfiguration file in the
  toplevel directory of the USB stick):
  preseed/file=/hd-media/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

Заметим, что preseed/url можно укоротить до url, preseed/file — до file, а preseed/file/checksum — од preseed-md5, если они передаются в параметрах загрузки.

B.2.2. Использование параметров загрузки для автоматизации

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

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

Чтобы установить значение, используемое внутри debian-installer, просто укажите путь/до/переменная=значение для любой автоматизируемой переменной, описанной в примерах в этом приложении. Если значение будет использоваться для настройки пакетов в устанавливаемой системе, то нужно перед переменной указывать владелец[18], например, владелец:путь/до/переменной=значение. Если вы не указываете владельца, то значение переменной не копируется в базу данных debconf устанавливаемой системы и поэтому не будет использоваться во время настройки соответствующего пакета.

Обычно, автоматизация ответов приводит к тому, что вопрос задан не будет. Чтобы установить для вопроса ответ по умолчанию и оставить вопрос задаваемым, используйте в качестве оператора «?=» вместо «=». Смотрите также Раздел B.5.2, «Использование автоматической установки для изменения значений по умолчанию».

Заметим, что для некоторых переменных, которые часто задаются в приглашении загрузчика, имеются короткие названия. Если имеется короткое название, то оно используется в примерах в этом приложении вместо полного имени переменной. Например, переменная preseed/url сокращается до url. Ещё пример: псевдоним tasks раскрывается в tasksel:tasksel/first.

Обозначение «---» в параметрах загрузки имеет специальное значение. Параметры ядра, указанные после «---», могут быть скопированы в конфигурацию установленного системного загрузчика (если это умеет программа установки для загрузчика). Программа установки автоматически фильтрует все параметры (например, параметры предварительной настройки), которые распознаёт.

[Примечание] Примечание

В настоящее время ядра linux версии (2.6.9 и новее) максимально могут принять 32 параметра в командной строке и 32 параметра через переменные окружения, считая все параметры, добавляемые программой установки по умолчанию. Если это число превышено, то ядро прекращает работу с ошибкой. (Для ранних версий ядер эти значения меньше.)

В большинстве установок некоторые параметры по умолчанию в файле конфигурации загрузчика, типа vga=normal, можно безопасно удалить, что может позволить вам добавить больше параметров автоматизации.

[Примечание] Примечание

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

B.2.3. Автоматический режим

Есть несколько возможностей программы установки Debian, объединив которые с помощью простых команд в приглашении к загрузке, можно получить автоматическую установку любого уровня настраиваемости.

Это включается с помощью выбора Automated install при загрузке, также называемом auto для некоторых архитектур или методов загрузки. В этом разделе auto означает не параметр, а выбор метода загрузки и добавляется в загрузочные параметры в приглашении к загрузке.

Вот один из примеров использования настроек в приглашении к загрузке:

auto url=autoserver

В этом случае для установки согласно полученным настройкам с DHCP сервера будет найдена машина autoserver из записей DNS, возможно к имени будет добавлено имя локального домена, если он передаётся в DHCP. Если в сети используется доменное имя example.com, и этот домен передаётся по DHCP, то в результате файл с ответами будет получен с http://autoserver.example.com/d-i/bullseye/./preseed.cfg.

Последняя часть этого url (d-i/bullseye/./preseed.cfg) берётся из auto-install/defaultroot. По умолчанию в него включён каталог bullseye, чтобы для будущих версий можно было задать своё название, что позволит людям контролировать процесс перехода на новую версию. Часть /./ используется для указания корня, относительно которого будут заданы остальные пути (для использования в preseed/include и preseed/run). Это позволяет указывать файлы с полным URL (пути, начинающиеся с /) или даже пути относительно места, где был найден последний файл ответов. Это может быть использовано для написание более переносимых сценариев, для того чтобы полное дерево сценариев можно было переместить в новое место ничего при этом не сломав, например скопировать файлы на USB-носитель, если ранее они брались с веб-сервера. Продолжая пример, если в файле ответов значение preseed/run заменить на /scripts/late_command.sh, то файл будет получен с http://autoserver.example.com/d-i/bullseye/./scripts/late_command.sh.

Если в сети нет локальных серверов DHCP или DNS, или, если вы не хотите использовать пути по умолчанию к preseed.cfg, то вы всё ещё можете явно задать url, и, если вы не используете элемент /./, то это будет началом пути (третий / в URL). Вот пример, для которого нужна минимальная поддержка служб в локальной сети:

auto url=http://192.168.1.2/path/to/mypreseed.file

Это работает так:

  • если в URL не указан протокол, то используется http,

  • если в имени машины нет точек, то будет добавлен домен, полученный по DHCP, и

  • если нет / после имени машины, то добавляется путь по умолчанию.

Также, помимо указания url, вы можете задать настройки, которые не влияют напрямую на поведение самого debian-installer, но будут переданы во все сценарии, заданные заданы с помощью preseed/run в загруженном файле ответов. В настоящий момент, как пример использования, есть только auto-install/classes с псевдонимом classes. Это можно использовать так:

auto url=example.com classes=class_A;class_B

classes, например, может означать тип устанавливаемой системы или используемую локализацию.

Естественно, можно расширить эту концепцию, и если вы это делаете,имеет смысл задействовать пространство имён auto-install. Это может выглядеть как auto-install/style, что затем будет использовано в ваших сценариях. Если вы думаете, что вам это нужно, напишите в список рассылки , для того чтобы мы смогли избежать конфликта имён, и возможно, добавили псевдонимы для ваших параметров.

Выбор загрузки auto пока определён не для всех архитектур. Такой же эффект можно получить просто добавив два параметра auto=true priority=critical в командной строке параметров ядра. Параметр ядра auto — это псевдоним для auto-install/enable и установка его в trueзадерживает выдачу вопросов о локали и клавиатуре, чтобы была возможность настроить их автоматически, а priority является псевдонимом для debconf/priority, и установка в значение critical заставляет программу установки не задавать вопросы с меньшим уровнем важности.

Для автоматизации с использованием DHCP могут пригодиться следующие дополнительные параметры: interface=auto netcfg/dhcp_timeout=60, будет выбрана первая рабочая сетевая карта, ответ на DHCP запрос будет ожидаться больше чем обычно.

[Подсказка] Подсказка

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

B.2.4. Полезные в автоматизации псевдонимы

При использование автоматизации установки (режим auto) могут пригодиться следующие псевдонимы. Заметим, что сокращаются только имена вопросов, и вам всегда нужно указывать ещё и значение. Например, auto=true или interface=eth0.

priority debconf/priority
fb debian-installer/framebuffer
language debian-installer/language
country debian-installer/country
locale debian-installer/locale
theme debian-installer/theme
auto auto-install/enable
classes auto-install/classes
файловый preseed/file
url preseed/url
domain netcfg/get_domain
hostname    netcfg/get_hostname
interface netcfg/choose_interface
protocol mirror/protocol
suite mirror/suite
modules anna/choose_modules
recommends base-installer/install-recommends
tasks tasksel:tasksel/first
desktop (рабочий стол) tasksel:tasksel/desktop
dmraid disk-detect/dmraid/enable
keymap keyboard-configuration/xkb-keymap
preseed-md5 preseed/file/checksum

B.2.5. Examples of boot prompt preseeding

Here are some examples of how the boot prompt might look like (you will need to adapt this to your needs).

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

B.2.6. Использование сервера DHCP для указания файлов автоматической конфигурации

Также возможно использовать DHCP для указания файла автоматической конфигурации, загружаемого по сети. DHCP позволяет указать имя файла. Обычно, он указывается для способа установки по сети, но если он задан в виде URL, то установочный носитель, который поддерживает автоматическую установку по сети, загрузит файл с указанного в URL адреса и использует его как файл автоматической установки. Вот пример, как можно настроить dhcpd.conf для третьей версии сервера ISC DHCP (Debian пакет isc-dhcp-server).

if substring (option vendor-class-identifier, 0, 3) = "d-i" {
    filename "http://host/preseed.cfg";
}

Заметим, что пример выше ограничивает использование имени файла только DHCP клиентами с идентификатором «d-i», поэтому он не влияет на простых DHCP клиентов, а только на программу установки. Вы также можете поместить текст в строфу указав определённую машину, чтобы избежать автоматизации всех установок в сети.

При автоматизации с помощью DHCP лучше указывать только значения специфичные для вашей сети, например, желаемые сервера-зеркала Debian. В этом случае при установке по сети машины получат правильные сервера-зеркала, а оставшаяся установка будет выполнена в интерактивном режиме. Использование DHCP для полной автоматической установки Debian тоже возможна, но с большой осторожностью.



[18] Владелец переменной debconf (или шаблона) — это, обычно, имя пакета, в котором содержится соответствующий шаблон debconf. Переменными самой программы установки владеет «d-i». Шаблоны и переменные могут иметь более одного владельца, что влияет на их удаление из базы данных debconf при вычистке пакета.