Ситуация обостряется еще тем, что я люблю после установки немного поэкспериментировать, иногда с последствиями. Поэтому приходится иногда повторять эту нудную операцию сначала, а еще друзья просят помочь, а еще… Все это время думал, нельзя ли как то автоматизировать процесс, чтобы раз - и готово. Но для этого ведь должна уже быть какая-то поддержка в самом дистрибутиве т.е. придется как минимум его разделать. В общем, так продолжалось довольно долго, пока во время очередной переинсталляции RedHat'a 9 не обратил внимание на сообщение (Рис. 1).
И где глаза мои раньше были! Если с первым файлом - /root/install.log - все ясно с первого взгляда, в нем содержится список всех установленных пакетов (как ни старался убрать лишнее, все равно оказалось много хлама) и отчет об ошибках, возникших при установке некоторых из них. Приблизительно в таком виде:
И так про все 887 пакетов, которые установлены. То есть, после инсталляции можно спокойно просмотреть, что вам там навалили, и после этого уже не удивляться, куда свободное место делось.
А вот второй файл - /root/anaconda-ks.cfg - меня удивил и озадачил одновременно. Посмотрите сами, что там нашлось (не все, конечно):
Оказалось, что в этом файле расписаны ответы на все вопросы, на которые пришлось отвечать во время инсталляции Красной Шапки. Как видите, здесь можно найти все: системные языки, клавиатурную раскладку, конфигурации мыши и графической подсистемы, введенный пароль root'a… Дополнительно закомментированы параметры разбивки жесткого диска; забегая немного вперед, скажу, что это сделано специально - при разбивке диска система остановится и позволит это сделать вручную. И напоследок, указаны сначала все группы приложений, которые можно установить, а затем и устанавливаемые пакеты, не входящие в выбранные группы или удаленные из них. Как видите, чтобы добавить нужный пакет, достаточно прописать его в файл без номера версии, а убрать можно, добавив знак минус (–) перед пакетом (список всех пакетов можно найти в /RedHat/base/comps.xml). Наличие такого файла сразу наводит на некоторые подозрения, состоятельность которых я и пошел проверять на сайт компании RedHat. И действительно, по адресу http://www.redhat.com/docs среди прочих документов нашлись и искомые: RedHat Linux KickStart HOWTO, датированный аж 1999 годом (сколько раз я проходил мимо него!) и RedHat Customization Guide. После прочтения которых, мягко говоря, я очень расстроился. Оказалось, что в Шапках, начиная с пятой версии, имеется система, позволяющая быстро установить большое количество идентичных Linux'ов на основании заранее определенной конфигурации, занесенной в файл. При этом, кроме основных предопределенных действий, есть возможность выполнить любое количество дополнительных пользовательских команд (например, соединиться с Интернетом, скачать программу и установить ее или добавить запись в конфигурационный файл). И вообще, как вы поняли, при частой переустановке или необходимости устанавливать Linux на несколько компьютеров с одинаковой конфигурацией это, как говорится, "то, что доктор прописал", - лучшего и придумать нельзя. Как же пользоваться этим файлом? А очень просто. Сначала переименовываем файл anaconda-ks.cfg в ks.cfg (имя, разыскиваемое по умолчанию) и записываем его на дискету. Теперь необходимо загрузиться, как обычно, и при появлении приглашения ввести:
После этого останется только диски менять по запросу, остальное система настроит сама, в том числе, если раскомментированы параметры настройки жесткого диска, и диск автоматически разобьет. Можно при этом заранее заготовить несколько конфигурационных файлов с разными именами на все случаи жизни - их необязательно размещать на дискете, но тогда придется указывать полный путь к нужному файлу и используемое имя.
Интересно, что если просто ввести в строке приглашения:
то система будет пытаться произвести инсталляцию при помощи NFS, используя BOOTP и DHCP. Т.е. попросту говоря, при постоянной необходимости множественной установки RedHat'ов можно не заготавливать кучи CD-дисков, а создать в сети сервер NFS (Network File System) и брать все установочные файлы оттуда, находясь вообще неизвестно где; диски при этом не придется менять. Круто.
Но это еще не все. Допустим, необходимо установить дистрибутив на совсем другой компьютер(ы); возиться долго не хочется, а править файл вручную влом. И не надо - в RedHat'e есть утилита, которая в удобной графической форме позволяет выставить все нужные параметры и затем создать нужный файл. Вызывается она очень просто: в командной строке набираем redhat-config-kickstart, и вслед за этим появляется окно (рис. 2-7). Как видите, при помощи этой утилиты можно указать все параметры, которые могут встретиться при инсталляции, вплоть до задания размеров разделов и файловых систем на них (в том числе и RAID-массивов), настройки системы Х-Window и выбора пакетов для установки. А в конце можно приписать команды, которые система должна выполнить до и после установки. После выбора всех пунктов настройки сохраняются в указанный файл.
Теперь восстановление системы (данные, я надеюсь, вы и так бэкапите) после сбоев может проводить двумя способами. Первый - архивация всей системы, что требует наличия лишнего свободного места на жестком диске и кучи болванок, а к тому же и мощного процессора, иначе процедура может заметно затянуться. Второй способ - восстановление при помощи kickstart'a. При этом, учитывая, что все вновь устанавливаемые программы находятся в /usr/local, а настройки пользователя - в /home (которые желательно размещать на отдельном разделе жесткого диска), их бэкапим как обычно, а чтобы не настраивать заново всю систему, также сохраняем и каталог /etc. Остальное переустанавливаем при помощи kickstart'a, а затем поверх распаковываем архивы с /usr/local, /home и /etc - если, конечно, их затронули разрушения. После этого система будет работать как ни в чем не бывало. Для форматирования достаточно будет указать только корневой каталог (если только не повреждены другие), а остальные разделы примонтируются автоматически, т.к. данные уже имеются в старом /etc/fstab. При этом архивы хорошо бы заранее положить в определенное место (а создавать их можно вообще автоматически, при помощи cron, - предположим, раз в неделю), а в конец kickstart-файла добавить скриптик, реализующий их последующую распаковку. А чтобы файл держать всегда в боевой готовности, чтобы не приходилось потом убирать мусор, желательно при каждом удалении ненужной программы, входящей в комплект дистрибутива, добавлять туда соответствующую строчку. Эту работу можно опять же возложить на плечи скрипта (как я уже не раз говорил, ручная работа - это не для Unix). Вот пример такого скрипта:
После этого делаем его исполняемым (chmod +x), обзываем попонятнее - rpm_del (для новичков вообще рекомендую наделать себе алиасов с удобоваримыми именами, по образцу FreeBSD, т.е. rpm_del = rpm -e, rpm_install = rpm -Uvh и т.д.) и кладем в каталог где его найдет переменная $PATH (/usr/local/bin, например). Теперь из-под root'a вводим:
После выполнения скрипта лишние пакеты исчезнут, и информация об этом занесется в файл. Теперь, переустановив систему, не придется удалять их повторно. Можно сделать аналогичный скрипт и на установку, но я обычно только удаляю балласт, пришедший с системой, а если что-то срочно понадобилось, то, как правило, беру из Интернета версию посвежей.
Вот и все, что я хотел рассказать. Как видите, инструмент довольно удобный, раскрывает широкие возможности, а главное, экономит драгоценное время, которого почему-то вечно не хватает.
Linux forever!