Open – source OS: 3 отличия Linux от OpenBSD
И Linux и BSD-системы бесплатны и с открытым исходным кодом, они являются Unix-подобными системами. Они зачастую даже используют практически одинаковый софт — у них много общего, и не так много различий. Так зачем тогда плодить сущности, другими словами — почему существует и те, и другие?
Основы
То, что большинство людей называют Линуксом, по сути, не совсем оно. Технически, Linux — это просто ядро Linux, так как типичные дистрибутивы Linux-а являются сборкой из множества кусочков различного софта, поэтому его иногда называют GNU/Linux. Но опять же, множество используемых на нем приложений также используются на BSD.
Как мы уже упомянули во введении, Linux и BSD являются Unix-подобными системами, но у них совершенно разное наследие. Linux был написан Линусом Торвальдсом, когда тот был студентом в Финляндии, а BSD расшифровывается как Berkeley Software Distribution, так как изначально это был пакет модификаций Bell Unix, который, в свою очередь, был создан в Калифорнийском Университете в Беркли. В конце концов, эта сборка эволюционировала в полноценную операционную систему, и теперь по миру ходит много разных BSD.
Ядро против полноценной ОС
Официально, Linux — это просто ядро. Дистрибутивы Линукса должны выполнять работу по сборке всего нужного ПО для создания полноценной операционной системы Линукс для создания того или иного дистрибутива, как например Ubuntu, Mint, Debian, Fedora, Red Hat или Arch — в мире есть огромное количество различных дистрибутивов.
А BSD, в свою очередь, это и ядро, и операционная система. К примеру, FreeBSD предоставляет и ядро FreeBSD и операционную систему FreeBSD, и все это добро обслуживается как единый проект. Другими словами, если вам захочется установить FreeBSD, вы просто сможете это сделать. Если же вы захотите установить себе Линукс, то вам вначале придется выбрать конкретный тип дистрибутива (у них есть большое количество тонкостей, различий и специфики между собой).
БСД системы иначе работают с софтом — они включают в себя ПО в исходном виде, и компьютер должен компилировать их перед запуском. Но, опять же, приложения также можно устанавливать в привычном виде, так что вам не придется тратить время и ресурсы на компиляцию.
Лицензирование
Лицензирование отличается у этих систем очень сильно, что для большинства не будет играть значения, а вот для людей, которые как-то на этом зарабатывают — можно и изучить подробнее. Linux использует GNU GPL, она же “Основная Публичная Лицензия”. Если вы модифицируете ядро Линукса и распространяете его, то вы обязаны также опубликовать исходники кода с вашими модификациями. В случае BSD, которые использует BSD лицензию, это совсем не так — вы ничего не обязаны публиковать, только если сами захотите.
И BSD, и Linux являются так называемыми “Open-source” системами, то есть имеют свободно распространяемый код, но это у них немного по-разному реализовано. Люди часто спорят, какая из этих лицензий является “более свободной”. GPL лицензия помогает конечным пользователям тем, что они всегда смогут найти исходники (это может помочь разобраться в решении и/или как-то доработать его, но ограничивает разработчиков, так как по сути заставляет их публиковать исходники всего того, что они наваяли в своих чертогах разума. Соответственно, на базе BSD разработчики могут создавать проекты с уже закрытым исходным кодом, для увеличения конечной стоимости и проприетарности.
Какие бывают БЗДы
- FreeBSD является самой популярной, целится на высокую производительность и удобство использования. Прекрасно работает на стандартных x86 и x64 процессорах от Intel и AMD;
- NetBSD предназначена для запуска на чем угодно и поддерживает бесконечное количество разных архитектур. Их лозунг: Конечно, NetBSD работает;
- OpenBSD сделана для максимальной безопасности, и не только со стороны ее функций, но и со стороны практик по ее внедрению. Она была спроектирована как операционная система для банков и прочих серьезных структур, у которых есть критические информационные инфраструктуры;
Есть еще две известные BSD системы:
- DragonFly BSD была создана с целью использования в мультипоточных средах — к примеру, в кластерах, содержащих в себе большое количество компьютеров;
- Mac OS X (вряд ли найдется человек, который не слышал это название) по факту базируется на ОС под названием Darwin, которая в свою очередь базируются на BSD. Она отличается от себе подобных систем: низкоуровневое ядро и прочее ПО является опенсорсным BSD кодом, бОльшая часть операционной системы это закрытый Mac OS код. Apple построила Mac OS и IOS на BSD, чтобы избавиться от необходимости писать низкоуровневую операционную систему, также как Google построила Android на базе Linux;
Зачем выбирать BSD вместо Linux?
Linux все еще гораздо популярнее той же FreeBSD. Как один из примеров, он начинает поддерживать новое железо раньше. По сути, они во многом обратно совместимы и многое ПО работает одинаково.
Если вам уже посчастливилось использовать Linux, то FreeBSD не будет ощущаться чем-то иным. Установите FreeBSD как десктопную ОС и вы будете использовать тот же Gnome или KDE, который вы использовали на Linux. Однако, FreeBSD не установит графическую оболочку автоматически, так что вам самим придется этим заниматься, то есть система является более «олдскульной» в том или ином смысле.
Иногда, FreeBSD может являться предпочтительной ОС на некоторых операционных системах за стабильность и надежность, а некоторые производители устройств могут выбирать BSD из-за отсутствия необходимости публиковать исходный код.
Если вы обычный пользователь десктопа, вам точно будет проще использовать Linux — так как такие операционные системы как Ubuntu или Mint гораздо дружелюбнее к конечному пользователю.
FreeBSD: гораздо лучше GNU/Linux
Сравню FreeBSD с GNU/Linux системами. Всё это исключительно субъективное мнение! Многое это просто мой опыт. Почти 100% всего времени я провожу за компьютером и исключительно Unix системами, примерно поровну с FreeBSD и GNU/Linux, вот уже 20+ лет.
Большая часть достоинств FreeBSD также относится и к другим популярным свободным BSD системам: NetBSD, OpenBSD, DragonflyBSD. Что-то в этих системах будет получше, многое появилось впервые не в FreeBSD, но перекочевало в неё. FreeBSD многое наследует от NetBSD (различные драйвера и подсистемы), от OpenBSD (сетевые технологии), DragonflyBSD (лучшая масштабируемость на многопроцессорных платформах), от Solaris (DTrace, идея Jail-ов, ZFS), сочетая самое лучшее ото всех.
Если коротко, то FreeBSD это высокое качество, надёжность, удобство и простота работы. GNU/Linux это зоопарк, помойка малосвязанного кода, мало чего доделываемое до конца, отсутствие документации, хаос, базар.
Главные отличия
FreeBSD | GNU/Linux |
---|---|
BSD это целостные законченные ОС, разрабатывающиеся как единое целое. Если решают добавить поддержку алгоритма сжатия Zstandard, то это появляется не только в компрессорах, но и в syslog-ротации и других местах. Если есть команды выдачи какой-либо статистики, то все они используют библиотеку типа libxo, унифицируя различные варианты вывода. Все команды создаются под одну гребёнку. | GNU это просто набор ПО, объединённый названием, copyright holder-ами, советами по созданию документации и конфигурированию сборки. Linux это один из вариантов ядра, наравне с Hurd или FreeBSD. Существуют сотни (тысячи?) дистрибутивов объединяющих всё это вместе, с совершенно разными и отличающимися требованиями, пакетными менеджерами, подходами, проверкой качества и тому прочим. Есть дистрибутивы и почти не использующие GNU ПО. Есть дистрибутивы не использующие Linux. |
Какой-либо унификации документации, конфигурации, вывода информации в софте толком нет. Всюду и везде будет явно и отчётливо видно, что вот эта небольшая программа/утилита написана одним человеком, а вот эта другим. Всюду и везде разные подходы ко всему: один считает так, другой считает так.
В основном забота о приведении всего к какому-то одному единому виду лежит на плечах distribution maintainer-ов, которым приходится править софт, возможно что-то дописывать за автором, ведь не всегда автор согласен на любого рода изменения. От maintainer-ов зависит удобство работы и качество (аккуратно разложенная документация, учёт демонов в системах ротации логов, системе логирования, периодичных заданий, и т.д.) предоставляемого ПО.
На практике, если сейчас взять одни из последних дистрибутивов Ubuntu, то вы не факт что сможете поставить его не на первый жёсткий диск, не факт что загрузчик GRUB сможет установится, не факт что вы сможете настроить IPv6, не факт что после первого же обновления пакетов системы во время установки у вас всё загрузится. Недавно я столкнулся с невозможностью штатно настроить MTU на сетевом интерфейсе в Ubuntu (серьёзно!?). Всё это я прошёл на практике и подобные банальные действия регулярно ломаются и не работают.
Framework для конфигурирования сети штатный один: настройки в rc файле, банально вызывающие ifconfig команды.
В FreeBSD есть три firewall-а: ipf, ipfw, pf — каждый со своими за/против, но каждый из них является полноценным законченным firewall-ом. ipfw это IPv4, IPv6, TCP/UDP/SCTP, ICMP*, Ethernet, traffic shaper/scheduler, NAT, NAT64, NPTv6, IPsec, stateless/stateful firewall в одном флаконе.
Думаете что раз команда ip призвана всё заменить, то она справилась со своей задачей? STP для bridge вы всё равно не настроите на данный момент без brctl, который из коробки может и не стоять. Вместо десятка утилит с совершенно отличающимся синтаксисом, теперь мы имеем на одну утилиту больше, не отменяющую надобность в остальных. В FreeBSD всё описанное выше делается ровно одним ifconfig.
Framework-ов для конфигурирования сети масса: shell-based системы как в Debian, NetworkManager, systemd средства. У всех у них есть какие-нибудь да ограничения на возможные конфигурации.
Думаете можно обойтись одним только iptables, пришедшим на смену ipchains? Для Ethernet пакетов надо использовать ebtables, для IPv6 ip6tables, для ARP arptables. И при этом, как мне кажется, ни один здоровый человек не сможет сказать что синтаксис правил для iptables удобен — он выполняет задачу, но все будут писать собственные скрипты/обёртки с отличным синтаксисом для удобного конфигурирования типа ufw.
Используется ли это всё до сих пор? Безусловно. Однако это считается deprecated и должно замениться nftables. Однако и он объявлен уже deprecated и bpfilter его может заменить. Однако на практике многие популярные дистрибутивы используют firewalld.
Кроме sysctl имеется /sys, а также ещё и дубляж аналогичных ручек управления через специфичные команды.
Постоянная технологическая отсталость GNU/Linux
ext4 появился лет на 10 позже UFS2 и только с ним в Linux появилась штатная система в которой хотя бы динамически происходит inode allocation. Однако, в ext4 при этом может утекать место занимаемое под директории и его невозможно вернуть назад без пересоздания ФС. Опыт компании ivi.ru говорит что на очень нагруженной (постоянно создание, удаление, тасование файлов) ext4 через месяцы работы становится неработоспособной и нужно пересоздавать ФС с нуля.
Также ext4 имеет смехотворный максимальный размер файла в 16 TiB для 4K блоков.
Про ReiserFS ничего не могу сказать, так как я её даже не успел попробовать, Райзер уже сел.
sndio используемый в OpenBSD умеет resampling, микширование от разных приложений, причём микшируя по устройствам (одна колонка для одного приложения, другая для другого), запись программами того, что играют другие, независимое управление громкостью, поддержка MIDI (с кучей фич), near real-time маленькие задержки.
Я молчу о том, что преобладающая часть популярных дистрибутивов начала активно использовать systemd и один только факт того, что *BSD его не используют уже является killer-feature. Но если взять systemd-free дистрибутив, то тогда нормально. При этом в FreeBSD, среди NetBSD и OpenBSD, самая продвинутая система загрузки, поддерживающая зависимости между службами, легко конфигурируемая простым текстовым файлом, написанная на небольшом количестве pure shell.
Неужели у GNU/Linux нет достоинств? С ходу я могу сказать, что некоторый важный GNU софт работает значительно быстрее BSD вариантов: sed и grep я ставлю GNU-шные. Это, зачастую, ценой усложнения кода и всяких трюков, но нельзя совершенно отбрасывать со счетов производительность. Чем, кстати, OpenBSD не может похвалиться — она плохо масштабируется на несколько процессоров.