главная пошаговое создание livecd что такое linux ISO образы
Операционная система с графическим интерфейсом
На главнуюКонтактыКарта сайта
Полезное


 

ДОБРО ПОЖАЛОВАТЬ


CRUX, или Linux для аскета

С дистрибутивом CRUX я по первости познакомился в начале 2002 г., в пору, когда был очарован FreeBSD. И единственной целью этого знакомства было сравнение так называемых портов из CRUX'а с их BSD-прототипом. Должен сразу сказать - потомок клон оригинала выглядел тогда как плотник супротив столяра. И хотя в целом CRUX произвел на меня хорошее впечатление своей современностью, компактностью и быстродействием, почти год у меня не было ни случая, ни, честно говоря, желания к нему обращаться.

Поводом для возврата к этой теме послужила переписка с Владимиром Поповым, который взялся за этот дистрибутив в поисках современного Linux'а, способного нормально функционировать на ноутбуке о 166-м Pentium'е с 64 Мбайт памяти. И позднее положившим его в основу собственной разработки - LiveCD LinuxPop. Собственно, переписка эта и явилась непосредственным толчком для написания этой статьи, в которой учтены многие соображения, высказанные Владимиром (за что я и хотел бы, пользуясь случаем, выразить ему свою признательность).

Итак, CRUX. Проживает он на http://www.crux.nu, где можно а) получить о нем общее впечатление, б) ознакомиться с новостями проекта, в) почитать о нем в документации (к ней я еще вернусь особо) и, наконец, г) скачать его с одного из зеркал.

Сам по себе CRUX характеризуется его разработчиком, Пером Лиденом (Per Liden), как легковесный, оптимизированный под "шестерки" дистрибутив Linux, нацеленный на опытных пользователей (вернее, experienced users я в данном контексте перевел бы как "много испытавшие"). Распространяется он в виде iso-образа диска (объем образа стабилен от версии к версии - около 200 Мбайт), собранного под архитектуру i686. Соответственно, на машинах младше Pentium Pro он как бы работать не должен. Однако, кроме основной, или официальной, версии, есть еще и несколько Contributed-вариантов (собираемых сообщниками Пера), в том числе и под i586.

Из Contributed-версий интерес представляет еще одна - crux-xfs, которая, как можно догадаться из названия, позволяет работать с файловой системой XFS. К ней-то я и обратился для повторного знакомства с CRUX.

Сам по себе диск представляет собой обычный загрузочный LiveCD без продвинутых возможностей, обеспечиваемых модулем cloop.o. То есть, смонтировав его обычным образом, можно просмотреть все его содержимое. Тем не менее, он способен выступать в роли rescue-системы, предоставляя в распоряжение пользователя ограниченный, но достаточный для ремонтных целей набор busybox'а.

Основное назначение диска, тем не менее, - установка системы. Каковая в стандартном случае распадается на четыре этапа - подготовительный, собственно установочный, конфигурационный и, так сказать, ядерный.

Подготовительный этап начинается после загрузки системы и беспарольной авторизации от лица root'а. Он - стандартен: создание дисковых разделов, файловых систем на них и монтирование оных в LiveCD-иерархию (в каталог /mnt). Останавливаться на этом я не буду - все это уже было многократно описано для многих других дистрибутивов. Замечу только, что в CRUX'е задействована файловая система устройств, devfs, причем задействована по полной программе, с автомонтированием ее в каталоге /dev при загрузке. И потому при монтировании вновь созданных на разделах файловых систем следует пользоваться только полной или сокращенной номенклатурой из devfs (типа /dev/discs/disc?/part?).

К слову сказать - CRUX был в числе пионеров при использовании devfs в варианте без обратной совместимости, эта особенность имела место быть в нем еще более года назад.

Основной установочный этап начинается запуском скрипта Setup, назначение которого легко понятно из названия. Это - собственно установка пакетов, выполняемая в псевдографическом меню в стиле FreeBSD или Slackware. И сводится она к выбору пакетов из двух категорий - base и opt (основной, то есть, и опциональной).

Особого внимания заслуживает категория base. Это, пардон за тавтологию, тот самый Base Linux, о котором столько ранее и будет говориться впредь. Она практически совпадает по составу с тем, что мне представляется минимально необходимым для запуска, функционирования и наращивания системы, включая компилятор gcc и абсолютно незаменимые для его работы утилиты и библиотеки (что не может не радовать). Все компоненты категории base по умолчанию отмечены как устанавливаемые, однако любой из них при желании можно исключить из инсталляции.

