SourceMage GNU/Linux

Алексей Федорчук
2002 г

Конец прошлого тысячелетия в мире Open Source прошел под знаком дружелюбия — дружелюбия к конечному пользователю. Это ознаменовалось тем, что, как грибы после дождя, на свет появлялись дистрибутивы Linux, к этому самому end’овому user’у обращенные душой и телом. Дистрибутивы же традиционные, с мрачными инсталляторами и текстовым редактором как главным конфигурационным средством, казались прочно оттесненными в маргинальную область ретроградствующего корифейства и узкоспециального применения. Мнилось, что еще немного — и Linux станет большей MacOS, чем сама Windows. А об fdisk‘е и vi станет неприлично упоминать в смешанном обществе.

Нельзя сказать, что само по себе это было плохо (если, конечно, не брать крайности дружелюбия навроде Redmond Linux или Lindows). Именно благодаря подчёркнутому дружелюбию к простым смертным число Linux-пользователей возросло многократно. Но тут-то и обнаружилась интересная закономерность биологического характера, достойная внимания Линнея или Дарвина: оказалось, что конечный пользователь Linux — существо совершенно иной организации, нежели пользователь Windows, не говоря уже о MacOS. И потянуло его, этого самого конечного линуксоида, к первозданным истокам…

Ничем иным я не могу объяснить волны дистрибутивов, именуемых их разработчиками Source Based. Лишённых всех внешних «бантиков», имеющих лишь непритязательные текстовые инсталляторы (а то и вообще таковых не имеющие — роль программы-установщика с успехом выполняет командная оболочка). Но — глубоко современных по своему наполнению, использующих все новейшие разработки мира Linux и снабжённых столь внятной документацией, что с построением системы фактически с нуля способен справится любой функционально грамотный человек.

Как можно понять по названию, SourceMage, о котором пойдёт речь в этой заметке — один из таких дистрибутивов. Собственно говоря, он — не вполне самостоятелен, являя собой переработку дистрибутива Sorcerer, от которого унаследовал концепцию волшебных слов и шаманских заклинаний, но об этом — несколько ниже.

Доступен SourceMage (или, как его именуют авторы — SourceMage GNU/Linux, сокращенно — SMGL) на своем собственном сайте в виде сжатого (bzip2) iso-образа объемом порядка 100 Мбайт (к слову сказать — замечательно быстро скачивающегося). Правда, после распаковки их оказывается более 200, но все равно — по нынешним временам объем весьма скромный. Диск загрузочный, представляет собой т.н. LiveCD — полноценную Linux-систему с «живой» (то есть допускающей монтирование) файловой системой в оперативной памяти.

Загрузка SMGL осуществляется в чисто текстовом режиме, без всякого там излишеств в виде графической консоли через frame buffer. Инсталлятор же — псевдографический, сделан под явным влиянием FreeBSD. Что, впрочем, пошло ему только на пользу.

Однако — по порядку. Кроме образа диска, на сайте проекта можно ознакомиться с документацией, в том числе и инструкцией по установке. Инструкцию полезно распечатать и держать под рукой — на диске ее в легкодоступном виде не обнаруживается. Да и смотреть было бы негде — в ходе инсталляции активизирована одна-единственная консоль. А сам инсталлятор никакого help’а не предлагает.

Загрузка с CD осуществляется в два этапа. По завершении первого (основного) появляется панелька с предложениями

  • считать модули (для SCSI, RAID или сетевых карт);
  • выйти в чистый Shell;
  • сменить root-устройство;
  • продолжить загрузку.

Сразу становится ясным многоцелевой характер диска. В частности, возможность выполнения процедуры chroot делает очень удобным производство спасательных работ, типа, скажем, правки /etc/lilo.config — нет нужды помнить о соответствующих опциях.

Однако для установки SMGL, как можно догадаться, требуется выбрать последний пункт меню. Что приводит к завершению загрузки и появлению главного меню инсталляционной программы. В нем поначалу семь пунктов:

  • A — Введение (краткие сведения о дистрибутиве и словеса о его несравненных достоинствах;
  • B — Выбор языковой поддержки;
  • C — Создание дисковых разделов;
  • D — Монтирование файловых систем;
  • M — Done;
  • N — Shell;
  • O — Отключение путеводителя по меню.

Я не зря привёл буквенные индексы пунктов — из них можно догадаться о промежуточных стадиях между монтированием и завершением инсталляции. А посмотреть на них можно посредством последнего пункта — то есть отключив путеводитель. После этого инсталляционное меню распахивается во всю ширь, и любой пункт его можно выбрать в произвольном порядке. Конечно, делать это не обязательно — путеводитель заботливо проведет по всем стадиям установки. Однако сама по себе такая возможность — полезна: в случае ошибки или сомнения всегда можно вернуться назад для исправления или просто за ради посмотреть. Причем переключиться обратно в путеводитель также легко.

Но пойдем последовательно по стадиям. Выбор языка включает четыре момента:

  • установку экранного шрифта;
  • установку раскладки клавиатуры;
  • как бы выбор языка;
  • и, почему-то, назначение редактора по умолчанию.

Шрифты и раскладки выбираются из меню, включающего все, что обычно имеется в международных дистрибутивах Linux. В частности, кириллических (в CP866 и KOI8) шрифтов — преизрядно, правда, все они одинаковы по начертанию (обычный набор на базе alt, alt-b, alt-c и его вариации на тему KOI8). Раскладок — также вдоволь (ru, ru1ru4, 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 позволяет создавать не только дисковые разделы, но и файловые системы на них — сиречь, по простому, по-DOS’овскому — выполнять форматирование. Правда, пока только 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-файл в 640 Мбайт.

По окончании возни с разделами и файловыми системами путеводитель предлагает начать собственно установку. Она сводится к распаковке и развертыванию имеющегося на 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). Рекомендуются первый и последний методы.

Затем, после определения часового пояса, наступает стадия конфигурирования ядра. Для начала можно выбрать один из трех предопределенных вариантов: linux-speacup, linux-vanilla, linux-xfs. Со вторым из них все ясно — это то самое ядро, которое можно получить на 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.

Русских букв в консоли, как я уже говорил, за здорово живешь обнаружить не удастся. Но проблема эта решаема. Для начала ищем конфигурационный файл, за языуи отвечающий. Например, посредством

$ 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 �33'(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). В довершение бед не было и общего конфигурационного файла, где раз и навсегда можно было бы прописать локальный путь к каталогу с исходниками. В конечном итоге файл такой отыскался — /var/lib/sorcery/grimoire/utils/sorcery/DETAILS, но далеко не во всех версиях SGML, из виденных мною, лн имеет место быть изначально.

Конечно, проблема эта тем или иным способом решаема. Однако можно констатировать, что на наши условия дистрибутив этот не особенно рассчитан — далеко не все на пост-советских пространствах могут похвалиться broadband’ом. Так почему же я столько распинался по его поводу?

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

Таким образом, SourceMage же может быть принят за эталон дружелюбия к пользователю — но не к пользователю вообще, а именно к тому самому, специфическому Linux-пользователю (в источниках на англо-американском языке мне встретилось обозначение — power-user). Так что дистрибутив этот, безусловно, заслуживает если не применения, то — ознакомления.