БСД: Большие и Страшные Демоны. Выбираем лучшего

“Разработайте такую простую систему,
чтобы ей мог пользоваться даже идиот.
Жизнь показывает, что только идиот
и станет ею пользоваться”
Б.Шоу


Продолжая начатую нами еще в прошлом году горячую серию “БСД: Большие и Страшные Демоны” (см. первый выпуск серии в КГ №34(769) от 13.09.10 г.), публикуем сегодня интересный отклик на эту публикацию нашего читателя Александра из Москвы, который еще больше развивает тему отличий FreeBSD от своего ближайшего собрата Linux. Вот как формулирует свою текущую задачу сам Александр: “Я постараюсь быть максимально объективным, однако читателю следует иметь в виду, что эту заметку написал человек, у которого FreeBSD установлен и на домашнем ноутбуке, и на рабочем компьютере. Чтобы не показаться уж совсем некомпетентным в поднятом вопросе, отмечу, что мне приходилось плотно работать с такими дистрибутивами Linux, как Red Hat, Mandriva, Fedora, Ubuntu, и даже настраивать PDC на Gentoo. Последний, насколько мне известно, до сих пор успешно функционирует на моей старой работе.

1. Но сначала…

Но сначала я хотел бы обратить ваше внимание на саму постановку вопроса. Обычно он звучит так: «чем FreeBSD лучше Linux», а вовсе не «почему FreeBSD (во всем) лучше». Так вот, дело в том, что я не считаю, что все поголовно должны пользоваться FreeBSD. Равно как и Linux. Если вас устраивает та операционная система, которой вы сейчас пользуетесь, будь то Ubuntu или Windows 7, нет совершенно никакой нужды искать более хорошую операционку (если только вы не врожденный перфекционист, который отчетливо понимает, что всегда есть более лучшее, к чему стоит стремиться – хотя бы для своего развития).

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

В общем, я пытаюсь сказать, что эта статья – не голословный призыв «эй, вы все, переходите быстро на фряху!». Это просто мое личное мнение, предназначенное для тех, кто желает пользоваться UNIX, но не знает, что выбрать – Linux или FreeBSD.

2. Linux – не операционная система

Важно понимать различия между операционной системой и ядром операционной системы. Так вот, FreeBSD – это операционная система. Linux – это ядро операционной системы. Ubuntu, Gentoo, Arch Linux и SuSe – это дистрибутивы Linux, то есть операционные системы (плюс инсталлятор, менеджер пакетов и т.д.), основанные на ядре Linux. Всего существует несколько сотен дистрибутивов Linux, и все они довольно сильно между собой различаются. И это тревожит. Объясняю, почему.

Допустим, мы установили Ubuntu и какое-то время пользовались этим дистрибутивом. Пользовались-пользовались и в какой-то момент решили, что нам что-то не вполне в нем нравится. Например, нам хотелось бы иметь возможность собирать некоторый софт из исходников, однако Ubuntu предлагает нам только deb-пакеты. Что делать? Переходить на другую операционную систему, например Gentoo, и заново изучать, как там под ней устанавливается софт, где хранятся конфигурационные файлы и т.д.? (Поправка насчет Ubuntu: пользователи Ubuntu клятвенно заверили меня, что в этом дистрибутиве все-таки можно собирать софт из исходников средствами пакедж-менеджера. Не знаю, насколько это работает и приветствуется, но давайте считать, что мой пример неудачный, поэтому предусмотрительно заранее посыпаю свою голову пеплом.)

Пример, конечно, несколько надуманный, но, на мой взгляд, он хорошо иллюстрирует следующую идею-вывод: FreeBSD не ограничивает наш выбор ни в чем.