Важное предупреждение: в CRUX'е на стадии установки не предусмотрено никаких средств контроля зависимостей пакетов, кроме заявления об их нарушении. Ни для категории base, ни для категории opt. Что, казалось бы, возлагает на пользователя непосильное бремя отслеживания оных. Однако не случайно назван он дистрибутивом для "много повидавших": ведь каждый из таковых давно уяснил для себя, что многие из так называемых зависимостей определяются не необходимостью (как, например, зависимость практически любой программы от библиотеки glibc), а представлениями разработчика (или, паче того, сборщика дистрибутива) о роскошном. То есть: часто при сборке пакеты конфигурируются по умолчанию с предоставлением дополнительных, но необязательных опций, которые кому-то могут просто мешать (мой излюбленный пример - сборка links и mc с поддержкой gpm, затрудняющей, ИМХО, использование в них мыши традиционным для консольного режима образом).

Так вот, все пакеты в CRUX собраны именно по принципу минимализма, без подключения дополнительных опций. И потому зависимости между пакетами - это именно необходимые (а не роскошные) зависимости, которые любой из "много повидавших" юзеров знает наизусть, по крайней мере, для категории base. И потому возможность изъять из нее некоторые подернутые мхом компоненты видится очень интересной - если не впрактическом, то в гносеологическом отношении.

Пример таких компонентов - пакет bin86 и строчный редактор ed. Первый требуется, фактически, только для начального загрузчика Lilo (и, насколько я знаю, ни для чего более). И если предполагается использование, например, GRUB (а это я настоятельно рекомендую вслед за многими резонными людьми), необходимости в нем, скорее всего, не возникнет никогда.

Редактор ed также мало кем используется сам по себе. Его присутствие в любой Linux-системе вызвано тем, что когда-то он требовался для наложения патчей на исходники. Ныне же все (вероятно) патчи составляются как diff-файлы, и необходимости в ed также не возникает. Хотя, in contrario, давеча мне пришлось прибегнуть к этой древней программе - и я убедился, что для решения некоторых задач она подходит просто идеально. Хотя, уже с третьей стороны, все, что может ed, выполнимо и средствами sed'а, а уж он-то абсолютно незаменим...

Нужно сказать, что сами разработчики CRUX пошли на весьма радикальный шаг: вам не удастся увидеть в нем документации в формате info (и, соответственно, из категории base исключен также пакет texinfo), в установленной системе обнаруживаются только man-страницы. Что я лично только приветствую (поскольку пользовался info считанные разы, да и то не от хорошей жизни), но учитывать такую комплектацию придется в дальнейшем.

И еще одно проявление аскетизма - отсутствие в базовой системе gettext и, соовтветственно, поддержки национальных языков (NLS, довольно странный шаг со стороны разработчика-шведа). Впрочем, полноценной работе в кириллическом (и любом другом) окружении это отнюдь не препятствует...

Расправившись с базовыми компонентами, можно перейти к категории opt. Здесь также виден здоровый, почти спартанский минимализм - набор утилит для работы с файловыми системами, отличными от ext2fs, сетевые утилиты, средства работы с пакетами, cdrtools и прочее, нужное почти всем и почти всегда. Далее - голые Иксы (в варианте от Xorg) и средства их поддержки (типа freetype), из оконных менеджеров - только WindowMaker, ни малейшими KDE или GNOME здесь не пахнет. Плюс Mozilla как универсальный браузер и почтовый клиент, да еще emacs (в базовом наборе из редакторов - только vim).

В общем, все это хозяйство после установки (а занимает она считанные минуты) укладывается в 200-500 Мбайт - по нынешним временам просто смешно. Но зато эти мегабайты заняты лишь тем, что действительно нужно, и к тому же - в наиболее современном исполнении. И, как будет показано дальше, при необходимости их можно легко нарастить, причем - различными способами.

Пока же перейдем к следующей стадии установки - начальному конфигурирования. Абсолютно необходимый шаг здесь один - редактирование файла /mnt/etc/fstab. В умолчальном виде он содержит множество закомментированных строчек с примерами на разные случаи жизни (и разные файловые системы). Остается только внести в него коррективы соответственно собственным реалиям. Правда, делать это придется в редакторе vim.

