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