Ни в способе установки программ, ни в используемом оконном менеджере или файерволе, ни в настройках ядра и способе его обновления. Потому что это одна операционная система, и никто не пытается заточить ее только под определенный круг пользователей. Хотим – устанавливаем софт из бинарных пакетов (пакеджей), хотим – компилируем из исходников (портов). Хотим оконный менеджер – выбираем любой от KDE до Awesome. Не нравится файервол по умолчанию (ipfw) — ставим pf. Нужен сервер – получаем сервер, нужна рабочая станция – получаем рабочую станцию. Насколько мне известно, ни один дистрибутив Linux не обладает такой гибкостью и не предоставляет такой свободы выбора, как FreeBSD.

Есть и другие проблемы, связанные с тем, что разработкой ядра Linux и операционных систем на его основе занимаются разные люди. Но, на мой взгляд, они менее серьезны, чем описанные выше.

3. FreeBSD намного безопаснее Linux

Если с предыдущим пунктом еще можно как-то спорить, то здесь это совершенно бесполезно. Проведем элементарное исследование. Заходим на Google и вводим запрос site:www.securityfocus.com/bid/ intitle:"freebsd"

В настройках задаем период – с 01.01.2010 по 31.12.2010. Всего 4 уязвимости за целый год! Согласно security.freebsd.org – 10 уязвимостей, что не меняет картины. Для сравнения, в ядре Linux (intitle:’linux kernel’) за тот же период было найдено 123 уязвимости! Статистически выходит, что каждую неделю в ядре Linux гарантированно находят по две ошибки.

А если прибавить уязвимости в GNU и различных дистрибутивах? Ниже приведена гистограмма, отображающая количество ошибок, найденных во FreeBSD, Microsoft Windows и ядре Linux за последние 6 лет.

В одном только ядре Linux находят больше ошибок, чем в целых операционных системах типа Windows. Но хуже всего то, что количество уязвимостей, которые находят в Linux, год от года стабильно растет!

Можно было бы стандартно говорить о том, что в Linux находят больше ошибок, потому что им, дескать, пользуется больше людей, чем FreeBSD… если бы ошибок было не в 12 раз (!) больше, а, хотя бы, только в два. Я почти уверен, что именно благодаря своей безопасности FreeBSD пользуется большой популярностью у ведущих рунетовских хостинг-провайдеров, таких как Masterhost, Majordomo и RU-CENTER (пока оставим в покое любовь Yahoo и прочих крупнейших зарубежных порталов к FreeBSD).

Кстати, если внимательно посмотреть, какие ошибки находят во FreeBSD, несложно заметить, что, как правило, они могут использоваться злоумышленником только в очень, очень редких случаях. Взять, к примеру, довольно свежую уязвимость в nfsclient:

III. Impact

A user who can mount filesystems can execute arbitrary code in the kernel. On systems where the non-default vfs.usermount feature has been enabled, unprivileged users may be able to gain superuser («root») privileges.

IV. Workaround

Do not allow untrusted users to mount filesystems. To prevent unprivileged users from mounting filesystems, set the vfs.usermount sysctl variable to zero:

# sysctl vfs.usermount=0

Note that the default value of this variable is zero, i.e., FreeBSD is not affected by this vulnerability in its default configuration, and FreeBSD system administrators are strongly encouraged not to change this setting.

Неудивительно, что именно серверы под управлением FreeBSD славятся большими значениями uptime. Железо, на котором работает ОС, выходит из строя быстрее, чем появляется необходимость обновиться или перезагрузить машину. Традиционно высокий uptime серверов, работающих под FreeBSD, подтверждает (на момент написания этих строк) NetCraft.

Лично мне за последние полтора года ни разу не приходилось устанавливать какие-либо заплатки на своих машинах с FreeBSD. Также система ни разу не повисала за все это время. Сколько пользователей Linux могут похвастаться тем же?

4. Размер имеет значение

Сложно спорить с цифрами. Так что я решил провести еще одно маленькое исследование, на этот раз связанное с количеством строк в коде FreeBSD и Linux. Вы спросите, какое отношение имеет количество строк кода к качеству операционной системы? Прямое.