Этим же vim'ом можно внести изменения и в другие конфигурационные файлы, типа /mnt/etc/hosts и /mnt/etc/resolv, для настройки сетевого соединения. Ну и конечно, неплохо подредактировать главный стартовый файл, именуемый, в соответствие с BSD-традицией, /mnt/etc/rc.conf. В нем можно включить/выключить стартовые сервисы (по умолчанию - только net и crond), задать имя хоста (при отсутствии такового - HOSTNAME=localhost) и, наконец, указать раскладку клавиатуры (в том числе и русскую, о чем скажу позже).

Общий минимализм дистрибутива проявляется и в его настройках. Мало того, что в CRUX принят BSD-стиль стартовых файлов, сам по себе более компактный, так и дается лишь самый необходимый их набор. Достаточно сказать, что все содержание каталога /etc занимает (при стандартной плотности знаков 80x25) около четверти экрана.

Завершив конфигурирование (или отказавшись от оного - все, кроме настройки монтирования в /etc/fstab, можно сделать в дальнейшем), следует перезагрузить машину с того же CD и в ответ на приглашение загрузчика задать имя файла раздела, на котором расположена корневая файловая система: boot > CRUX root=/dev/discs/disc?/part?

обращая внимание на регистр метки записи загрузчика - именно CRUX, а не, скажем, crux. После чего, опять авторизовавшись как root (и опять без пароля), перейти к завершающему этапу - конфигурированию и сборке ядра. Задерживаться на этом я обратно же не собираюсь, отметив только, что при этом обязательно включение опции поддержки файловой системы устройств и ее автоматического монтирования при старте.

Теперь остается только обеспечить загрузку системы. Штатно это предлагается сделать через Lilo (с соответствующим редактированием файла /etc/lilo.conf и перезапуском lilo). Однако если до сих пор стоял GRUB (как это было у меня) - никто не запретит воспользоваться и им (хотя в комплект дистрибутива он и не входит).

Свежеустановленный CRUX обладает, как можно было понять из предыдущего изложения, базовой функциональностью полноценной Linux-системы, но для специальных задач (или специфических предпочтений) его может оказаться недостаточно. Так, в нем не увидишь gpm, без которой я не мыслю консольного существования, mc, милого сердцу любому выходцу из "черного" DOS'а, а список редакторов, как я уже говорил, исчерпывается vim и emacs.

Для наращивания мощи в CRUX'е штатно предусмотрена система портов, наиболее простая из всех мной виденных, и идеологически наиболее близкая к своему BSD-прототипу. Конечно, в ней нет изощренности и универсальности системы портежей Gentoo или волшебства (хотя, быть может, шаманизма?) заклинаний Sorcerer'а сотоварищи. Но зато весь архив дерева портов вписывается в полтора мегабайта. А главное, свою роль порты выполняют вполне справно, обеспечивая некоторый минимальный контроль зависимостей (в традициях CRUX'а, то есть именно зависимостей необходимых) и допуская глобальную оптимизацию при сборке (путем определения флагов компиляции как переменных окружения).

Подробности устройства системы портов CRUX'а я опускаю (поскольку планирую вернуться к этому вопросу в недалеком будущем). Потому что главная функция его видится мне в другом: CRUX - идеальная основа для самостоятельной (то есть ручной) сборки всего, что выходит за рамки понятия Base Linux. Идеальная - потому что изначально не отягощена никакими a priory заданными зависимостями, базами данных пакетов и тому подобной бижутерии, призванной облегчить жизнь т.н. обычного пользователя, но только мешающая при ручной, штучной, установке программ. В этом отношении CRUX можно сравнить, пожалуй, только со Slackware.

Завершения картины для, скажу несколько слов о базовой (то есть консольной) русификации системы. Она - очень проста, так как в комплекте CRUX'а имеются все необходимые для этого компоненты - кириллические шрифты, клавиатурные раскладки, таблицы соответствия, вариации локалей ru_RU (особо отмечу локаль UTF8). Так что достаточно определить русские клавиши в /etc/rc.conf, а загрузку шрифта и mapscreen'а - в файле, например, /etc/rc.local. В котором вполне найдется место и для сценария активации mapscreen'а на всех наличных виртуальных консолях. Ну а локаль уж никто не запретит определить или в пользовательском, или в общесистемном профильном файле (типа /etc/profile).

И последнее. Для CRUX существует официальная документация - CRUX Handbook, весьма лаконичное сочинение, содержащее, однако, все необходимые дистрибутив-специфичные сведения (а за сведениями общего характера предлагается обращаться к общим же источникам информации).