B.2. Використання preseeding

Спочатку вам потрібно створити файл попередньої конфігурації і розмістити його в тому місці, звідки ви хочете його використовувати. Створення файлу попередньої конфігурації описано далі у цьому додатку. Помістити його в потрібне місце досить просто для мережевого попереднього завантаження або якщо ви хочете прочитати файл з USB-накопичувача. Якщо ви хочете включити файл до інсталяційного ISO-образу, вам доведеться ремастерити образ. Як отримати файл попередньої конфігурації до initrd, не є предметом розгляду у цьому документі; будь ласка, зверніться до документації розробників для debian-installer.

Приклад файлу попередньої конфігурації, який ви можете використати як основу для власного файлу попередньої конфігурації, доступний за адресою https://d-i.debian.org/manual/example-preseed.txt. Цей файл базується на фрагментах конфігурації, включених до цього додатку.

B.2.1. Завантаження файлу попередньої конфігурації

Якщо ви використовуєте попереднє висівання initrd, вам потрібно лише переконатися, що файл з назвою preseed.cfg включено до кореневого каталогу initrd. Програма встановлення автоматично перевірить наявність цього файлу і завантажить його.

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

Якщо ви вказали файл попередньої конфігурації у конфігурації завантажувача, ви можете змінити конфігурацію так, щоб вам не потрібно було натискати клавішу Enter для завантаження програми встановлення. Для syslinux це означає встановлення тайм-ауту на 1 в syslinux.cfg.

Щоб переконатися, що програма встановлення отримає правильний файл попередньої конфігурації, ви можете додатково вказати контрольну суму для цього файлу. Наразі це має бути md5-сума, і якщо її вказано, вона має збігатися з файлом попередньої конфігурації, інакше програма встановлення відмовиться її використовувати.

Параметри завантаження, які слід вказати:
- якщо ви завантажуєтеся по мережі:
  preseed/url=http://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d
- або
  preseed/url=tftp://host/path/to/preseed.cfg
  preseed/url/checksum=5da499872becccfeda2c4872f9171c3d

- якщо ви завантажуєте відреставрований інсталяційний образ:
  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, просто передайте path/to/variable=value для будь-якої з попередньо заданих змінних, перелічених у прикладах у цьому додатку. Якщо значення має бути використано для налаштування пакунків для цільової системи, вам слід додати owner[19] змінної як у owner:path/to/variable=value. Якщо ви не вкажете власника, значення змінної не буде скопійовано до бази даних debconf у цільовій системі і, таким чином, залишиться невикористаним під час конфігурування відповідного пакунка.

Зазвичай, попереднє введення запитання таким чином означає, що воно не буде поставлене. Щоб встановити певне значення за замовчуванням для питання, але все одно поставити його, використовуйте «?=» замість «=» як оператор. Див. також Розділ B.5.2, «Використання попередньої обробки для зміни значень за замовчуванням».

Зверніть увагу, що деякі змінні, які часто задаються у запрошенні до завантаження, мають коротший псевдонім. Якщо доступний псевдонім, він використовується в прикладах у цьому додатку замість повної змінної. Наприклад, змінну preseed/url було змінено на url. Іншим прикладом є псевдонім tasks, який перекладається як tasksel:tasksel/first.

«---» у параметрах завантаження має особливе значення. Параметри ядра, які з'являються після останньої «---», можна скопіювати до конфігурації завантажувача встановленої системи (якщо це підтримується програмою встановлення завантажувача). Програма встановлення автоматично відфільтрує всі параметри (наприклад, параметри попередньої конфігурації), які вона розпізнає.

[Примітка] Примітка

Поточні ядра linux (2.6.9 і вище) приймають максимум 32 параметри командного рядка і 32 параметри оточення, включно з будь-якими параметрами, доданими за замовчуванням для програми встановлення. Якщо ці числа буде перевищено, ядро впаде у паніку (аварійно завершить роботу). (У попередніх версіях ядра ці значення були меншими.)

Для більшості інсталяцій, деякі параметри за замовчуванням у файлі конфігурації завантажувача, такі як vga=normal, можна безпечно вилучити, що дозволить вам додати більше параметрів для попереднього завантаження.

[Примітка] Примітка

Не завжди можливо вказати значення з пробілами для параметрів завантаження, навіть якщо ви відокремлюєте їх лапками.

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

Існує декілька особливостей програми встановлення, які в поєднанні дозволяють за допомогою досить простих командних рядків у завантажувальному вікні створювати як завгодно складні налаштовані автоматичні установки.

