За свободный десктоп,
или FreeBSD на столе


Этот цикл заметок посвящается операционной системе FreeBSD и ее использованию в мирных целях — то есть как операционной системы общего назначения, в том числе и на домашнем десктопе. Почему именно ей? Ответить не трудно. Хотя бы — для восстановления справедливости. Среди плотного вала вдохновенных (и не очень) описаний Linux'а, захлестнувшего в последние годы страницы компьютерных изданий, немногочисленные материалы о FreeBSD просто теряются. Хотя сама по себе система заслуживает внимания, как минимум, не меньшего.

Общая преамбула

Написав, казалось бы, не так давно книжку про FreeBSD, я не предполагал обращаться в ближайшее время к этой теме. Потому как сказал все, что хотел (и, главное, мог). Однако человек предполагает, а судьба располагает. И выход релиза версии 5.1 — первого полноценного представителя 5-й ветви, — изменил мои намерения. В итоге я решил начать на этих страницах новый цикл — о FreeBSD текущего момента, дабы не попала она окончательно в тень Linux'а.

Повторять написанное мной ранее было бы скучно. И потому здесь будет говориться, во-первых, о тех аспектах устройства и применениея FreeBSD, которые я не осветил ранее, и во-вторых — о том, что нового в мир BSD и вообще POSIX-систем принесла 5-я ветвь FreeBSD (наперед замечу — принесла она не мало). Если вам покажется, что я чего-то не договариваю — читайте, как говаривал Бернард Шоу, меня: А.Федорчук, А.Торн. FreeBSD: установка, настройка, использование. СПб.: БХВ-Петербург, 2003. Ну и другие doc'и и man'ы — благо по FreeBSD их много, и не разных, а хороших: см. FreeBSD: Каталог BSD-ресурсов.

Пользуясь случаем, я хотел бы выразить признательность авторам всех перечисленных в каталоге материалов, всем своим корреспондентам (прошу прощения, но поименный список был бы слишком обширен), а также своим коллегам по пропаганде идей Open Sources среди широких народных масс: Евгению Соколову и Тимофею Королеву (Linuxshop), постоянному автору UNIX4all Владимиру Попову, своему воинскому начальнику Сергею Соколову и нашему бессменному сисадмину Дмитрию Кудрявцеву (Геологический институт РАН), многолетнему соратнику по компьютеризации геологии Кириллу Крылову (geo.tv-sign.ru) и старому товарищу по ремеслу компьютерщика Владимиру Родионову (Все о цифровой фотографии).

Введение в предмет

О том, что такое FreeBSD, особенно распространяться не буду. Для начала достаточно знать, что это — такая же открытая (то есть распространяемая в исходных текстах) и свободная (то есть распространяемая без ограничений, налагаемых всякими правами, которые часто почему-то называют авторскими) Операционная Система, как и всем известный Linux (о деталях лицензионной политики пока не говорим).

В аспекте технологическом говорят о Unix-подобии FreeBSD и Linux. Хотя героическое сутяжничество SCO, видимо, приведет к полной дискредитации этого термина, время от времени нам придется им пользоваться. Так вот, критерии Unix-подобия — это, с позиций пользователя, в первую очередь (хотя и не только) использование интерфейса файловой системы как универсального средства доступа к ресурсам машины, локальной или глобальной сети. Легшие в основу Unix интерфейсы описаны в открытых (то есть общедоступных) стандартах, в первую очередь, стандартах POSIX — Portable Operating System Interface, стандарт интерфейсов портируемых (то есть предназначенных для различных платформ, а не мобильных, как иногда переводят) систем. Почему Unix-подобные системы еще называют POSIX-совместимыми. Каковому термину, по мнению резонных людей, и следует отдавать предпочтение.

Раз уж речь зашла об этом — раз и навсегда оговорим соотношения открытости в смысле следования стандартам (Open Systems), открытости исходного кода (Open Sources), свободы распространения (Free Software) и столь милой сердцу россиянина бесплатности (каковую лучше всего передать родным словом «халявность»). Тем более что последнее часто полагают неотъемлемым свойством Linux (да и FreeBSD тоже).

