- Почему BSD проиграла в битве с GNU/Linux?
- В бой вступают юристы
- Две разные лицензии
- Две разные методологии
- Наследие BSD
- Примечания переводчика
- Сравнение Linux и BSD
- Разница между Linux и BSD
- Выбор Linux и BSD
- Программы для Linux и BSD
- Связь UNIX и BSD
- Linux vs BSD: поддержка «железа»
- GPL и BSD лицензии
- Работает — не трогай
- Подведем итоги
- FreeBSD: гораздо лучше GNU/Linux
- Главные отличия
- Постоянная технологическая отсталость GNU/Linux
Почему BSD проиграла в битве с GNU/Linux?
Существует множество разных операционных систем с открытым исходным кодом, и если вы пользуетесь одной из них, то почти наверняка она будет на базе ядра Linux и набора программ GNU. Многие думают, что дистрибутив GNU/Linux и был первой open source операционной системой. Но это не так. Его опередил проект Berkeley Software Distribution, или BSD. Причем будет справедливо сказать, что он был также более профессиональным и ориентированным на рынок. Но почему тогда BSD сейчас находится на задворках экосистемы open source, тогда как GNU/Linux играет одну из центральных ролей? Посмотрим на это с исторической перспективы.
История BSD тесно связана с Unix, операционной системой, которая была выпущена AT&T Bell Labs в 1969 году. В конце 70-х группа специалистов Калифорнийского университета в Беркли во главе с Биллом Джоем начала разработку проекта BSD как одного из дистрибутивов Unix. Какой-либо существенный разницы между ними на тот момент не было. Они просто добавили несколько дополнительных утилит, которые включали исходный код, принадлежащий AT&T.
Однако все начало меняться в начале 80-х, когда решение AT&T продавать Unix привело к появлению спроса на свободный клон Unix-а, но без дорогостоящей лицензии. Разработчики BSD в течение нескольких лет трудились над тем, чтобы отделить их код от кода AT&T. Они медленно, но верно шли к созданию собственной полноценной Unix-like операционной системы.
Их цель была достигнута в июне 1991 года, с выпуском BSD Net 2. В отличие от предыдущего релиза Net 1, который состоял по большей части из кода для работы с сетями и не был самостоятельной операционной системой, Net 2 была именно полноценной Unix-like системой.
И так как BSD Net 2 шла с лицензией, которая давала доступ к исходном коду и право свободно распространять как ее саму, так и любые ее производные, она была по сути первой open source операционной системой в истории. Хотя самого понятия «open source» в то время еще не было, и лицензия BSD не соответствовала требованиям Free Software Foundation Ричарда Столлмана, тем не менее Net 2 стала большим шагом вперед для всего сообщества свободного программного обеспечения. Это доказало, что написать свободный клон Unix — реально.
Выпуск Net 2 имел большое значение также и потому, что на тот момент это был единственный свободный клон Unix, который действительно работал. Линус Торвальдс выпустил первую версию ядра Linux лишь через несколько месяцев, причем прошло более чем два года, прежде чем оно стало достаточно применимым. Тогда как в проекте операционной системы GNU, которую с 1984 года разрабатывали Ричард Столлман и его сторонники, еще не было своего рабочего ядра.
И если BSD Net 2 была первой свободной Unix-like операционной системой в своем роде, то почему она не смогла «выстрелить» и стать тем, чем стал GNU/Linux — главной платформой экосистемы open source?
В бой вступают юристы
Одной из причин были судебные тяжбы между Berkeley Software Design Inc. (BSDI) и Unix Systems Labs (USL). В начале 90-х компания USL стала владельцем операционной системы AT&T Unix и подала в суд на BSDI за нарушение своих авторских прав. Неудивительно, ведь они разрабатывали свободную альтернативу их продукту. В марте 93 года суд отклонил большинство их претензий, но юридические баталии все еще продолжались вместе с контр-иском Калифорнийского университета. И только в начале 94 года, когда уже компания Novell стала владельцем Unix, все юридические споры были окончательно урегулированы.
Если смотреть в целом, все эти юридические проблемы на самом деле не помешали распространять и использовать операционную систему BSD. Но возникшие сомнения в защищенности ее юридического положения однозначно замедлили это. По всей видимости, именно поэтому возник тот самый исторический шанс для ядра Linux, который позволил ему неожиданно «выстрелить». А ведь это был просто хобби-проект одного финского студента, в отличие от профессиональной разработки группой ученых ведущего американского университета.
Две разные лицензии
Медленный рост BSD не получится объяснить только лишь юридическими проблемами. В конце концов у GNU/Linux тоже были аналогичные серьезные проблемы в начале 2000-х, когда SCO Group подала в суд на нескольких крупных вендоров Linux и корпоративных пользователей. Эти тяжбы в целом завершились только в 2007 году в пользу Linux. Но тем не менее они не оказали такого негативного воздействия, популярность Linux-а продолжала расти.
Одна из причин почему BSD не смогла обрести такую популярность среди технически продвинутых программистов и админов («хакеров») заключается в характере лицензии Net 2, которая разрешала практически все. В отличие от лицензии GPL проекта GNU, которая обязывает раскрывать исходный код всех производных продуктов, лицензия BSD к этому не обязывает. Программисты могут свободно заимствовать и модифицировать код для любых задач, не делая его публичным. Это очень хорошо для коммерческих проектов, но плохо для «хакеров», которые ценят открытость и прозрачность.
Две разные методологии
Третья важная причина заключается в том, что BSD разрабатывалась относительно небольшой организованной группой профессиональных программистов из Беркли. В то время как разработка ядра Linux велась Линусом Торвальдсом с помощью широкой и гибкой сети добровольцев раскиданных по всему миру. Используя сравнения Эрика Раймонда из его знаменитого эссе, создание BSD было подобно строительству величественного «собора», который тщательно возводила небольшая группа мастеров своего дела. Тогда как развитие Linux-а выглядело как стихийный «базар», в котором дела решались быстро, новые версии появлялись часто, и единственным требованием к членам этой разношерстной команды была способность решать насущные вопросы.
«Соборный» подход также был характерен для самого проекта GNU, еще задолго до появления Linux, но именно Linux показал как можно быстро обрести популярность через частые релизы. Таким образом Линус Торвальдс случайно открыл совершенной новый, более эффективный подход в разработке, благодаря которому Linux смог очень быстро эволюционировать, гораздо быстрее чем BSD.
Наследие BSD
Разумеется, проект BSD не мог просто исчезнуть после стремительного взлета Linux в 90-х. Более того, множество свободных операционных систем, берущих начало из Net 2, в первую очередь NetBSD, OpenBSD, FreeBSD, продолжает жить и здравствовать, пусть с небольшим, но зато преданным комьюнити.
В то же время, характер лицензии BSD привел к ее популярности среди разработчиков проприетарного ПО. Самый яркий пример — это компания Apple, которая использовала исходники BSD в своих операционных системах macOS и iOS. Учитывая это, BSD — в той или иной форме — имеет сегодня огромную армию поклонников, хотя большинство владельцев макбуков и айфонов даже не подозревают, что их устройства используют «open source» код, который разрабатывали в Беркли с 80-х до начала 90-х.
Возможно, это печально, ведь программные решения Apple закрыты настолько, насколько это возможно. Это прямая противоположность того, о чем мечтали создатели BSD, когда выпустили Net 2 в 1991 году. Как бы то ни было, итог получился интересный.
Примечания переводчика
Это был перевод статьи «Open Source History: Why Didn’t BSD Beat Out GNU and Linux?», автор Christopher Tozzi.
Отмечу, что на сайте FreeBSD приводятся немного другие сведения — о том, что первой полноценной операционной системой была не BSD Net 2, а 386BSD, вышедшая в 1992 году. На русском, на английском.
Еще одним ярким примером популярности наследия BSD является игровая приставка Sony Play Station — ее операционная система является форком FreeBSD.
Понимая, что затронута достаточно холиварная тема, прошу всех писать только взвешенные комментарии и уважать другую точку зрения. Давайте также сделаем небольшой опрос.
Источник
Сравнение Linux и BSD
Сегодня мы попытаемся разобрать, что лучше подходит для ваших целей, Linux или BSD системы. GNU/Linux и BSD — это две системы с открытым исходным кодом, принадлежащие к семейству UNIX. Несмотря на это, у обеих систем заметны определенные различия, особенно это заметно в поддержке железа, в принципах разработки ПО и т.д. Также Linux намного более распространен, нежели BSD.
Когда вы решили выбраться из экосистемы Windows, вы сразу же обратите внимание на macOS. Вряд ли вы ее установите, так как придется купить компьютер Mac. Конечно, можно установить Hackintosh, но для раскрытия ее потенциала вам понадобится специфичное «железо». Многие сомневаются в GNU/Linux как в ОС, что было темой для споров на протяжении долгого времени.
Таким образом, некоторые люди называют операционную систему Linux как GNU/Linux.
Вскоре вы начинаете понимать, насколько разнообразна экосистема Linux с многочисленными дистрибутивами и их производными. Не думайте, что операционные системы на базе ядра Linux — единственные в своем роде ОС с исходным кодом. Есть и менее известное семейство операционных систем, известное как BSD (Berkeley Software Distribution), которое также считается одной из главных в сообществе открытого исходного кода.
Разница между Linux и BSD
Самой большой разницей между Linux и BSD является то, что Linux сам по себе является ядром, в то время как BSD является операционной системой (также включает в себя ядро). Ядро Linux используется для создания дистрибутива Linux после сборки других компонентов. Возьмите ядро Linux с GNU программами и прочим, и вы получите полноценную ОС GNU/Linux. В случае BSD — подобных систем, разработчики создают полную операционную систему.
И Linux, и BSD семейства имеют своего маскота или талисмана. Как вы догадались, для Linux это Такс (пингвин), а для BSD-мультяшный демон.
Выбор Linux и BSD
Для пользователей Linux существует бесчисленное количество дистрибутивов. Все они являются производными некоторых популярных дистрибутивов Linux, включая Debian, Gentoo, Red Hat, Slackware и т.д. В дополнение к этому, существует множество отдельных дистрибутивов Linux как Solus, Puppy Linux и т.д.
BSD как самостоятельная ОС больше не существует, но она используется для обозначения существующего семейства производных BSD. В настоящее время BSD представляют три основные ОС, а именно FreeBSD, OpenBSD, NetBSD, наряду с DragonFly BSD и другими дистрибутивами. FreeBSD нацелен на обычных пользователей, на долю которого приходится около 80%.
Программы для Linux и BSD
Пакеты для Linux систем поставляются в готовом (бинарном) виде. Существует два наиболее популярных формата: DEB и RPM, для установки которых требуется наличие APT/yum соответственно.
Совсем по другому обстоит ситуация с BSD, где для установки программ используются порты. На данный момент насчитывается приблизительно 25000 портов.
В отличии от готовых пакетов в Linux, порты содержат исходный код, который необходимо скомпилировать на вашем компьютере. Эта особенность делает FreeBSD неудобной для использования для обычных пользователей. Тем не менее, количество готовых бинарных пакетов, устанавливаемых через утилиту pkg, растет.
В BSD системах количество программ мало, и в связи с этим разработчики ПО пытаются контролировать ситуацию с помощью введения совместимости пакетов, чтобы запускать Linux приложения на BSD.
Обратите внимание на одну вещь. Перед тем как вы станете считать FreeBSD чем то запредельным, имейте в виду, что она поддерживает и популярные DE, например KDE и GNOME, и много других программ, доступных для Linux.
Связь UNIX и BSD
Известно, что большинство ныне существующих ОС в каком то смысле относятся к UNIX. UNIX имел закрытый исходный код (да, вы не ошиблись) — операционная система, разработанная в Bell Labs и написанная на ассемблере. Позже, большая часть системы была переписана на языке Си.
BSD (с закрытым исходным кодом) и ее производные являются прямыми потомками UNIX. В отличие от своих предков, FreeBSD, NetBSD и другие BSD — подобные являются системами с открытым исходным кодом.
Ядро Linux было написано Линусом Торвальдсом, который до сих пор контролирует весь процесс разработки ядра.
Linux vs BSD: поддержка «железа»
Операционные системы с открытым исходным кодом лишены нормальный поддержки оборудования. В плане поддержки «железа» лидируют Windows и MacOS. Будь это новейший процессор или видеокарта, эти закрытые ОС предоставляют хорошую поддержку, оставляя GNU/Linux и BSD позади.
Если речь идет о редких устройствах, то по сравнению с Windows, дистрибутивы Linux имеют преимущество, так как разработчики сотрудничали с производителями устройств. BSD в этом плане далеко позади, и далеко не факт, что ваш, к примеру, китайский Wi-Fi модуль тут же «заведется».
GPL и BSD лицензии
Еще одно большое отличие между Linux и BSD это вид лицензии, которыми они защищены. GNU/Linux поставляется c GNU GPL (General Public License)
Операционные системы, что основаны на BSD, поставляются с BSD лицензией, так же известной как FreeBSD лицензией.
GPL олицетворяет мировоззрение Ричарда Столлмана, что программное обеспечение должно быть свободным, доступным для всех. Именно поэтому при использовании GNU GPL разработчик обязан опубликовать исходный код в свободном доступе.
С другой стороны, лицензия BSD не предполагает обязательное раскрытие исходных кодов. Это делается по желанию разработчика.
Работает — не трогай
BSD системы целиком соответствуют этому высказыванию. Вряд ли какая нибудь новомодная фишка появится на BSD, особенно если в этом нет особой нужды. Некоторые Linux дистрибутивы же, наоборот, стараются внедрить все самое новое и лучшее.
Именно поэтому BSD системы считаются наиболее стабильными и надежными.
Подведем итоги
Что касается спора об целесообразности установки Linux или BSD, Linux наиболее распространен на ПК, нежели FreeBSD. Это обусловлено тем, что для использования BSD необходимо быть более «технически подкованным», а к тому же GNU/Linux имеет намного лучшую поддержку оборудования. Еще одним фактором в споре Linux vs BSD может являться поддержка сообщества Linux.
BSD системы более известны своей надежностью, а поэтому находят свое место на серверах и встраиваемых системах. Также BSD имеет возможность запускать исполняемые файлы, предназначенные для Linux, но, к сожалению, обратная совместимость не предоставляется возможной. Трудно сказать, что лучше, так как обе ОС имеют свои собственные плюсы и минусы.
На завершение видео с обзором NetBSD:
Источник
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 (серьёзно!?). Всё это я прошёл на практике и подобные банальные действия регулярно ломаются и не работают.
Взяв дистрибутив GNU/Linux, вы можете получить тысячу компонентов ПО вместе с GNOME, NetworkManager и чем-то подобным, потом занимаясь отключением и удалением последних. А можете получить дистрибутив в котором нет и компиляторов и даже netcat утилит которые бы умели IPv6 (и не будет ни telnet, ни socat), имея на руках мало на что пригодную даже для проверки работоспособности сети ОС.
Никаких гарантий что та или иная фича вообще когда-либо будет достаточно стабильна и надёжна. Например POSIX file locks, по сути, до сих пор не работают в Linux.
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 в одном флаконе.
Почти всё что касается конфигурирования уровня ОС, глобального, использует sysctl.
Думаете что раз команда 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, а также ещё и дубляж аналогичных ручек управления через специфичные команды.
Для управления разделами накопителей есть fdisk, parted, gdisk, sfdisk, gparted. Думаете хотя бы одна из них может сразу же и работать с MBR/GPT дисками, давать возможность скриптования, иметь удобный интерфейс для пользователя чтобы указывать не конкретное количество блоков/байт для размера партиций, а просто сказать 100%/full? Ни одной. В FreeBSD полностью всему этому удовлетворяющая команда gpart есть, которая, к тому же, ещё и загрузчики умеет устанавливать, делать бэкапы/восстановление разделов.
Постоянная технологическая отсталость GNU/Linux
FreeBSD | GNU/Linux |
---|---|
Production-ready ZFS имеется уже 12+ лет. |
UFS2 ФС показывает отличную производительность и устойчивость к сбоям. Хотя я часто слышал что теряли данные на UFS2, но у меня за всю жизнь с FreeBSD ни разу не было, тогда как на ext3/ext4 неоднократно.
ext4 появился лет на 10 позже UFS2 и только с ним в Linux появилась штатная система в которой хотя бы динамически происходит inode allocation. Однако, в ext4 при этом может утекать место занимаемое под директории и его невозможно вернуть назад без пересоздания ФС. Опыт компании ivi.ru говорит что на очень нагруженной (постоянно создание, удаление, тасование файлов) ext4 через месяцы работы становится неработоспособной и нужно пересоздавать ФС с нуля.
Также ext4 имеет смехотворный максимальный размер файла в 16 TiB для 4K блоков.
Про ReiserFS ничего не могу сказать, так как я её даже не успел попробовать, Райзер уже сел.
Единственной хорошей работающей достойной ФС в GNU/Linux я видел только XFS, творение начала 90-х SGI IRIX.
Более того, Linux не может полноценно эмулировать блочные устройства и если вы сделаете losetup, то у нового появившегося блочного устройства таблица разделов всё равно автоматически не будет прочитана.
Для слежения за изменением файлов был dnotify, потом его сменил inotify — отдельная от epoll подсистема. Всё это всё равно не покрывает все возможности kqueue.
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 не может похвалиться — она плохо масштабируется на несколько процессоров.
Источник