Полезные советы по работе с Kickstart-ом инсталятора Anaconda
Полную документацию можно найти http://www.centos.org/docs/5/html/5.2/Installation_Guide/s1-kickstart2-howuse
%packages - Выбор пакетов
При использовании команды %packages можно определить набор пакетов, который должен быть установлен. Есть целый ряд так или иначе документированных вариантов, в котором они могут быть установлены.
--resolvedeps
Зависимости между пакетами будут автоматически разрешены. Это стандартное поведение применяемое по умолчанию в CentOS 5, так что этот вариант вам выбирать не нужно.
-- excludedocs
Пропуск установки файлов, помеченных как документация (все файлы которые помечены rpm -qld <имя пакета>)
--nobase
Skips installation of @Base. This won't work unless you know what you're doing as it might leave out packages required by post installation scripts
--ignoremissing
Игнорировать отсутствующие группы и отдельные пакеты, вместо того, чтобы спрашивать - "что делать"
Пример минимального набора пакетов для CentOS 4:
%packages --resolvedeps --excludedocs --nobase kudzu
Имейте в виду, что основные пакеты будут отсутствовать. Там не будет rpm, yum, vim, dhcp-client и раскладок клавиатуры. Kudzu необходим, так как без него программа инсталяции не запустится.
Пример минимального набора пакетов для CentOS 5:
%packages --excludedocs --nobase @Core
В данном примере мы имеем, опять же, очень минимизированную базовую систему с ограниченным функционалом.
Примечание --resolvedeps используемый в CentOS 4, не требуется для CentOS 5, так как при установке автоматически решаются все зависимости.
Разметка
Если начинаете с неразмеченного диска, или неразмеченного образа виртуальной машины, воспользуйтесь параметром --initlabel. Он подготовит раздел и инициализирует его. Или Анаконда попросит вас в интерактивном режиме подтвердить создание раздела. Например, для очистки всех разделов на xvda, и инициализации раздела диска, если он еще не существует, вы можете использовать:
clearpart --all --initlabel --drives=xvda
Запуск anaconda в текстовом режиме
Вы, наверное, уже знаете, что вы можете запустить инсталятор в командном режиме, а не в иксах. Для этого надо добавить строчку "text" в файл кикстарта. Но есть другой вариант установить текстовый режим. Замена строки "text" на "cmdline", в файле кикстарта, сделает всю установку системы в текстовом режиме. Это особенно полезно, когда вы используете %packages --nobase или выполняются сложные скрипты, тем самым это сократит время отладки, так как вы будете видеть на выходе все сценарии, которые выполняются в процессе установки.
Включение/выключение firstboot
Вы все знаете firstboot, это помощник первоначальной настройки системы после установки. Он может быть включен или выключен, добавлением строки или "firstboot --enable", либо "firsboot --disable" в секции команд файла кикстарта.
Различные дисплейные терминалы
Alt-F1
Здесь отображается инсталляционный диалог при использовании параметров "text" или "cmdline".
Alt-F2
Командная оболочка
Alt-F3
Здесь при инсталяции показывается лог сообщений от программы установки
Alt-F4
Здесь отображается лог сообщений ядра и т.п.
Alt-F5
Отображаются все остальные сообщения
Alt-F7
Выход в графический режим инсталяции если он используется.
Раздел настроек перед установкой - %pre, и после нее - %post
Вы можете добавить команды, которые будут выполнены в системе сразу после обработки файла ks.cfg. Этот раздел должен распологаться в конце файла kickstsrt (после команд) и должен начинаться с команды %pre. Обратите внимание, вы можете обращаться к сети в разделе %pre; однако, в этом месте сервер имен еще не настроен, поэтому работать будут только IP адреса.
%pre # добавить комментарий в /etc/motd echo "Kickstart-installed Red Hat Linux `/bin/date`" > /etc/motd # определить дополнительный сервер имён echo "nameserver 10.10.0.2" >> /etc/resolv.conf
В этом примере создается файл "сообщение дня", содержащий дату выполнения установки. Здесь также обходится ограничение команды network на использование только одного сервера имен, при помощи добавления адреса другого сервера в /etc/resolv.conf.
Замечание - обратите внимание, пред-установочный сценарий в окружении chroot не выполняется.
У вас есть возможность задавать команды, выполнятся которые будут после завершения установки. Этот раздел распологается в конце файла kickstart и должен начинаться с команды %post.
Примечание - Если вы используете статические IP, включая сервер имен, в разделе %post вы можете обратится к сети и разрешить IP адреса. Если вы используете DHCP, создание файла /etc/resolv.conf еще не завершено. Вы можете обратится к сети, но вы не можете разрешить IP адреса. Поэтому, если вы используете DHCP, в разделе %post вы должны указывать IP адреса.
Ниже находится пример раздела %post, в котором создается файл "сообщение дня", содержащий дату проведения установки при помощи kickstart., и обходится ограничение команды network на использование только одного серевера имен, при помощи добавления другого сервера в /etc/resolv.conf.
%post # добавить комментарий в /etc/motd echo "Kickstart-installed Red Hat Linux `/bin/date`" > /etc/motd # определить дополнительный сервер имён echo "nameserver 10.10.0.2" >> /etc/resolv.conf
Замечание - Сценарий после установки выполняется в окружении chroot; поэтому выполнить некоторые задачи, такие как копирование сценариев или пакетов RPM, не получится.
--nochroot
Позволяет вам указать команды, которые вы бы хотели выполнить вне окружения chroot.
- Копирование файла /etc/resolv.conf в только что созданную файловую систему
%post --nochroot cp /etc/resolv.conf /mnt/sysimage/etc/resolv.conf
--interpreter /usr/bin/perl
Позволяет вам указывать другой язык сценариев, например Perl. Вы можете заменить /usr/bin/perl языком сценариев по своему усмотрению.
В следующем примере, сценарий Perl заменяет /etc/HOSTNAME.
%post --interpreter /usr/bin/perl # заменить /etc/HOSTNAME open(HN, ">HOSTNAME"); print HN "1.2.3.4 an.ip.address\n";