Так вот, открытость (то есть общедоступность) стандартов сама по себе не предполагает ни открытости построенных с их соблюдением систем (так и называемых — Open Systems), ни доступности их исходных текстов, ни свободы распространения, ни, тем паче, бесплатности (достаточно вспомнить любой из коммерческих или, как нынче стало модным говорить, проприетарный Unix'ов).

Далее, открытость в смысле доступности исходных текстов также не имеет своим следствием ни свободы распространения, ни бесплатности. Зримый пример — BSDi, соплеменница FreeBSD по клану Берклианских операционок: исходники для нее получить можно, но о свободе распространения оных речи не идет (да и сами исходники приобретаются за отдельную плату — так что и халявностью тут не пахнет).

Наконец, контаминация понятий свободы распространения и бесплатности основана исключительно на недоразумении (или скверно понятом английском, в котором, как метко заметил Ричард Столлмен, free может быть определением и свободного слова, и бесплатного пива).

Тем не менее, FreeBSD (как и Linux) — в полном смысле открытая (следующая открытым стандартам) система, распространяемая в исходных текстах свободно (накладываемые на это ограничения сводятся фактически к одному — вы не можете объявить себя ее автором; практически все остальное, согласно BSD-лицензии — можно) и бесплатно. Последнее должно пониматься четко: приобретая дистрибутив FreeBSD на CD-дисках или скачивая его по сети, вы, безусловно, платите: за диск, его изготовление и доставку, или за сетевой трафик/время на линии, и так далее. Но: вы не оплачиваете пресловутой интеллектуальной собственности разработчиков системы, майнтайнеров дистрибутива, авторов многочисленного дополнительного софта. И приобретенный вами дистрибутив, в соответствии со здравым смыслом, законами людскими и божьими (о российских или американских я не говорю), подобно любому другому нормальному товару, становится полной вашей собственностью: вам вольно его разобрать до винтика (до последней строчки кода), установить на произвольное число машин, скопировать, дать попользоваться другу и даже продать — за любые, между прочим, деньги, в которые вы оцените свои усилия по созданию копии (юридически ограничения на нормы прибыли, накладные расходы и тому подобные заковыки — опять же, не в счет).

FreeBSD на десктопе?

Однако я отвлекся — юридическая сторона феномена Open Sources может послужить темой не одной еще статьи. Нынешняя же — о том, а пригодна ли FreeBSD, при всех ее неоспоримых достоинствах (в числе коих бесплатность — не главное), к настольному, в том числе домашнему, использованию.

Не секрет, что если Linux мало-помалу завоевывает место под солнцем, освещающим десктопы конечных (хотя и достаточно специфических — но и это тема отдельного разговора) пользователей, то про FreeBSD этого не может сказать даже самый ярко выраженный оптимист. Почему? Главная причина неиспользования FreeBSD как настольной системы — в том, что никто ее в этом качестве не использует. Остальные же — производные от главной, хотя им и пытаются найти рациональные (скорее, псевдорациональные) объяснения. Среди них наиболее часто выступают:

  • большая (сравнительно с Linux) сложность установки и настройки;
  • сложность освоения;
  • худшая (опять же, если сравнивать с Linux) поддержка современного оборудования;
  • недостаточная поддержка периферийных устройств;
  • недостаточное количество приложений общего назначения.

Есть еще и объяснение иррациональное: FreeBSD — плохая (по сравнению с Linux, опять-таки) система, но о нем мы говорить не будем, поскольку это просто не так (прошу поверить на слово — доказательства будут представлены в последующих заметках цикла). А пока попробуем рассмотреть псевдорациональные объяснения.

О сложности FreeBSD

Начнем со сложности установки и настройки. Да, FreeBSD не имеет такого красивого графического инсталлятора, как Red Hat, Mandrake или ASPLinux. Free'шный установщик, sysinstall, функционирующий в текстовом, лишь слегка декорированном псевдографикой, режиме выглядит несколько аскетично. Однако он вполне логичен и (по приобретении минимальных навыков) прост в использовании.

К тому же sysinstall — не просто инсталлятор, но еще и универсальный конфигуратор, до которого далеко и панели управления Red Hat, и Mandrake'вским Drake'ам. По универсальности с ним можно поставить в один ряд только Yast из Suse. При этом он отнюдь не препятствует ручному вмешательству в процесс конфигурирования, тогда как от общения с Yast'ом (не говоря уж о Drake) у меня осталось впечатление, что он и ручные настройки — две вещи несовместные.

С противоположной стороны, можно сказать, что sysinstall в своем универсализме проигрывает средствам установки и настройки таких Source Based дистрибутивов Linux, как Gentoo. Где специализированные инструменты установки и настройки просто отсутствуют — в этом качестве выступают командная оболочка и текстовый редактор (а что может быть универсальнее в мире POSIX-совместимых систем?).

Однако и это не вполне верно. FreeBSD можно установить, не обращаясь к sysinstall вообще (хотя с точки зрения трудозатрат это — не самое оптимальное решение). А для постинсталляционной настройки прибегать к нему вообще нет необходимости — того же текстового редактора хватит за глаза. Хотя, in contrario, у пользователя всегда сохраняется sysinstall'ная альтернатива, результаты работы которой никогда не будут идеальными, но — всегда разумны.

Сложность освоения? Бытует мнение, тщательно культивируемое в определенных кругах, что работа во FreeBSD требует более высокой квалификации, чем в Linux. По моему скромному мнению, это в корне не верно. Не то чтобы во FreeBSD можно работать, не имея никаких знаний. Отнюдь. Но и эффективное использование Linux, что бы не утверждали создатели всякого рода Lindows, без некоторого минимума подготовки абсолютно невозможно. Причем во FreeBSD это становится ясным с первого же запуска системы: ее первозданная Unix-сущность не маскируется ни теми же графическими инсталляторами, ни пропагандистскими лозунгами о том, что Linux стал проще Windows.

О поддержке оборудования

Относительно поддержки оборудования — вопрос очень и очень спорный, и потому заслуживающий подробного рассмотрения. Казалось бы, с одной стороны, Linux последнее время пользуется некоторым вниманием со стороны производителей «железа» — подчас, например, принтеры комплектуются «родными» драйверами, которых для FreeBSD заведомо не сыскать. Часто можно найти Linux-драйвера для ATA RAID-контроллеров, новых чипсетов и тому подобного. Однако это — палка о двух концах. Такие фирменные драйвера практически всегда поставляются в бинарном виде, и скомпилированы под определенные (как правило, устаревшие на момент выхода) версии ядра, а то и под конкретные дистрибутивы из числа наиболее распространенных (как правило, Red Hat, иногда — Suse). И работоспособность их в произвольной Linux-системе не то что не гарантируется, но иногда и прямо отвергается.

С другой стороны, факт, что поддержка существенно нового «железа», не зависящая от его производителей и фирменных драйверов, во FreeBSD обычно появляется несколько позже, чем в Linux. Однако буде она все же появилась — реализация ее, как правило, изначально лучше. Хотите примеры? Их есть у меня.

Во FreeBSD с USB-устройствами любого рода не возникало ни малейших проблем с того момента, как она вообще узнала о существовании этой шины. В Linux же некоторые шероховатости в работе с USB-устройствами время от времени отмечаются по сию пору.

В любой версии FreeBSD, с которой я имел дело (а это — начиная с 4.2) все прошедшие через мои руки ATA RAID-контроллеры опознавались и работали безупречно. Поддержка тех же устройств в Linux появлялась часто более чем через год. И, как я говорил, фирменные драйвера, которые можно найти на серверах Promise или HighPoint, дела в общем случае не спасают...

Относительно всех стандартных устройств и говорить не приходится. Живой пример — работа с южными мостами современных чипсетов типа i845PE и выше, функционирующих во FreeBSD более чем справно. И для которых даже последние версии ядра Linux (2.4.21) регулярно сообщают о работе в не вполне родном (not 100% native) режиме.

Часто отдельно встает вопрос о видеокартах. Однако, строго говоря, он не относится к компетенции ни Linux, ни FreeBSD: в текстовом режиме обеих этих операционок поддерживается практически любая когда-либо существовавшая карта. Графический же режим — прерогатива оконной системы Икс, которая идентична и в Linux'е, и во FreeBSD. Конечно, драйверы для видеокарт от производителей (в сущности, модули ядра) специфичны для ОС. Однако в последнее время NVIDIA выпускает драйверы к своим чипам для FreeBSD столь же исправно, что и для Linux, прочие же (а их и осталось-то — ATI да Matrox, не считая размазанных по чипсетам SiS и Intel), как показывает история, будут вынуждены последовать их примеру.

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

Немаловажный вопрос для конечного пользователя — легкость использования оборудования. И тут, не побоюсь этого слова, FreeBSD просто вне конкуренции. На заре знакомства с этой системой я долго недоумевал, почему так мало пишут о настройке сети или модемного подключения во FreeBSD (по причине существенно оффлайнового образа жизни эти вопросы в Linux часто оказывались для меня камнем преткновения). Пока однажды не попробовал проделать это сам. И тут выяснилось — писать-то просто нечего: настройка и сети, и DialUp соединения во FreeBSD выполняется не просто. А — очень просто.

Впрочем, это можно сказать и об использовании почти любого другого оборудования из числа поддерживаемого. Для включения современной звуковой PCI-карты на более-менее распространенных чипах в версиях Free 4-й ветки достаточно было пересобрать ядро с добавлением 1-й (одной!) строки. А в версиях ветки 5-й — и эта необходимость отпала (вполне можно обойтись подключаемыми модулями). Не намного сложнее осуществить и поддержку старых (в том числе некогда полагавшихся высококлассными — да пожалуй, что такими и оставшихся) ISA-карт.

Запись CD-R/RW дисков (на распространенных нынче ATA-приводах) во FreeBSD не требует манипуляций (не всегда однозначных и не сказать чтобы интуитивно прозрачных) с опциями эмуляции SCSI-интерфейса через IDE в ядре системы, или передачи ядру параметров при загрузке (как это делается в Linux). Все заботы о функционировании пишущего привода берет на себя штатная утилита burncd, пригодная к употреблению в свежеустановленной системе изначально.

Сказанное об использовании оборудования было характерно для FreeBSD всегда (по крайней мере, на моей памяти). Однако ныне положение стало еще лучше. Ибо в версиях 5-й ее ветки реализована поддержка файловой системы устройств (devfs), без которой трудно эффективно использовать преимущества, например, устройств «горячего» подключения. И, вследствие целостной модели разработки FreeBSD, поддержка эта не отягощена родимыми пятнами «обратной совместимости».

До недавнего времени у Linux'а был один неоспоримый козырь против FreeBSD — более широкий круг поддерживаемых платформ: вплоть до 4-й ветки включительно, последняя работала только на Intel-совместимых машинах и на компьютерах с процессором Alpha. Однако для настольного использования в нашей Отчизне это вряд ли когда-нибудь было актуальным. А теперь и вовсе, с приобретением в 5-й ветке внутренней 64-разрядности, FreeBSD способна функционировать и на PowerPC, и на Sparc'ах. Есть версии ее и для 64-разрядных x86-систем, причем как от Intel, так и от AMD.

О недостатке софта

Тезис о недостаточном количестве приложений общего назначения, разрабатываемых для FreeBSD, даже не нуждается в опровержении. Ибо база пользовательских программ для Linux и FreeBSD — абсолютно одна и та же, и включает в себя все многообразие открытого и свободного софта, созданного человечеством. Для сравнения: число пакетов, входящих в дистрибутив Debian GNU/Linux, составляет около 8 тысяч, количество же портов FreeBSD недавно перевалило за десять тысяч позиций (и число это постоянно возрастает). Более того, практически любая программа, не охваченная системой портов, написанная ли под абстрактный Unix, или под Linux, доступная в исходных текстах, может быть скомпилирована для работы во FreeBSD.

Разумеется, есть некоторое количество Linux-специфичных программ, не имеющих BSD-версий и не доступных в исходных текстах (то есть не принадлежащих к миру Open Sources). Тут обычно называют такие имена, как Kylix или RealPlayer. Однако и для них не все потеряно на платформе FreeBSD. Ибо последняя позволяет запускать бинарные Linux-программы в т.н. режиме совместимости, не только без потери производительности, как при эмуляции Windows-приложений, но даже, как утверждают некоторые, с приращением оной. К слову сказать, эмуляция Windows-программ через Wine во FreeBSD реализована столь же хорошо (или столь же плохо), как и в Linux.

Таким образом, все объективные причины к неиспользованию FreeBSD на десктопе на поверку оказываются либо не существенными, либо просто не имеющими место быть. В то же время для FreeBSD можно констатировать некоторые специфичные особенности, не свойственные Linux, которые могут выступать в качестве показаний к такому использованию.

FreeBSD и Linux в сравнительном аспекте

И первым в этом ряду нужно назвать то, что FreeBSD — одна, а Linux'ов — много. И эту фичу первой операционки переоценить трудно. Любой пишущий о Linux вынужден либо давать массу дистрибутив-специфичных оговорок, либо просто делать вид, что других дистрибутивов, кроме им используемого и описываемого, на свете не существует. А каково при этом читателю, особенно начинающему? FreeBSD же, будучи единой и неделимой, от этого свободна. Что, к слову сказать, делает ее идеальным объектом для первичного изучения POSIX-систем вообще (именно изучения, а не ознакомления).

Вторая особенность 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-стилем. А вот противоположных попыток что-то не наблюдается...

И последнее. Система управления пакетами FreeBSD, т.н. система портов, выглядит на первый взгляд достаточно специфичной. Однако при внимательном рассмотрении оказывается, что основана она на механизме make-файлов, универсальном для всех POSIX-систем. Тогда как управление пакетами в Linux, как правило, настолько дистрибутив-специфично, что виртуозное владение техникой rpm-билдинга мало чем может помочь при работе с deb-пакетами. Опять же показательно, что передовые идеи в Linux-дистрибутивостроении (портежи Gentoo, порты CRUX, ABS из Archlinux, sorcery из Sorcerer с потомками) генетически происходят из BSD-мира.

Резюмируя все сказанное, попробую сформулировать главное различие между Linux и FreeBSD. Первая — система по сути своей альтернативная. Это выражено в том, что абсолютно любой компонент ее, кроме ядра, может быть заменен функциональным аналогом. Что, конечно, придает ей обаяния — любой пользователь Linux-системы может почувствовать себя соучастником ее разработки и конструктором системы собственной. FreeBSD же — монолитное сооружение, из которого, как из сложенной в соответствие со стихотворным размером поэмы, невозможно ни выкинуть ни единого слова, ни, практически, добавить хоть запятую. Хорошо это или плохо — но для начинающего пользователя POSIX-систем, не имеющего, к тому же амбиций разработчика, это может оказаться существенным плюсом.

А вообще-то все, что я сказал в сравнительном аспекте — не к тому, что FreeBSD лучше Linux'а, или наоборот. Ибо это опять же один из тех вопросов, которые я затрагивать не собираюсь («мне нравятся очень... обои», как сказал великий русский поэт Алексей Константинович aka Толстой). Приведенные рассуждения лишь служат иллюстрацией того, что FreeBSD для настольной системы подходит ничуть не меньше (хотя, возможно, и не больше), чем Linux. Разумеется, для тех задач, для которых использование операционок POSIX-типа вообще оправдано. Но это — уже совсем другая история.



Дополнительно

iXBT BRAND 2016

«iXBT Brand 2016» — Выбор читателей в номинации «Процессоры (CPU)»:
Подробнее с условиями участия в розыгрыше можно ознакомиться здесь. Текущие результаты опроса доступны тут.

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.