
Сразу по делу. Если хочешь сократить развёртывание до минуты – используй конфигурационный файл ks.cfg. Не GUI, не ручной ввод параметров. Только текст. Только контроль. Только стабильность.
Сценарий должен лежать либо локально, либо на HTTP(S)/FTP/NFS. Пример строк запуска через PXE:
linux inst.ks=http://192.168.0.10/ks.cfg
Или с флешки:
linux inst.ks=hd:LABEL=INSTALL:/ks.cfg
Нюанс: в Red OS секция %packages обязательна. Без неё получишь полупустую систему, даже без shell’а. Убедись, что указал нужные группы, например:
%packages
@core
chrony
vim
%end
Помни: некоторые пакеты могут конфликтовать с системными службами по умолчанию. Проверяй зависимости руками, особенно при использовании --excludedocs или --nobase.
Важно! В Red OS не работают некоторые опции, привычные по CentOS. Например,
langsupportигнорируется – толькоlang.
Идём дальше. Секция %post – это ад. С ней всё может пойти не так. Скрипты выполняются в chroot. Если нужны внешние команды – используй:
%post --interpreter /bin/bash --nochroot
Но будь осторожен – пути к бинарникам будут другие. Не забудь монтировать вручную нужные директории.
Сеть? Только через network --bootproto. DHCP, статический адрес, DNS – всё прописывай заранее. Иначе получишь машину без связи.
network --device=eth0 --bootproto=static --ip=192.168.1.100 --netmask=255.255.255.0 --gateway=192.168.1.1 --nameserver=8.8.8.8
Внимание! Если используешь LVM – проверь, как именуются тома. Red OS иногда по-своему переименовывает Volume Group в процессе.
Финал. Всё это не просто конфигурация. Это сценарий. Скрипт, который должен отрабатывать без единой ошибки. Минимум интерактива, максимум контроля.
Хочешь стабильный результат – тестируй каждый флаг, каждую строку. И никогда не копируй чужие примеры без разбора.
Содержание статьи
Подготовка конфигурационного файла Kickstart для Red OS
Первая строка – ключевая:
install
Это не обсуждается. Используй только url или nfs для источника. Пример:
url --url=http://192.168.1.10/repo/BaseOS
Прокси? Забудь. Лишняя точка отказа.
Язык и клавиатура:
lang ru_RU.UTF-8
keyboard --vckeymap=ru --xlayouts='ru'
Настройка дисков: здесь чаще всего всё ломается. Используй clearpart и autopart с умом:
clearpart --all --initlabel
autopart --type=lvm
Или будь жестче. Разметка вручную – путь к стабильности:
part /boot --fstype="xfs" --size=1024
part pv.01 --size=1 --grow
volgroup VolGroup00 pv.01
logvol / --vgname=VolGroup00 --size=8192 --name=LogVol00 --fstype="xfs"
Сеть? Укажи жестко:
network --bootproto=static --ip=192.168.1.20 --netmask=255.255.255.0 --gateway=192.168.1.1 --device=eth0 --hostname=server01.local
Без rootpw ничего не сдвинется. Шифруй:
rootpw --iscrypted $6$abcd1234$uT67abcdeX.../
Важно: Никогда не оставляй
rootpwв открытом виде. Хешируй заранее:openssl passwd -6
Часовой пояс:
timezone Europe/Moscow --isUtc
Службы? Включай только то, что нужно. Отключи лишнее:
services --enabled=sshd,chronyd --disabled=NetworkManager
Раздел пакетов – зона риска. Укажи только нужные группы. Пример:
%packages
@^minimal-environment
bash-completion
net-tools
%end
Скрипты после установки – палочка-выручалочка. Расставь приоритеты:
%post --log=/var/log/ks-post.log
echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config
systemctl enable sshd
%end
Внимание!
%post– место, где можно угробить всё. Проверяй каждую строку дважды.
Проверка конфига? Запускай: ksvalidator /root/ks.cfg. Не пропускай ошибки. Валидация – твой щит.
Вот и всё. Дальше – только проверка в бою. Либо работает, либо перезаписывай и снова катай образ.
Организация сетевой установки Red OS через PXE-сервер
Запусти TFTP и DHCP на одной машине. Не усложняй. Не разбивай на два хоста без крайней необходимости. Используй dnsmasq. Настройка минимальна, но коварна.
Вот базовый конфиг для /etc/dnsmasq.conf:
port=0
interface=eth0
bind-interfaces
dhcp-range=192.168.1.100,192.168.1.200,12h
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-boot=pxelinux.0
Не забудь про SELinux. TFTP с ним дружит не всегда. Проверь:
setsebool -P tftp_home_dir=1
restorecon -R /var/lib/tftpboot
Залей pxelinux.0 и сопутствующее из пакета syslinux. Каталог /var/lib/tftpboot/pxelinux.cfg обязателен. Без него – черный экран.
Пример файла default внутри pxelinux.cfg:
DEFAULT menu
PROMPT 0
TIMEOUT 100
ONTIMEOUT linux
LABEL linux
MENU LABEL Установка RedOS по сети
KERNEL vmlinuz
APPEND initrd=initrd.img inst.ks=http://192.168.1.1/ks.cfg inst.repo=http://192.168.1.1/os
Важно указать inst.ks и inst.repo. Без этих параметров ядро не найдет ни скрипт настройки, ни источник образа. Бессмысленная загрузка. Пустой экран. Потерянное время.
HTTP-сервер – обычный Apache или nginx. Без фантазий. Распакуй ISO в директорию, скажем, /var/www/html/os. Проверь, чтобы vmlinuz и initrd.img были в корне TFTP. Их ищет BIOS. Там не прощают вложенных директорий.
Важно! Не полагайся на UEFI, если BIOS-машины в инфраструктуре еще дышат. Заставят пересобирать всё по-другому.
Проверка? Подними виртуалку без диска. Задействуй сетевую карту с поддержкой PXE. Посмотри, идет ли загрузка. Если нет – ищи ошибки в логах dnsmasq или попробуй tcpdump -i eth0 port 69. Молчит? Значит, TFTP не работает. Говорит, но нет ответа? Возможно, DHCP не отдает правильный путь.
Подводные камни: MTU. Jumbo-фреймы и PXE – несовместимы. VLAN? Не каждая сетевая карта передает тег корректно на этапе инициализации. Проверяй железо.
Помните! Даже одна опечатка в имени файла или пути – и вы погружаетесь в болото бесконечного PXE-загрузочного экрана.
Если всё сделано правильно – установка стартует сама. Без вопросов. Без взаимодействия. Просто работает. Или не работает – тогда читай логи и заново пересматривай конфигурацию. PXE не прощает невнимательности.
Проверка и отладка автоматической установки Red OS
Отказ по сети? Значит, не подтянулся NetworkManager или неверно указан интерфейс. Проверь ip a внутри chroot, если система вообще загрузилась. Часто забывают добавить DEVICE=eth0 и ONBOOT=yes в шаблон ifcfg-*. Без этого – мимо.
Грузится не тот загрузчик? Проверь bootloader в конфиге: location=mbr или location=partition. Для UEFI нужна отдельная /boot/efi, форматировать в FAT32, метка – ESP. Иначе не взлетит.
Застревание на этапе установки пакетов? Это часто указывает на битый образ ISO, некорректный путь до репозитория (url --url=) или отсутствие DNS. Проверь доступность сервера через curl или wget из временной консоли Ctrl+Alt+F2. Обрати внимание: даже если диск монтируется – это не значит, что всё ок. Репозиторий может не содержать базовые группы.
Важно помнить: если в логах нет явной ошибки, это не значит, что её нет. Ищи косвенные признаки – зависания, тайм-ауты, повторы операций.
Проблемы с разделами? Используй parted и lsblk. Если ты указал ручную схему, проверь, созданы ли нужные точки монтирования. Особенно следи за --fstype=xfs и метками томов. Мало прописать mountpoint, нужно ещё и указать --size= и --onpart= если диск нестандартный.
Нет root-пароля после установки? Проверяй строку rootpw в ks-файле. Забыл --iscrypted? Всё, привет, без доступа. Генерируй заранее через openssl passwd -6.
Скрипты в %post? Не сработали? Наверняка забыта директива --interpreter. По умолчанию используется /bin/sh, а многие команды требуют bash. Лови ошибки через %post --log=/mnt/sysimage/root/post.log.
Внимание! Всегда проверяй права на директории и наличие SELinux-контекста, особенно если используешь
chrootв %post или %pre. Контекст может всё сломать.
Совет: Используй virt-manager или virt-install для тестирования без реального железа. Указывай виртуальный CD-ROM, PXE или NFS, прогоняй конфиг десятки раз. Только так ты выловишь нюансы.
И последнее: создавай checksum-файл и сверяй его на каждой итерации. Даже один лишний байт – и у тебя не тот результат. Паранойя? Нет. Практика.

