Пингвин с одного пинка
Сергей Яремчук
Иногда возникает ситуация, когда необходимо установить дистрибутив Linux
сразу на несколько компьютеров или часто его переустанавливать. При этом
процесс установки в конце концов начинает надоедать, и хочется как-то сократить
или автоматизировать его. Все проще простого: в RedHat, начиная с версии 5.0,
имеется технология, позволяющая установить его буквально за пару кликов, при
этом все необходимые переменные будут выставлены, диск разбит на указанные
разделы и установлены выбранные пакеты.
Все началось с того, что при очередной установке RedHat 9 я не обратил
внимание на сообщение (см. скриншот), в котором были указаны файлы протокола
установки и некий файл kickstart.

Если с первым файлом /root/install.log все ясно с
первого взгляда, в нем содержится список всех установленных пакетов (как не
убирал лишнее, все равно оказалось много хлама) и ошибки при установке
некоторых из этих пакетов. Приблизительно в таком виде:
Установка 887
пакетов
Установка
glibc-common-2.3.2-11.9.
….
Установка
hwdata-0.75-1.
Файл OMF [/usr/local/share/omf/file-roller/file-roller-C.omf]
не является допустимым с точки зрения ScrollKeeper-OMF DTD: /usr/share/xml/scrollkeeper/dtds/scrollkeeper-omf.dtd
Невозможно
зарегистрировать /usr/local/share/omf/file-roller/file-roller-C.omf
Установка
redhat-logos-1.1.12-1
И так все 887 пакетов, которые установлены,
поэтому после инсталляции можно спокойно просмотреть, что там все-таки наустанавливали
и после этого уже не удивляться, куда все свободное место делось. А вот второй
файл /root/anaconda-ks.cfg меня удивил и озадачил одновременно. Посмотрите
сами, что там нашлось:
# Kickstart file automatically
generated by anaconda.
install
lang ru_RU.UTF-8
langsupport --default
ru_RU.UTF-8 ru_RU.UTF-8 ru_UA.UTF-8 uk_UA.UTF-8
keyboard ru_win
mouse genericwheelps/2 --device
psaux
xconfig --card
"RIVA128" --videoram 4096 --hsync 30-70 --vsync 50-120 --resolution
1024x768 --depth 16 --startxonboot
--defaultdesktop gnome
network --device eth0 --bootproto
static --ip 192.168.0.4 --netmask 255.255.255.0 --hostname grinder
rootpw --iscrypted
$1(zf6ola?s$lNcDbUeKI9l&&AKJ06x4S0
firewall --medium
--trust=eth0
authconfig --enableshadow
--enablemd5 --enablesmbauth --smbservers grinder --smbworkgroup Gljuk
timezone Europe/Kiev
bootloader --location=mbr
# The following is the partition
information you requested
# Note that any partitions you
deleted are not expressed
# here so unless you clear all
partitions first, this is
# not guaranteed to work
#clearpart --linux
#part / --fstype ext3 --onpart
hda11
#part /mnt/win_c --fstype vfat
--noformat --onpart hda2
#part /mnt/win_e --fstype vfat
--noformat --onpart hda8
#part /mnt/win_d --fstype vfat
--noformat --onpart hda7
#part /usr/local --fstype
ext3 --noformat --onpart hda6
#part /mnt/other --fstype reiserfs
--noformat --onpart hda9
#part /home --fstype ext3 --noformat
--onpart hda10
#part swap --onpart hda5
%packages
@ Administration Tools
@ GNOME Desktop Environment
@ Graphical Internet
@ Graphics
@ Russian Support
@ Sound and Video
@ System Tools
@ Ukrainian Support
@ X Window System
-kernel-pcmcia-cs
galeon
-gtkam
ethereal-gnome
mc
xmms-skins
fonts-KOI8-R-75dpi
Оказалось, что в этом файле расписаны ответы
буквально на все вопросы, на которые пришлось отвечать во время инсталляции
«Красной Шапки». Как видите, здесь можно найти все: системные языки,
клавиатурную раскладку, конфигурацию мыши, графическую подсистему, введенный
пароль root. Дополнительно закомментированы параметры разбивки жесткого диска,
забегая немного вперед, скажу, что это сделано специально: при разбивке диска
система остановится и позволит это сделать вручную. И напоследок указаны
сначала все группы приложений, которые можно установить, а затем
устанавливаемые пакеты, не входящие в выбранные группы или удаленные из них.
Как видите, чтобы добавить нужный пакет, достаточно прописать его в файл без
номера версии, а убрать можно, добавив знак минус «-» перед пакетом (список
всех пакетов можно найти в /RedHat/base/comps.xml). Наличие такого файла сразу
наводит на некоторые мысли, правильность которых я и пошел проверять на сайт
компании RedHat. И действительно, по адресу http://www.redhat.com/docs
среди прочих документов нашлись и искомые: RedHat Linux KickStart HOWTO,
датированный аж 1999 годом (самое интересное, что я много раз проходил мимо
него) и RedHat Customization Guide. После прочтения которых очень расстроился.
Оказалось, что в «Шапках», начиная с 5 версии, имеется система, позволяющая
быстро установить большое количество идентичных Linux на основании заранее
определенной конфигурации, занесенной в файл. При этом, кроме основных
предопределенных действий, есть возможность выполнить любое количество
дополнительных пользовательских команд (например, соединиться с Интернетом,
скачать программу и установить ее или добавить запись в конфигурационный файл).
И вообще, как вы поняли, при частой переустановке или необходимости
устанавливать Linux на несколько компьютеров с одинаковой конфигурацией это,
как говорится, «то, что доктор прописал», лучшего и придумать нельзя.
Как же пользоваться этим файлом? А очень просто:
сначала переименовываем файл anaconda-ks.cfg в ks.cfg (имя, разыскиваемое по
умолчанию) и записываем его на дискету. Теперь необходимо загрузиться как
обычно и при появлении приглашения ввести:
boot: linux ks=floppy
После этого останется только диски менять по
запросу, остальное система настроит сама, в том числе, если раскомментированы
параметры настройки жесткого диска, то и диск автоматически разобьет. Можно при
этом заранее заготовить несколько конфигурационных файлов с разными именами на
все случаи жизни и необязательно размещать их на дискете, но в этом случае
придется указывать полный путь к нужному файлу и используемое имя.
boot: linux ks=hd:fd0/anaconda-ks.cfg
Интересно, что если просто ввести в
строке приглашения:
boot: linux ks
То система будет пытаться произвести инсталляцию
при помощи NFS, используя BOOTP и DHCP. То есть попросту говоря, при постоянной
необходимости множественной установки RedHat можно не заготавливать кучи
CD-дисков, а создать в сети сервер NFS (Network File System) и брать все
установочные файлы оттуда, находясь вообще неизвестно где, и даже диски при
этом не придется менять.
Но это еще не все. Допустим, необходимо
установить дистрибутив на совсем другой компьютер и не хочется долго возиться,
а править файл вручную лень. И не надо этого делать, так как в RedHat имеется
утилита, которая в удобной графической форме позволяет выставить все нужные
параметры и затем создать нужный файл. Вызывается она очень просто: в командной
строке набираем:
redhat-config-kickstart
и вслед за этим появляется окно. Как вы видите на скриншотах, при помощи
этой утилиты можно указать все параметры, которые могут встретиться при
инсталляции вплоть до задания размеров разделов и файловых систем на них (в том
числе и RAID-массивов), настройки системы Х-Window и выбора пакетов для
установки, в конце можно приписать команды, которые система должна выполнить до
и после установки. После выбора всех пунктов настройки сохраняются в указанный
файл.







Теперь восстановление системы (данные, я надеюсь,
вы и так бэкапите) после сбоев может происходить двумя способами. Первый –
архивация всей системы, что требует наличия лишнего свободного места как на
жестком диске, так и вдоволь болванок и мощного процессора, иначе процедура
может заметно затянуться.
Второй способ – восстановление при помощи kickstart.
При этом учитывая, что все вновь устанавливаемые программы находятся в /usr/local,
а настройки пользователя в /home (которые желательно размещать на отдельном
разделе жесткого диска), их бэкапим как обычно, а чтобы не настраивать заново
всю систему, то так же сохраняем и каталог /etc. Остальное переустанавливаем
при помощи kickstart, а затем поверх распаковываем архивы с /usr/local, /home и
/etc (может еще и /var в зависимости от назначения компьютера), если, конечно,
их затронули разрушения.
После этого система будет работать как ни в чем
не бывало. Для форматирования достаточно будет указать только корневой каталог
(если только не повреждены другие), а остальные разделы примонтируются
автоматически, т.к. данные уже имеются в старом /etc/fstab. При этом архивы
можно положить в заранее определенное место (и создавать их вообще
автоматически при помощи cron, предположим, раз в неделю), а в конец
kickstart-файла добавить скриптик, реализующий их последующую распаковку. А
чтобы файл держать всегда в боевой готовности и не убирать затем лишнего – при
каждом удалении ненужной программы, входящей в комплект дистрибутива, добавлять
туда соответствующую строчку. Это можно опять же возложить на плечи скрипта
(ручная работа – это вообще не стиль для UNIX).
Например, такого:
#! /bin/sh
for arg in $*; do
rpm -е $1 || ехit $?
echo "- $1 "
>> /root/anaconda-ks.cfg && echo "Файл $1 успешно удален,
информация занесена в /root/anaconda-ks.cfg "
shift
done
После делаем его исполняемым (chmod +x), называем
попонятнее: rpm_del (для новичков вообще рекомендую сделать себе алиасов
попонятнее, наподобие FreeBSD, то есть rpm_del = «rpm -e», rpm_install = «rpm -Uvh»
и т. д.) и перемещаем в каталог, где его найдет переменная $PATH (/usr/local/bin,
например). Теперь из-под root вводим:
# rpm_del mozilla xemacs docbook-style-xsl
После выполнения всех этих пакетов уже не будет,
и информация об их ненужности в дальнейшем занесется в файл. Теперь,
переустановив систему, не придется удалять их повторно. Можно сделать
аналогичный скрипт и на установку, но я обычно только удаляю лишнее, пришедшее
с системой, а если что-то срочно понадобилось, то, как правило, беру из
Интернета версию посвежей.
Вот в принципе и все, что хотел рассказать. Как
видите, инструмент довольно удобный и раскрывает широкие возможности, а
главное, экономит драгоценное время, которого почему-то вечно не хватает.
Все права зарезервированы. Этот материал принадлежит или лицензирован компании PLARANA INC.
Только для частного использования. Любое распространение запрещено без письменного разрешения PLARANA INC
|