СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
Пингвин с одного пинка
Иногда возникает ситуация, когда необходимо установить дистрибутив 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
После выполнения всех этих пакетов уже не будет, и информация об их ненужности в дальнейшем занесется в файл. Теперь, переустановив систему, не придется удалять их повторно. Можно сделать аналогичный скрипт и на установку, но я обычно только удаляю лишнее, пришедшее с системой, а если что-то срочно понадобилось, то, как правило, беру из Интернета версию посвежей.
Вот в принципе и все, что хотел рассказать. Как видите, инструмент довольно удобный и раскрывает широкие возможности, а главное, экономит драгоценное время, которого почему-то вечно не хватает.