Любому программисту известно, что количество ошибок в программе тем больше, чем больше ее код. Вполне очевидно, что при написании маленькой программы-калькулятора ошибиться намного сложнее, чем при разработке серьезного бухгалтерского приложения. Для кого это не очевидно, тот без труда найдет в Сети множество исследований на соответствующую тему. Так давайте же посчитаем количество строк в коде FreeBSD и Linux. Считать будем с помощью утилиты CLOC (Count Lines Of Code, в портах FreeBSD – /usr/ports/misc/cloc). Она не учитывает комментарии и пустые строки в коде, а также умеет отфильтровывать копии файлов. Считать количество всех строк в исходном коде неинтересно, потому что комментарии, пустые строки и копии файлов, очевидно, никак не влияют на количество ошибок в программе.

Исходники Linux лежат в свободном доступе на kernel.org, исходники FreeBSD можно скачать из SVN репозитория:

# сохраняем исходники FreeBSD 5.0-RELEASE в каталоге 5.0-RELEASE
# не забываем сначала поставить /usr/ports/devel/subversion
svn export http://svn.freebsd.org/base/release/5.0.0/ ./5.0-RELEASE

Анализировались только релизы FreeBSD и Linux ветки 2.6, вышедшие в период с 2003-го по 2010 год. Какой релиз в каком году вышел, можно прочитать на оф.сайтах проектов.

В результате получилась такая зависимость количества строк кода от времени разработки (см. рис 3).

Здесь «freebsd» – это операционная система FreeBSD (все исходники), а «freebsd kernel» – это только ядро FreeBSD (каталог sys в исходниках системы). Легко убедиться, что ядро FreeBSD собирается совершенно независимо от остальных частей системы. Просто копируем исходники в /usr/src, переходим, удаляем все каталоги, кроме sys, говорим «make buildkernel». В конце компиляции должно появиться следующее сообщение:

-----------------------------------
>>> Kernel build for GENERIC completed
on Tue Dec 7 19:12:36 MSK 2010
-----------------------------------

Сравнивать, разумеется, следует ядро с ядром, а не ядро с системой. Желающие могут провести собственное исследование, сравнив ОС GNU/Linux с ОС FreeBSD.

Теперь давайте внимательно посмотрим на полученную нами картину “с полей”. Во-первых, ядро Linux значительно больше ядра FreeBSD, даже если на минуту представить, что 50% кода Linux – это различные драйверы и потому не считаются (между прочим, с чего бы вдруг им не считаться?). Исходный код Linux версии 2.6.33 даже больше кода всей (!) операционной системы FreeBSD – этакий гигантский монстр, дитя чрезмерной популярности проекта. Во-вторых, что намного тревожнее, размер ядра Linux увеличивается намного быстрее ядра FreeBSD – 4 млн новых строк кода за 7 лет против 1.5 млн. Кроме того, ядро Linux растет экспоненциально, в то время как ядро FreeBSD – линейно.

Итак, закрепим вышеприведенные цифры в виде вывода: ядро Linux значительно больше ядра FreeBSD, и, что намного хуже, оно растет значительно быстрее.

Следовательно, Linux в любом случае менее надежен и менее безопасен, чем FreeBSD. Этот нехитрый теоретический вывод полностью подтверждает и предыдущий пункт заметки №3, основанный на сугубо практической статистике обнаруженных ошибок и их динамике роста. Тот, который про безопасность.

Кстати, в ходе своего исследования я обратил внимание на пару интересных вещей, которыми не могу с вами не поделиться. Во-первых, в Linux до сих пор нет 10 млн строк кода, о которых так радостно кричали все СМИ еще в 2008 году. Но при таких темпах роста это круглое число может быть достигнуто уже через пару месяцев.

