Почти объективно на тему «чем FreeBSD лучше Linux»
8 декабря 2010
Если в вопросе Linux против Windows все преимущества и недостатки сравниваемых ОС более-менее ясны, то в вопросе «FreeBSD против Linux» все не так просто, как многим хотелось бы. Вот почему гайды на соответствующую тему часто полны эмоций и витиеватых рассуждений.
Я постараюсь быть максимально объективным, однако читателю следует иметь в виду, что эту заметку написал человек, у которого FreeBSD установлен даже на домашнем ноутбуке и рабочем компьютере. Чтобы не показаться совсем уж некомпетентным в поднятом вопросе, отмечу, что мне приходилось работать с такими дистрибутивами Linux, как Ubuntu, Fedora, CentOS и 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 и какое-то время пользовались этим дистрибутивом. Пользовались-пользовались, и в какой-то момент решили, что нам что-то не вполне в нем нравится. Что делать? Переходить на другую операционную систему, например Gentoo. И изучать, как там под ней устанавливается софт, где хранятся конфигурационные файлы и тд.
В отличие от Linux FreeBSD не ограничивает наш выбор ни в чем.
Ни в способе установки программ, ни в используемом оконном менеджере или фаерволе, ни в настройках ядра и способе его обновления. Потому что это одна операционная система и никто не пытается заточить ее только под определенный круг пользователей. Хотим — устанавливаем софт из бинарных пакетов (пакеджей), хотим — компилируем из исходников (портов). Хотим оконный менеджер — выбираем любой от KDE до Awesome. Не нравится фаервол по умолчанию (ipfw), ставим pf. Нужен сервер — получаем сервер, нужна рабочая станция — получаем рабочую станцию. Насколько мне известно, ни один дистрибутив Linux не обладает такой гибкостью и не предоставляет такой свободы выбора, как FreeBSD.
Есть и другие проблемы, связанные с тем, что разработкой ядра Linux и операционных систем на его основе занимаются разные люди. Но на мой взгляд они менее серьезны, чем описанная выше.
3. FreeBSD намного безопаснее Linux
Если с предыдущим пунктом еще можно как-то спорить, то здесь это совершенно бесполезно. Проведем элементарное исследование. Заходим на Google и вводим запрос
В настройках задаем период — с 01.01.2010 по 31.12.2010. Всего 4 уязвимости за целый год! Согласно security.freebsd.org — 10 уязвимостей, что не меняет картины. Для сравнения, в ядре Linux (intitle:’linux kernel’) за тот же период было найдено 123 уязвимости!
Выходит, что каждую неделю в ядре Linux находят по две ошибки.
А если прибавить уязвимости в GNU и различных дистрибутивах? Ниже приведена гистограмма, отображающая количество ошибок, найденных во FreeBSD, Microsoft Windows и ядре Linux за последние 6 лет.
В одном только ядре Linux находят больше ошибок, чем в целых операционных системах.
Но хуже всего то, что количество уязвимостей, которые находят в Linux, год от года стабильно растет!
Можно было бы говорить о том, что в Linux находят больше ошибок, потому что им пользуется больше людей, чем FreeBSD… если бы ошибок было не в 12 раз больше, а, хотя бы, только в два. Я почти уверен, что именно благодаря своей безопасности, FreeBSD пользуется большой популярностью у таких крупных хостинг-провайдеров, как Masterhost, Majordomo и RU-CENTER.
Кстати, если внимательно посмотреть, какие ошибки находят во FreeBSD, несложно заметить, что, как правило, они могут использоваться злоумышленником только в очень редких случаях. Взять к примеру довольно свежую уязвимость в nfsclient.
Не удивительно, что именно серверы под управлением FreeBSD славятся большими значениями 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 репозитория:
# не забываем сначала поставить /usr/ports/devel/subversion
svn export http://svn.freebsd.org/base/release/5.0.0/ ./5.0-RELEASE
Анализировались только релизы FreeBSD и Linux ветки 2.6, вышедшие в период с 2003 по 2010 год. Какой релиз в каком году вышел, можно прочитать на офсайтах проектов.
В результате получилась такая зависимость количества строк кода от времени:
Здесь «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.
Дополнение: По состоянию на середину 2016-го года ситуация мало изменилась. Ядро Linux насчитывает 15 млн строк кода, ядро FreeBSD — 5 млн строк, а операционная система FreeBSD в целом — 15 млн строк.
Давайте внимательно посмотрим на полученную картинку. Во-первых, ядро Linux значительно больше ядра FreeBSD, даже если на минуту представить, что 50% кода Linux — это различные драйверы и потому не считаются (между прочим, с чего бы вдруг им не считаться?). Исходный код Linux версии 2.6.33 даже больше кода операционной системы FreeBSD! Во-вторых, размер ядра Linux увеличивается намного быстрее ядра FreeBSD — 4 млн новых строк кода за 7 лет против 1.5 млн. Кроме того, ядро Linux, похоже, растет экспоненциально, в то время, как ядро FreeBSD — линейно.
Итак, ядро Linux значительно больше ядра FreeBSD, и, что намного хуже, оно растет значительно быстрее.
Следовательно, Linux менее надежен и менее безопасен, чем FreeBSD. Это подтверждает и предыдущий пункт заметки. Тот, который про безопасность.
Кстати, в ходе своего исследования, я обратил внимание на пару интересных вещей, которыми не могу с вами не поделиться. Во-первых, в 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 из 9-и человек, избираемых раз в два года, и много еще о чем. Но не буду, потому что обо всем этом вы можете прочитать в уже упомянутой в начале заметки статье БСД: Большие и Страшные Демоны, а также в статье FreeBSD: Open Source альтернатива Linux на freebsd.org. Идея в том, что преимущества FreeBSD не ограничиваются только количеством находимых в системе ошибок и размером исходного кода ядра.
6. FreeBSD хорош… но не во всем
Основных недостатков FreeBSD перед Linux, на мой взгляд, три.
Во-первых, Linux поддерживает больше различных экзотических устройств, которые в особенности любят производители ноутбуков. В защиту FreeBSD скажу, что следует выбирать железо под конкретную операционную систему, а не наоборот. На моем ноутбуке Asus X51L стоит FreeBSD и нет никаких проблем с точпадом, чтением SD-карт, использованием Bluetooth и Wi-Fi, печатью на принтере через USB или сеть.
Во-вторых, некоторые программы, например Skype, распространяются только в виде бинарников для Windows, Mac OS и нескольких дистрибутивов Linux. Конечно, это не вина разработчиков FreeBSD, но специально на этот случай они предусмотрели в своей ОС возможность запускать (именно запускать, а не эмулировать!) программы, скомпилированные под Linux. К счастью, таких программ раз, два и обчелся, а для всяких Photoshop и VMWare Workstation существуют бесплатные аналоги. См также интересный бенчмарк по теме.
Наконец, большинство дистрибутивов Linux имеют красивый графический инсталятор, переведенный на десятки языков, чтобы с установкой системы мог справиться даже школьник. Сразу после установки пользователь получает рабочую систему с оконным менеджером и минимальным набором программ (браузер, аудио/видео плеер и тд). Существуют аналогичные сборки FreeBSD (не путать сборки и ОС!) — это PC-BSD и DesktopBSD. Но давайте посмотрим правде в глаза. Проект DesktopBSD в мае этого года чуть было не прекратил свое существование. PC-BSD развивается более стабильно, но на мой взгляд до уровня Ubuntu ему еще далеко.
Дополнение: В настоящее время PC-BSD выглядит уже вполне достойно. А еще есть GhostBSD. Очень приятная штука, но, к сожалению, пока что несколько сыроватая.
7. Заключение
Как видите, каждому из проектов есть чем похвастаться и есть куда стремиться. Если вы цените надежность, безопасность и гибкость системы, я бы рекомендовал начать изучение юниксов с FreeBSD. Без графического инсталятора и предустановленного оконного менеджера поначалу, конечно, будет нелегко, зато намного интереснее! Если же вы хотите в течение часа перейти на UNIX и сразу получить доступ к аське, вконтакту, куче игр и тп, тогда смело ставьте Ubuntu. А если вам просто нужен «бесплатный Windows» и все эти междоусобные войны вам параллельны, тогда, возможно, вас заинтересует ReactOS.
Дополнение: Некоторые другие преимущества FreeBSD перед Linux, не исключая ZFS и DTrace, перечислены в начале поста Использование FreeBSD на десктопе, версия 2.0. Еще вас могут заинтересовать мои заметки про установку и обновление софта в этой системе, а также обновление ядра и мира.
Дополнение: Если вас интересуют «более технические» различия между Linux и FreeBSD, обратите внимание на интервью с Константином Белоусовым — человеком, входящим во FreeBSD Core Team.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.