Пингвин с полпинка

Сергей А.ЯРЕМЧУК, 04.08.2003, Мой Компьютер Weekly

Так уж получилось, что за долгое время общения с компьютером Линуксов мне пришлось установить, наверное, больше, чем всех остальных систем вместе взятых, особенно за последний год. Не знаю, как кому, а для меня это уже довольно скучное и будничное мероприятие. Если честно, я даже иногда радуюсь возникающим проблемам - хоть разнообразие какое-то. Причем, хочу сказать, что эта скука распространяется только на дистрибутивы с графическим инсталлятором. В других как-то скучать особенно не приходятся - постоянно что-то вводишь, контролируешь, да и об устанавливаемых пакетах там особенно никто не спрашивает, и так их там с гулькин нос, в результате, сама установка у меня редко превышает полчаса. А что в графической оболочке - щелкаешь одну и ту же кнопку "Вперед" (или "Далее"). Скукота, да и только. А особенно надоедает функция выбора пакетов. Можно, конечно свалить все в кучу, да места жалко, вот и приходится убирать все лишнее при инсталляции, чтобы не валялось бесполезным грузом на жестком диске. А лишнего там бывает ой как много, особенно на многодисковых дистрибутивах.

Ситуация обостряется еще тем, что я люблю после установки немного поэкспериментировать, иногда с последствиями. Поэтому приходится иногда повторять эту нудную операцию сначала, а еще друзья просят помочь, а еще… Все это время думал, нельзя ли как то автоматизировать процесс, чтобы раз - и готово. Но для этого ведь должна уже быть какая-то поддержка в самом дистрибутиве т.е. придется как минимум его разделать. В общем, так продолжалось довольно долго, пока во время очередной переинсталляции RedHat'a 9 не обратил внимание на сообщение (Рис. 1).

Рис. 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 и выбора пакетов для установки. А в конце можно приписать команды, которые система должна выполнить до и после установки. После выбора всех пунктов настройки сохраняются в указанный файл.

Рис. 2.   Рис. 3.

Рис. 4.   Рис. 5.1.

Рис. 5.2.   Рис. 6.

Рис. 7.

Теперь восстановление системы (данные, я надеюсь, вы и так бэкапите) после сбоев может проводить двумя способами. Первый - архивация всей системы, что требует наличия лишнего свободного места на жестком диске и кучи болванок, а к тому же и мощного процессора, иначе процедура может заметно затянуться. Второй способ - восстановление при помощи 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!





Источник - LinuxBegin.ru
http://linuxbegin.ru

Адрес этой статьи:
http://linuxshop.ru/linuxbegin/article410.html