Bog BOS kickstart - встановлення Linux у пакетному режимі

Система інсталяції Linux anaconda (Fedora, RHEL/CentOS) має пакетний режим, коли команди установки беруться з файлу. Це дозволяє встановити сотні серверів в автоматичному режимі один раз відредагувавши протокол установки. Обережно: деякі версії установника створюють не зовсім коректний anaconda-ks.cfg, наприклад, необхідно додавати суфікси архітектури ".i386" до імен пакетів, що видаляються з групи. До RHEL 7 була можливість оновлення системи пакетного режиму.

Для встановлення в пакетному режимі необхідно:

  1. створити текстовий файл із командами kickstart
  2. викласти його у доступному установнику місці (диск, флешка, CD/DVD, мережевий сервер)
  3. забезпечити доступність інсталяційних файлів для інсталятора - копія дерева файлів (диск, флешка, CD/DVD, мережевий сервер)
  4. завантажити установник та вказати йому місцезнаходження файлу з командами kickstart

Якщо вказано пристрій, але не вказано ім'я файлу, шукається файл ks.cfg в корені.

Утиліта ksvalidator (пакет pykickstart) дозволяє перевірити синтаксис командного файлу (не перевіряє секції %packages, %pre та %post).

Секція вибору пакетів починається з команди %packages, завершується командою %end, можна використовувати декілька секцій. Необхідні пакети можна вказувати по одному на рядку за допомогою імені пакета, імені або ідентифікатора групи пакетів (перед ім'ям необхідно вказати символ "@"), імені або ідентифікатора супергрупи (environment) пакетів (перед ім'ям необхідно вказати символи "@^"). Групи Core та Base включаються за замовчуванням. У іменах пакетів можна використовувати шаблони ('*') - не рекомендую, т.к. результат може здивувати, особливо після появи нової версії. Для виключення пакетів та групипакетів треба вказати їхнє ім'я, попереднє символом "-". Імена та вміст груп та супергруп можна переглянути у файлах repodata/*-варіант-архітектура-comps.xml. В описі групи та супергрупи пакети позначаються як

  • mandatory (обов'язково встановлюються, якщо вибрано пакет)
  • default (встановлюються, якщо вибрано ппакет, але можна скасувати)
  • optional (необхідно згадати явно)

Опції команди %packages:

  • --excludedocs # не встановлювати документацію, що міститься в пакеті (/usr/share/doc*).
  • --ignoremissing # ігнорувати відсутні пакети (за замовчуванням установка переривається)
  • --nobase # не встановлювати групу @Base
  • --nocore # не встановлювати групу @Core, після встановлення система не завантажиться
  • --multilib # встановлювати 32-бітові пакети (.i686) на додаток до 64-бітових (.x86_64); пакети, що встановлюються за залежностями, встановлюються лише у 64-бітній версії або за потребою
  • --instLangs список-мов-через-двокрапка # з пакетів вибираються тільки зазначені файли з перекладами, дія непомітна (RHEL 7.4)
  • --excludeWeakdeps # не встановлювати пакети слабких залежностей (Recommends і Supplements)

Опції для груп пакетів:

  • --nodefaults (встановлювати лише обов'язкові пакети)
  • --optional (включити в установку всі опціональні пакети)

Секція доустановлювальних скриптів починається з команди %pre, завершується командою %end. Включені сюди команди виконуються після аналізу скрипта kickstart, але до початку установки (оброблені lang, keyboard і url). У цей час вже працює мережа, але не працює DNS. chroot не встановлено. Приклад описує створення скрипта kickstart, який потім включається командою %include. Ключі:

  • --interpeter=/usr/bin/bash
  • --erroronfail # зупиняти установку у разі помилки
  • --log=/mnt/sysimage/root/ks-pre.log # звідки візьметься цей каталог до встановлення?

Введення параметрів із терміналу (стара anaconda):

Передача параметрів у секцію команд із рядка завантаження (awk відсутня в /bin:/usr/bin, ім'я параметра не може містити '.')

Секція передвстановлених скриптів починається з команди %pre-install, завершується командою %end. Включені сюди команди виконуються після створення та монтування файлових систем в /mnt/sysimage, до chroot.

  • --interpeter=/usr/bin/python
  • --erroronfail # зупиняти установку у разі помилки
  • --log=/mnt/sysimage/root/ks-pre.log #

Секція післяустановних скриптів наприкінці файлу починається з команди %post, завершується командою %end. Увімкнені сюди команди виконуються після встановлення перед перезавантаженням. Попередньо виконується chroot на /mnt/sysimage (свіжовстановлена ​​коренева файлова система), якщо не вказано інше. Можна мати кілька секцій %post (з chroot та без). У цей момент вже працює мережа, але не працює DNS (крім випадків статичного налаштування мережі). Ключі:

  • --interpeter=/usr/bin/bash
  • --erroronfail # зупиняти установку у разі помилки, а сенс? система вже встановлена
  • --log=/root/ks-post.log
  • --nochroot # встановлена ​​система доступна в /mnt/sysimage

Секція обробки помилок інсталятора починається з команди %traceback, завершується командою %end. Увімкнені сюди команди виконуються у разі виникнення помилок. Можливо кілька секцій, вони виконуються послідовно. Ключі:

  • --interpeter=/usr/bin/bash
  • --erroronfail # зупиняти установку у разі помилки
  • --log=журнал

Секція обробки помилок під час встановлення починається з команди %onerror, завершується командою %end. Включені сюди команди виконуються у разі виникнення помилок установки (не вдалося запустити vnc, не вдалося встановити вказаний пакет). Можливо кілька секцій, вони виконуються послідовно. Ключі:

  • --interpeter=/usr/bin/bash
  • --erroronfail # зупиняти установку у разі помилки
  • --log=журнал

Секція %addon містить додаткові (і ніде не описані) команди Red Hat, починається з команди %addon, завершується командою %end:

  • %addon com_redhat_kdump --reserve-mb= # налаштування kdump
  • %end