Це можна зробити за допомогою вибору завантаження Automated install, який також називається auto для деяких архітектур або способів завантаження. У цьому розділі auto не є параметром, а означає вибір цього варіанта завантаження і додавання наступних параметрів завантаження у запрошенні до завантаження. Див. Розділ 5.1.5, «Екран завантаження» для отримання інформації про те, як додати параметр завантаження.

Щоб проілюструвати це, наведемо кілька прикладів, які можна використовувати при завантажувальному запиті:

auto url=autoserver

Це залежить від наявності DHCP-сервера, який доставить машину до місця, де autoserver може бути розпізнано завдяки DNS, можливо, після додавання локального домену, якщо це було передбачено DHCP. Якщо це було зроблено на сайті з доменом example.com, і у них є нормальне налаштування DHCP, це призведе до того, що файл попереднього завантаження буде отримано з http://autoserver.example.com/d-i/trixie/./preseed.cfg.

Остання частина цієї адреси (d-i/trixie/./preseed.cfg) береться з auto-install/defaultroot. За замовчуванням, сюди входить каталог trixie, щоб у майбутніх версіях можна було вказати власне кодове ім'я і дозволити людям мігрувати вперед у контрольований спосіб. Біт /./ використовується для позначення кореня, відносно якого можна прив'язати наступні шляхи (для використання у командах preseed/include та preseed/run). Це дозволяє вказувати файли як повні URL-адреси, шляхи, що починаються з /, які таким чином закріплюються, або навіть шляхи відносно місця, де було знайдено останній попередньо завантажений файл. Це може бути використано для створення більш портативних скриптів, коли цілу ієрархію скриптів можна перемістити в нове місце, не порушуючи її, наприклад, скопіювавши файли на USB-накопичувач, коли вони були запущені на веб сервері. У цьому прикладі, якщо у файлі попереднього завантаження встановити preseed/run у /scripts/late_command.sh, то файл буде отримано з http://autoserver.example.com/d-i/trixie/./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

Класи можуть, наприклад, позначати тип системи, яку буде встановлено, або локалізацію, яку буде використано.

Звичайно, можна розширити цю концепцію, і якщо ви це зробите, доцільно використовувати для цього простір імен автоінсталяції. Таким чином, ви можете мати щось на кшталт 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=true або interface=eth0.

пріоритет debconf/priority
fb debian-installer/framebuffer
автоматично auto-install/enable
класи auto-install/classes
файл preseed/file
url preseed/url
тема debian-installer/theme
мова debian-installer/language
країна debian-installer/country
локаль debian-installer/locale
мапа клавіш keyboard-configuration/xkb-keymap
модулі anna/choose_modules
прошивка hw-detect/firmware-lookup
інтерфейс netcfg/choose_interface
домен netcfg/get_domain
hostname    netcfg/get_hostname
протокол дзеркало/протокол
набір дзеркало/набір
рекомендації base-installer/install-recommends
завдання tasksel:tasksel/first
робочий стіл tasksel:tasksel/desktop
preseed-md5 preseed/file/checksum

B.2.5. Приклади попереднього завантаження завантажувального запиту

Ось кілька прикладів того, як може виглядати запрошення до завантаження (вам потрібно буде адаптувати його до ваших потреб); див. також Розділ 5.1.5, «Екран завантаження»).

# Встановити французьку мову як мову та Францію як країну:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=fr country=FR --- quiet
# Щоб вибрати англійську мову як мову і Німеччину як країну, а також використовувати німецьку розкладку клавіатури:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz language=en country=DE locale=en_US.UTF-8 keymap=de --- quiet
# Щоб встановити робочий стіл MATE:
/install.amd/vmlinuz vga=788 initrd=/install.amd/gtk/initrd.gz desktop=mate-desktop --- quiet
# Щоб встановити веб-сервер завдання:
/install.amd/vmlinuz initrd=/install.amd/initrd.gz tasksel:tasksel/first=web-server ---

B.2.6. Використання DHCP-сервера для вказівки файлів попередньої конфігурації

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

якщо підрядок (опція vendor-class-identifier, 0, 3) = "d-i" {
    назва файлу "http://host/preseed.cfg";
}

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

Хорошим способом використання попереднього встановлення DHCP є встановлення лише значень, характерних для вашої мережі, наприклад, дзеркала Debian. Таким чином, при встановленні у вашій мережі буде автоматично вибрано хороше дзеркало, але решту інсталяції можна виконати інтерактивно. Використання попереднього встановлення DHCP для повної автоматизації встановлення Debian слід використовувати з обережністю.



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