Алексей Федорчук
[email protected]
Написав, казалось бы, не так давно книжку про FreeBSD, я не предполагал обращаться в ближайшее время к этой теме. Потому что сказал все, что хотел (и, главное, мог). Однако человек предполагает, а судьба располагает. И выход релиза версии 5.1 - первого полноценного представителя 5-й ветви, - изменил мои намерения. Во-первых, оказалось, что книга была написана ровно год назад (это вследствие всяких перипетий вышла только в начале этой зимой). Во-вторых, оказалось, что в 5-й ветви столько новшеств, что их нужно изучать и осваивать - воспоминаний о прежних версиях явно недостаточно. А поскольку второй самый эффективный способ изучения любой системы (после ее создания, конечно) - это описание, я и решил на этих страницах начинать новый цикл - о FreeBSD 5-й ветки и, по ходу дела, о других BSD-системах, которые все больше и больше попадают (не всегда заслуженно) в тень Linux'а.
Дополнительным стимулом послужили время от времени всплывающие в форуме Linuxshop'а вопросы - а для чего вообще предназначена FreeBSD, и пригодна ли она для использования в качестве десктопа. И потому в качестве введения цикла я хочу осветить свое понимание этой темы.
Не секрет, что если Linux мало-помалу завоевывает место под солнцем, освещающим десктопы конечных (хотя и достаточно специфических) пользователей, то про FreeBSD этого не может сказать даже самый ярко выраженный оптимист. Почему? Главная причина неиспользования FreeBSD как настольных пользователей - в том, что никто ее в этом качестве не использует (есть еще одна причина, о которой я упомяну под занавес). Остальные же - производны от главной, хотя им и пытаются найти рациональное объяснение. Среди них наиболее часто выступают:
Есть еще и объяснение иррациональное: FreeBSD - просто плохая (по сравнению с Linux, опять-таки) система, но о нем мы говорить не будем, поскольку это просто не так (пока прошу поверить на слово - доказательства надеюсь представить в последующих заметках цикла). А пока попробуем рассмотреть псевдорациональные объяснения.
Начнем со сложности установки и настройки. Да, FreeBSD не имеет такого красивого графического инсталлятора, как Red Hat, Mandrake или ASPLinux. Free'шный установщик, sysinstall, функционирующий в текстовом, лишь слегка украшенном псевдографикой, режиме выглядит несколько аскетично. Однако он вполне логичен и (по приобретении минимальных навыков) прост в использовании.
К тому же sysinstall - не просто инсталлятор, но еще и универсальный конфигуратор, до которого далеко и панели управления Red Hat, и Mandrake'вским Drake'ам. По универсальности с ним можно поставить в один ряд только Yast из Suse. При этом он отнюдь не препятствует ручному вмешательству в процесс конфигурирования, тогда как от общения с Yast'ом (не говоря уж о Drake) у меня осталось впечатление, что он и ручные настройки - две вещи несовместные.
С противоположной стороны, можно сказать, что sysinstall в своем универсализме проигрывает средствам установки и настройки таких Source Based дистрибутивов Linux, как Gentoo. Где специализированные инструменты установки и настройки просто отсутствуют - в этом качестве выступают командная оболочка bash и текстовый редактор (а что может быть универсальнее в мире Unix?).
Однако и это не вполне верно. FreeBSD можно установить, не прибегая к sysinstall вообще (и в одной из ближайших заметок я это проиллюстрирую). А для постинсталляционной настройки прибегать к нему вообще нет необходимости - того же редактора хватит за глаза. Хотя, in contrario, у пользователя всегда сохраняется sysinstall'ная альтернатива, результаты работы которой никогда не будут идеальными, но - всегда разумны.
Сложность освоения? Бытует мнение, тщательно культивируемое в определенных кругах, что работа во FreeBSD требует более высокой квалификации, чем в Linux. По моему скромному мнению, это в корне не верно. Не то чтобы во Free можно работать, не имея никаких знаний. Просто эффективное использование последней без некоторого минимума подготовки также невозможно. И во Free это становится ясным с первого эе запуска системы, не маскируясь ни теми же графическими инсталляторами, ни пропагандистскими лозунгами о том, что Linux стал проще Windows (на мой-то взгляд, так оно и есть, однако только при понимании специфики).
Относительно поддержки оборудования - вопрос очень и очень спорный. С одной стороны, поддержка существенно нового железа во Free обычно появляется несколько позже, чем в Linux. Однако ьуде она все же появилась - реализация такой поддержки, как правило, сразу вполне на уровне. Чего про Linux, к сожалению, сказать можно не всегда - вспомним не так давно имевшие место проблемы с USB и ныне существующие - с ATA RAID. Во FreeBSD ни тот, ни другой класс устройств не доставляет ни малейших неприятностей.
Часто отдельно встает вопрос о видеокартах. Однако, строго говоря, он не относится к компетенции ни Linux, ни FreeBSD: в текстовом режиме обеих этих операционок поддерживается практически любая когда либо существовавшая карта. Графический же режим - прерогатива оконной системы Икс, которая идентична и в Linux'е, и во FreeBSD. Конечно, драйверы для видеокарт от производителей (в сущности, модули ядра) специфичны для ОС. Однако в последнее время Nvidia выпускает драйверы к своим чипам для FreeBSD столь же исправно, что и Linux, прочие же (а их и осталось-то - ATI да Matrox, не считая встроенных SiS и Intel), как показывает история, будут вынуждены последовать их примеру.
Относительно поддержки периферии, особенно той, что еще недавно считалась за экзотическую (от сканеров и фотореалистических принтеров до цифровых камер) - сказать затрудняюсь. Вполне готов поверить, что печать фотографий в Linux осуществляется лучше (хотя в данном случае уместнее было бы - менее плохо). Однако для профессионалов цифровой фотографии любая Unix-платформа, скорее всего, неприемлема, а на любительском уровне прикрутить цифровую камеру к BSD-машине вряд ли существенно сложнее, чем к Linux-боксу.
Зато тезис о недостаточном количестве приложений опровергнуть очень легко. Ибо база пользовательских программ для Linux и FreeBSD - абсолютно одна и та же, и включает в себя все многообразие открытого и свободного софта, созданного человечеством. Для сравнения: число пакетов, входящих в дистрибутив Debian GNU/Linux, составляет около 8 тысяч, порты же FreeBSD насчитывают в себе более семи с половиной тысяч позиций (и постоянно возрастает). Более того, практически любая программа, не охваченная системой портов, написанная под абстрактный Unix или под Linux, и доступная в исходных текстах, может быть скомпилирована для работы во FreeBSD.
Разумеется, есть некоторое количество Linux-специфичных программ, не имеющих BSD-версий и не доступных в исходных текстах (то есть не принадлежащих к миру Open Sources). Тут обычно называют такие имена, как Kylix или RealPlayer. Однако и для них не все потеряно на платформе FreeBSD. Ибо последняя позволяет запускать бинарные Linux-программы в т.н. режиме совместимости, не только без потери производительности, как при эмуляции Windows-приложений, но даже, как утверждают некоторые, с приращением оной. К слову сказать, эмуляция Windows-программ через Wine во FreeBSD реализована столь же хорошо (или столь же плохо), как и в Linux.
И последнее. Когда речь заходит о плохой работе программ под FreeBSD, упоминается Java. Я с такими упоминаниями столкнулся на нашем же форуме, и был весьма удивлен. По существу вопроса ничего сказать не могу (буду признателен за разъяснения). Однако если это и так - то это, конечно, недоработка... Не Free, разумеется, а Java - зря, что ли, ее именуют кросс-платформенным языком...
Таким образом, все объективные причины к неиспользованию FreeBSD на десктопе на поверку оказываются либо не существенными, либо просто не имеющими место быть. В то же время для FreeBSD можно констатировать некоторые специфичные особенности, не свойственные Linux, которые могут выступать в качестве показаний к такому использованию.
И первым в этом ряду нужно назвать то, что FreeBSD - одна, а Linux'ов - много. И эту фичу первой операционки переоценить трудно. Любой пишущий о Linux вынужден либо делать массу дистрибутив-специфичных оговорок, либо просто делать вид, что других дистрибутивов, кроме им используемого, на свете не существует. А каково при этом читателю, особенно начинающему? FreeBSD же, будучи единой и (пока) неделимой, от этого свободна. Что, к слову сказать, делает ее идеальным объектом для первичного изучения Unix-систем вообще (именно изучения, а не ознакомления).
Вторая особенность FreeBSD, выгодно отличающая ее от Linux'а, вытекает из первой. Это - целостность системы. Если Linux - более или менее удачная попытка синтеза ядра системы с набором системных и прикладных утилит разного (преимущественно GNU'того) происхождения, то во FreeBSD комплекс утилит составляет с ядром неразрывное единство. И потому их совместимость как бы не подвергается сомнению (разумеется, в ветках, классифицированных в качестве стабильных). Именно этим единством обусловлена большая устойчивость FreeBSD - а отнюдь не превосходством ее ядра или утилит обрамления. Впрочем, вопрос сравнительной устойчивости я обсуждать категорически отказываюсь...
Третье мое утверждение может показаться парадоксальным, но оно основано на собственном опыте: FreeBSD устроена существенно проще Linux'а. Чтобы поверить в это, достаточно ознакомиться с системой ее инициализации, то есть стартовыми сценариями каталога /etc. Здесь нам не придется иметь дело ни с загадочными для начинающего пользователя runlevels (кстати, любой русский перевод этого термина способен только еще более ввести этого самого пользователя в заблуждение), ни с кучей подкаталогов типа /etc/init.d/rc.#, содержащих ссылки на скрипты интуитивно не всегда ясного назначения (да еще и разнящимися не только от дистрибутива к дистрибутиву, но от от версии к версии), ни на прочие атрибуты загрузки в стиле System V, характерного для большей части дистрибутивов Linux. Во FreeBSD же для старта системы абсолютно необходим лишь единственный стартовый сценарий (/etc/rc) и пара конфигурационных файлов (/etc/rc.conf и /etc/ttys) очень прозрачной структуры.
Предвижу два возражения: что система инициализации в стиле System V обеспечивает более гибкое управление процессом загрузки, и что BSD-сценарии плохо масштабируемы и теряют эффективность при большом количестве стартовых сервисов. Не могу с этим согласиться. В принципе. Однако у нас сейчас речь идет о настольной системе, а часто ли там возникает необходимость в запуске большого количества стартовых сервисов? Как правило, наоборот - пользователю любого "могучего" Linux-дистрибутива при настройке под себя приходится затрачивать немало усилий по разгрузке инициализационной схемы от излишеств, которые составители посчитали необходимостью. Не случайно же в последнее время ряд Linux-дистрибутивов обнаруживает тенденцию к замене излишне усложненного стиля загрузки, унаследованного от System V, более простым BSD-стилем (правда, сами по себе runlevels'ы от этого в них никуда не деваются).
И последнее. Система управления пакетами FreeBSD, т.н. система портов, выглядит на первый взгляд достаточно специфичной. Однако при внимательном рассмотрении оказывается, что основана она на механизме make-файлов, универсальном для всех Unix-систем. Тогда как управление пакетами в Linux, как правило, настолько дистрибутив-специфично, что виртуозное владение техникой rpm-билдинга мало чем может помочь при работе с deb-пакетами. Опять же показательно, что передовые идеи в Linux-дистрибутивостроении (портежи Gentoo, порты CRUX, sorcery из Sorcerer с потомками) генетически происходят из BSD-мира.
Все вышесказанное - не к тому, что FreeBSD лучше Linux'а, или наоборот: это опять же один из тех вопросов, которые я затрагивать не собираюсь. Приведенные рассуждения лишь служат иллюстрацией того, что FreeBSD для настольной системы подходит ничуть не меньше (и не больше), чем Linux. Разумеется, для тех задач, для которых использование операционок такого типа вообще оправдано. Но на эту тему я распространялся уже столько, что повторяться невместно... Ибо пора, наконец, знакомиться с главной героиней этого цикла - FreeBSD 5.1, о чем
Продолжение следует