Во-вторых, почему-то при анализе исходников ядра 2.6.33 CLOC упал в кору, дойдя до знакового каталога include/linux. И падал при повторном его анализе, так что мне пришлось воспользоваться wc. Кому-то не хочется, чтобы мы знали количество строк в коде Linux? (на всякий случай – это шутка).

И, в-третьих, есть серьезные подозрения, что разработчики FreeBSD увеличивают первую цифру в версии системы при достижении очередного миллиона строк кода.
То есть, согласно cloc, FreeBSD 3.0-RELEASE имеет чуть более 3 млн строк кода, 4.0-RELEASE – 4 млн строк и так далее, вплоть до версии 8.0-RELEASE. Может, об этом интересном факте и написано где-нибудь в документации, но я лично был не в курсе.

5. Всякие мелочи

Здесь я мог бы рассказать, чем лицензия BSD лучше лицензии GPL, что единственный мейнтейнер ядра Linux в лице Линуса Торвальдса – это не так хорошо, как core team из девяти человек, избираемых раз в два года, и много еще о чем. Но не буду, потому что обо всем этом вы можете прочитать в уже упомянутой в начале этой статьи серии “БСД: Большие и Страшные Демоны”, а также в статье “FreeBSD: Open Source альтернатива Linux” на freebsd.org. Главная мысль этого пункта в том, что преимущества FreeBSD не ограничиваются только количеством находимых в системе ошибок и размером исходного кода ядра, непосредственно влияющего на его качество.

6. FreeBSD хорош… но не во всем

Основных недостатков FreeBSD перед Linux, на мой взгляд, три.

Во-первых, Linux поддерживает больше различных экзотических устройств, которые в особенности любят производители ноутбуков. В защиту FreeBSD скажу, что следует выбирать железо под конкретную операционную систему, а не наоборот. На моем ноутбуке Asus X51L стоит FreeBSD, и нет никаких проблем с тачпадом, чтением SD-карт, использованием Bluetooth и Wi-Fi, печатью на принтере через USB или сеть.

Во-вторых, некоторые программы, например Skype, распространяются только в виде бинарников для Windows, MacOS и нескольких дистрибутивов Linux. Конечно, это не вина разработчиков FreeBSD, но специально на этот случай они предусмотрели в своей ОС возможность запускать (именно запускать, а не эмулировать!) программы, скомпилированные под Linux. К счастью, таких программ раз, два и обчелся, а для всяких Photoshop и VMWare Workstation существуют бесплатные аналоги.

Наконец, большинство дистрибутивов Linux имеют красивый графический инсталлятор, переведенный на десятки языков, чтобы с установкой системы мог справиться даже школьник. Сразу после установки пользователь получает рабочую систему с оконным менеджером и минимальным набором программ (браузер, аудио/видеоплеер и т.д.). Существуют аналогичные сборки FreeBSD (не путать сборки и ОС!) – это PC-BSD и DesktopBSD. Но давайте посмотрим правде в глаза. Проект DesktopBSD в мае этого года чуть было не прекратил свое существование. PC-BSD развивается более стабильно, но, на мой взгляд, до уровня Ubuntu ему еще далеко.

7. Заключение

Как видите, каждому из проектов есть чем похвастаться и есть куда стремиться. Если вы цените надежность, безопасность и гибкость системы, я бы рекомендовал начать изучение “юниксов” с FreeBSD. Без графического инсталлятора и предустановленного оконного менеджера поначалу, конечно, будет нелегко, зато намного интереснее! Если же вы хотите в течение часа перейти на UNIX и сразу получить доступ к аське, ВКонтакте и т.п., тогда смело ставьте Ubuntu, тут самому думать не придется. А если вам просто нужен «бесплатный Windows» и все эти междоусобные войны вам параллельны, тогда, возможно, вас заинтересует ReactOS.

Подготовил Игорь Савчук http://eax.me/


Компьютерная газета. Статья была опубликована в номере 28 за 2011 год в рубрике ос

©1997-2024 Компьютерная газета