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

Во-первых, нужно создать файл ответов и сделать его доступным для использования. Создание файла ответов описывается позже в этом приложении. Разместить его в нужном месте довольно просто для сетевой автоматической установки и при чтении файла с дискеты или usb-носителя. Если нужно включить этот файл на CD или DVD, то придётся обновлять ISO образ. Здесь не будет описано как поместить файл ответов в initrd; обратитесь к документации разработчика debian-installer.

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

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

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

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

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

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

Задаваемые параметры при загрузке:
- при загрузке из сети:
  preseed/url=http://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- при загрузке с изменённого CD:
  preseed/file=/cdrom/preseed.cfg
  preseed/file/checksum=5da499872becccfeda2c4872f9171c3d

- при установке с USB носителя (поместите файл ответов в
  корневой каталог USB носителя):
  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, просто укажите путь/до/переменная=значение для любой автоматизируемой переменной, описанной в примерах в этом приложении. Если значение будет использоваться для настройки пакетов в устанавливаемой системе, то нужно перед переменной указывать владелец[19], например, владелец:путь/до/переменной=значение. Если вы не указываете владельца, то значение переменной не копируется в базу данных debconf устанавливаемой системы и поэтому не будет использоваться во время настройки соответствующего пакета.

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

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

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

Примечание

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

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

Примечание

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

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

There are several features of Debian Installer that combine to allow fairly simple command lines at the boot prompt to result in arbitrarily complex customized automatic installs.

This is enabled by using the Automated install boot choice, also called auto for some architectures or boot methods. In this section, auto is thus not a parameter, it means selecting that boot choice, and appending the following boot parameters on the boot prompt.

To illustrate this, here are some examples that can be used at the boot prompt:

auto url=autoserver

This relies on there being a DHCP server that will get the machine to the point where autoserver can be resolved by DNS, perhaps after adding the local domain if that was provided by DHCP. If this was done at a site where the domain is example.com, and they have a reasonably sane DHCP setup, it would result in the preseed file being retrieved from http://autoserver.example.com/d-i/wheezy/./preseed.cfg.

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

The auto boot choice is not yet defined on all arches. The same effect may be achieved by simply adding the two parameters auto=true priority=critical to the kernel command line. The auto kernel parameter is an alias for auto-install/enable and setting it to true delays the locale and keyboard questions until after there has been a chance to preseed them, while priority is an alias for debconf/priority and setting it to critical stops any questions with a lower priority from being asked.

Для автоматизации с использованием 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. Использование сервера 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 тоже возможна, но с большой осторожностью.



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