Полезные советы по работе с 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";

 

Автор: Александр