Конец прошлого тысячелетия в мире Open Sources прошел под знаком дружелюбия – дружелюбия к конечному пользователю. Это ознаменовалось тем, что, как грибы после дождя, на свет появлялись дистрибутивы Linux, посвященные этому самому end'овому user'у. Дистрибутивы же традиционные, с мрачными инсталляторами и текстовым редактором как главным конфигурационным средством, казались прочно оттесненными в маргинальную область. Мнилось, что еще немного – и Linux станет большей MacOS, чем сама Windows. А об fdisk и vi станет неприлично упоминать в смешанном обществе.
Нельзя сказать, что само по себе это было плохо (если, конечно, не брать крайности дружелюбия навроде Redmont Linux или Lindows). Именно благодаря подчеркнутому дружелюбию к простым смертным число Linux-пользователей возросло многократно. Но тут-то и обнаружилась интересная закономерность биологического характера, достойная внимания Линнея или Дарвина: оказалось, что конечный пользователь Linux – существо совершенно иной организации, нежели таковой Windows (не говоря уже о MacOS). И потянуло его, этого самого конечного, к первозданным истокам…
Ничем иным я не могу объяснить волны дистрибутивов, подчас именуемых их разработчиками source-based. Лишенных всех внешних «бантиков», имеющих лишь непритязательные текстовые инсталляторы (а то и вообще требующих для установки лишь действий в командной строке). Но – глубоко современных по сути и снабженных столь внятной документацией, что с построением системы фактически с нуля способен справится любой функционально грамотный человек.
Как можно понять по названию, SourceMage – один из таких дистрибутивов. Доступен на сайте разработчиков [1] в виде сжатого (bzip2) iso-образа объемом порядка 100 Мбайт. Правда, после распаковки их оказывается более 200, но все равно – по нынешним временам весьма скромно. Диск загрузочный, сделан на базе isolinux [2]. Загрузка – в чисто текстовом режиме, без всякого там frame buffer. Инсталлятор же – псевдографический, сделан под явным влиянием FreeBSD. Что, впрочем, пошло ему только на пользу.
Однако – по порядку. Кроме образа диска, на сайте проекта можно ознакомиться с документацией, в том числе и инструкцией по установке. Желательно распечатать ее и держать под рукой – на диске ее в легкодоступном виде не обнаруживается. Да и смотреть было бы негде – в ходе инсталляции активизирована одна–единственная консоль. А сам инсталлятор никакого help'а не предлагает.
Загрузка с CD осуществляется в два этапа. По завершении первого (основного) появляется панелька с предложениями
- считать модули (для SCSI, RAID или сетевых карт);
- выйти в чистый Shell;
- сменить root-устройство;
- продолжить загрузку.
Сразу становится ясным многоцелевой характер диска. В частности, возможность chroot делает очень удобным производство спасательных работ, типа, скажем, правки /etc/lilo.config – нет нужды помнить о соответствующих опциях.
Однако для установки, как можно догадаться, требуется выбрать последний пункт. Что приводит к завершению загрузки и появлению главного меню инсталляционной программы. В нем поначалу семь пунктов:
- A введение (краткие сведения о дистрибутиве и словеса о его несравненных достоинствах;
- B выбор языковой поддержки;
- C создание дисковых разделов;
- D монтирование файловых систем;
- M Done;
- N Shell;
- O отключение путеводителя по меню.
Я не зря привел буквенные индексы пунктов – из них можно догадаться о промежуточных стадиях между монтированием и завершением инсталляции. А посмотреть на них можно посредством последнего пункта – то есть отключив путеводитель. После этого инсталляционное меню распахивается во всю ширь, и любой пункт его можно выбрать в произвольном порядке. Конечно, делать это не обязательно – путеводитель заботливо проведет по всем стадиям установки. Однако сама по себе такая возможность – полезна, в случае ошибки или сомнения всегда можно вернуться назад для исправления или просто за ради посмотреть. Причем переключиться обратно в путеводитель также легко.
Но пойдем последовательно по стадиям. Выбор языка включает четыре момента:
- установку экранного шрифта;
- установку раскладки клавиатуры;
- собственно язык;
- и, почему-то, назначение редактора по умолчанию.
Шрифты и раскладки выбираются из меню, включающего все имеющиеся в международных дистрибутивах Linux. В частности, кириллических (в CP866 и KOI8) шрифтов – преизрядно, правда, все они одинаковые (обычный набор на базе alt, alt-b, alt-c). Раскладок – также вдоволь (ru, ru1-ru4, ru-win и т.д.), я всегда выбираю ru4 (это – с win-маркировкой клавиш и переключением по CapsLock).
А язык – это не что иное, как locale, а отнюдь не язык установщика, как можно было бы подумать. Причем русских locale – аж две, и под одинаковыми названиями (ru_RU). Чисто по наитию я решил, что первая в списке – ru_RU_KOI8-R, вторая же – CP1251, и, как ни странно, угадал. Правда, полной русификации это не дает – после установки придется вручную включить карту соответствия (если не выбирать экранные шрифты KOI8 и KOI'шную же раскладку), а также активизировать ее на всех консолях. Но это – не издержки дистрибутива: видимо, иноземцам и в страшном сне не привидится, что можно не только иметь пять чарсетов для одного языка, но и использовать разные наборы символов для ввода и для вывода.
А редакторов по умолчанию предлагается три – elvis (клон vi), jed и nano (простенький редактор типа pico или ee). Правда, в ходе установки к нему придется прибегнуть только один раз, но и после нее он сохранится в переменной окружения.
Для разделения диска предлагается три инструмента – cfdisk (выбор по умолчанию), стандартный fdisk и новая утилита parted. О fdisk все знают, cfdisk я не люблю, а parted, насколько я понимаю, предлагается GNU-сообществом в качестве универсального инструмента для манипуляций с дисками и файловыми системами. Его-то я и выбрал.
Неожиданно parted показался мне довольно удобным – он имеет развитый интерфейс командной строки (типа любого shell'а, весьма сходен, например, с интерфейсом GRUB), с автодополнением и историей команд, вполне приличный help. И позволяет не только создавать разделы (и удалять их), но также копировать их, изменять размер, перемещать. Правда, я не проверял, чем это грозит содержимому разделов, буде таковое имеется (по крайней мере, для копирования разделов декларируется сохранность данных).
Кроме этого, parted позволяет создавать на разделах файловые системы (сиречь, по простому, по-DOS'овскому – выполнять форматирование). Правда, пока только ext2fs и Linux Swap (согласно man'е – также FAT16 и FAT32, но мне это было без надобности). Однако присутствие в списке ext3fs, ReiserFS, XFS, JFS (наряду с UFS'ами для Sun и HP) позволяет предполагать, что поддержка таковых – в проекте.
Пока, однако, если есть желание использовать что-либо отличное от ext2fs, это можно выбрать на следующей стадии – монтирования. Здесь для каждого монтируемого раздела на выбор предлагаются – и ext3fs, и ReiserFS, и XFS. Следует учесть только, что первый же выбранный раздел принудительно монтируется как корневой. Так что если создавался маленький dev/hd?1 для /boot, начинать процесс следует с /dev/hd?3 (предполагается, что /dev/hd?2 отводится под swap).
Кроме swap-раздела, можно (уже на следующей стадии) создать и swap-файл. Это обусловлено тем, что инсталлятор SourceMage требует суммарного объема памяти (RAM+SWAP) в 1 Гбайт. То есть, скажем, при RAM 128 Мбайт и требуемом ядром 2.4.x swap-разделе RAMx2 на время установки дополнительно потребуется еще и swap-файл в 768 Мбайт.
По окончании возни с разделами и файловыми системами путеводитель предлагает начать собственно установку. Она сводится к распаковке и развертыванию имеющегося на CD тарбалла (~/cdrom/image.tar.bz2) объемом около 90 Мбайт, включающего в прекомпилированном виде основные компоненты системы (забегая вперед – в весьма скромном количестве), на что по инструкции отводится полчаса (на машине класса PIII/Athlon).
После развертывания тарбалла можно выбрать оптимизацию под процессор – i586, i686, K-6 или Athlon. Я забыл сказать, что SourceMage требует минимум Pentium'а (не так уж и сурово по нынешним временам); прочие системные запросы – 128 Мбайт памяти, 8 Гбайт на диске, хороший коннект, знание «железа» и 5 часов свободного времени. Причем коннект и объем на диске потребуются потом – после установки, для дополнительного софта, устанавливаемого посредством подобия FreeBSD-портов.
Однако я опять забежал вперед. Так вот, оптимизация под каждый из поддерживаемых процессоров возможна по двум направлениям: увеличения быстродействия и уменьшения объема генерируемого кода. Быстродействие можно увеличить просто (speedy) или с нарушением правил ANSI и IEEE (risky, не рекомендуется ввиду возможных проблем). Объем кода же можно уменьшить либо просто так, за здорово живешь (tiny), либо за счет удаления отладочной информации (strip). Рекомендуются первый и последний методы.
Затем, после определения часового пояса, наступает стадия конфигурирования ядра (версии 2.4.18). Для начала можно выбрать один из трех предопределенных вариантов: linux-speacup, linux-vanilla, linux-xfs. Со вторым из них все ясно – это то самое ядро, которое можно получить на www.kernel.org. Последний вариант также понятен – ядро с заплатками от SGI для полноценной поддержки файловой системы XFS. А вот первый включает (в разделе консольных драйверов) поддержку так называемой голосовой консоли (Speacup Console Speech) – вплоть до использования голосовой клавиатуры (Speakup keymap) по умолчанию. Что, конечно, очень интересно, однако, вроде бы, требует соответствующего оборудования (перечислено с дюжину внешних и внутренних моделей синтезаторов), которого у меня, естественно, не было. Да и вряд ли он позволит надиктовывать на компьютер русские тексты (вроде этой статьи, например).
После выбора базового ядра инсталлятор с завидной настойчивостью (переспрашивая два раза) предлагает начать его немедленную компиляцию. Соглашаться с этим, скорее всего, не следует – внести изменения в «умолчальную» конфигурацию тогда не удастся. А в ней (по крайней мере в linux-speakup) нет, например, поддержки эмуляции IDE через SCSI (необходимо для использования ATAPI CD-R/RW) или графической (через frame buffer) консоли. Так что на заманчивое предложение лучше дважды ответить отказом, после чего сконфигурировать ядро обычным (через make menuconfig) образом. Не забыв про поддержку файловой системы devfs – она вовсю используется в этом дистрибутиве.
Последняя стадия, отмеченная как опциональная (но на самом деле необходимая) – конфигурирование LILO. Дело в том, что по умолчанию оно записывается в загрузочный сектор Linux-раздела. Так что если внешний загрузчик не используется (или нет желания грузиться с дискеты), в /etc/lilo.config нужно внести соответствующие исправления. Правда, само по себе lilo, как потом выяснилось, при этом не перезапускается…
Вот и все – жмем на Done и оказываемся перед выбором: выйти в shell или перезагрузиться. В свете только что сказанного первый вариант однозначен –нужно выйти в shell и перезапустить lilo. Я этого не сообразил, и потому перезагрузка прошла без успеха – ведь ни малейшего LILO в MBR'е моего диска не имелось. Но зато я оценил достоинства CD как rescue-системы. Достаточно оказалось загрузиться с него, после первой стадии загрузки выбрать пункт смены корня (Choose root device), после этого выбрать корневой раздел свежеинсталлированного SourceMage (и тип его файловой системы в соответствие с реальностью) – а тут уж в появившейся командной строке просто сказать lilo.
Русских букв в консоли, как я уже говорил, не обнаружилось, но по опыту с Gentoo и LRs я уже знал, в чем дело. Оставалось только найти соответствующий конфигурационный файл, например, посредством
$ grep -R consolechars /etc
Оказалось, что все языковые настройки собраны в /etc/init.d/bootmisc.sh, имея вид вроде
loadkeys ru4 consolechars -f Cyr_a8x16 export LANG=»ru_RU»
Вторую из этих строк преобразовываем в
consolechars -f Cyr_a8x16 -m /usr/share/consoletrans/koi2alt.trans
где полный путь к карте соответствия оказался обязательным, после определения локали дописываем (при желании работать с десятичной точкой –некоторым программам это требуется)
export LG_NUMERIC=»POSIX»
и завершаем файл строками:
for i in 1 2 3 4 5 6 do echo -ne '\033(K' > /devices/vc/$i done
На чем с русским языком заканчиваем, переходя к обозрению свалившегося достояния. Для описания коего родная речь и потребовалась – по традиции я описываю каждый дистрибутив силами его (и чресел своих).
Достояние, как я уже обмолвился, оказывается весьма скромным – около 600 команд базового набора, и все (для сравнения, в Gentoo базовый набор –более 750 команд). Ни о каких X'ах нет и речи, в качестве редакторов – те же elvis (вызываемый также и как vi), jed и nano, из командных оболочек –голимый bash (и /bin/sh как ссылка на него)… Что особенно удручает, если взглянуть (посредством df) на объем занятого дискового пространства – более 500 Мбайт. И куда оно, спрашивается, девалось?
Оказалось, ухнуло в очередную вариацию на тему портов – однако, тенденция… Именуемую здесь совсем уж по своему – sorcery. Имеющей место в каталоге /var/lib/sorcery/grimoire, демонстрирующей удобное псевдографическое меню и вообще массу возможностей. На вскидку – побольше, чем в портах FreeBSD или в портежах Gentoo (как и в последнем, посредством этой системы можно пересобрать базовый комплект, но еще и выборочно удалить отдельные его компоненты). За исключением одной-единственной мелочи – отсутствия штатной возможности брать исходники с локального диска: ничего подобного каталогу distfiles в sorcery не обнаруживается. Не зря же в системных требованиях фигурировал хороший коннект (broadband connection).
Мне в моей сугубо оффлайновой деревне (где и с узким-то band'ом напряженка) сразу взгрустнулось. В довершение бед не было и общего конфигурационного файла, где раз и навсегда можно было бы прописать локальный путь к каталогу с исходниками [3].
Конечно, проблема эта тем или иным способом решаема. На худой конец можно руками прописать такой путь для каждого требуемого grimoire (сиречь порта) –все его характеристики заключены файле DETAILS в соответствующем подкаталоге (например, /var/lib/sorcery/grimoire/editors/joe). Или воспользоваться для этой цели awk/sed/etc. Да и в релизной версии с этим справиться было бы легче.
В любом случае, на наши условия дистрибутив абсолютно не рассчитан – далеко не все на пост-советских пространствах могут похвалиться broadband'ом. Так почему же я столько распинался по его поводу?
Во-первых, SourceMage хорошо отражает наметившуюся тенденцию – бурное, не побоюсь этого слова, развитие дистрибутивов source-based. А во-вторых, он весьма достойно ее представляет. Инсталлятор дистрибутива, на мой взгляд, близок к тому самому оптимуму, о котором я писал некогда в статье «Феномен Linux» [4] . С одной стороны, он с минимальными усилиями позволяет получить разумную (пусть и не идеальную) и вполне рабочую систему, окончательную доводку которой можно отложить на потом. С другой же, при наличии времени, желания и толики опыта, в ходе инсталляции можно выполнить практически все действия по настройке, в том числе и довольно тонкой.
Конечно, подход Gentoo представляется более гибким, а LRs производит более компактное впечатление. Однако в первом может отпугнуть появляющаяся с самого начала командная строка, а во втором инсталлятор вообще не показался мне удобным. В SourceMage же он может быть принят за эталон дружелюбия к пользователю – но не вообще, а именно к тому самому, специфическому Linux-пользователю. Так что дистрибутив этот, безусловно, заслуживает если не применения, то – ознакомления. Впрочем, к сопоставлению систем, базирующихся на исходниках, я надеюсь вернуться в самое ближайшее время…
[1] http://www.sourcemage.org. К слову – качается замечательно быстро, даже днем. [обратно к тексту]
[2] http://syslinux.zutor.com. Похоже, это становится обыкновением для дистрибутивов Linux – на той же основе сделаны загрузочные диски и Gentoo, и LRs, о которых я давеча писал. [обратно к тексту]
[3] В документации такой файл (/var/lib/sorcery/grimoire/utils/sorcery/DETAILS) упоминается, но только для релизной, от апреля, версии, а я пользовался последней (июньской) тестировочной. [обратно к тексту]
[4] Компьютерра, #1, 2002 [обратно к тексту]