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

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

Пример файла ответов, который можно взять за основу доступен здесь http://d-i.alioth.debian.org/manual/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, если они передаются в параметрах загрузки.

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

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

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

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

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

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

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

Замечание

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

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

Замечание

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

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

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

auto url=autoserver

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

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

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

Подсказка

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

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

Следующие псевдонимы могут быть полезны при автоматизации (режим auto).

auto auto-install/enable
classes auto-install/classes
fb debian-installer/framebuffer
locale debian-installer/locale
priority debconf/priority
файловый preseed/file
url preseed/url
interface netcfg/choose_interface
hostname    netcfg/get_hostname
domain netcfg/get_domain
protocol mirror/protocol
suite mirror/suite

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

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

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

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

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



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