- Встречаем игроков
- Unix
- Linux
- О чём это я?
- Чего здесь нет?
- Некоторые соображения.
- «BSD — это то, что получается, когда кучка Unix-хакеров пытается портировать Unix на PC. Linux — это то, что получается, когда кучка PC-хакеров пытается написать Unix-систему для PC.»
- FreeBSD: гораздо лучше GNU/Linux
- Главные отличия
- Постоянная технологическая отсталость GNU/Linux
Встречаем игроков
Здесь я дам небольшой обзор систем, о которых пойдет речь. Заметьте, что представленные истории не претендуют на всестороннее и авторитетное мнение, и не было предпринято ни одной попытки сделать их таковыми.
Прошу!
Unix
Unix — на самом деле, не операционная система.Ну, и да, и нет.В конкретном применении, Unix — это операционная система, разработанная в конце шестидесятых в Bell Labs Кеном Томпсоном (Ken Thompson) и Деннисом Ричи (Dennis Ritchie). Всё последующее время она разрабатывалась и распространялась как коммерческая ОС и исследовательская ОС такими компаниями, как Bell Labs, USG, USDL, ATTIS, USL, Novell, SCO и всеми, кто мог бы выступить с акронимом.Наверное, не будет большим преувеличением сказать, что Unix оказала наибольшее влияние на современную компьютерную индустрию. Любое устройство общего применения и многие специфические устройства использует идеи и концепции и зачастую код систем из родословной Unix.Когда мы произносим слово «Unix», мы чаще всего имеем в виду «общую форму», а не конкретную ОС под названием Unix. Общая форма означает «любую операционную систему, которая дизайном, исполнением и вкусом значительно похожа на систему Unix». То есть все BSD, Linux, SunOS, Tru64, SCO, Irix, AIX, HP/UX и еще сотни и тысячи других.Мне неинтересно вступать в философские дискуссии на тему «сколько ангелов могут танцевать на секущихся концах волос». Пусть этого будет достаточно для понимания того, что когда я говорю «Unix-системы», я имею в виду именно то, о чем вы думаете, когда я произношу эту фразу.
Город Педантов → в той стороне.
Linux
Под словом Linux также кроется несколько вещей. Это ядро, изначально написанное Линусом Торвальдсом (Linus Torvalds) в студенческие годы в Финляндии. С тех пор его перетрясли, выбили, взломали, перекрутили, разогнали, разрубили, причесали, вытоптали и совершали другие манипуляции (порядок неважен, конечно) столько людей, сколько сложно себе представить.Linux — это также семейство операционных систем. В то время как в эту секунду по всему миру ведутся блестящие метафизические дискуссии (я гарантирую это) относительно того, что «Linux — это не операционная система, а просто ядро», или «Правильно говорить GNU/Linux» и так далее, я хочу отмежеваться от этой семантической помойки. Когда я говорю «Linux», я имею в виду Red Hat. Я имею в виду Slackware. Я имею в виду Mandrake. Я имею в виду Debian. Я имею в виду SuSe. Я имею в виду Gentoo. Я имею в виду каждый из 2 кадзиллионов дистрибутивов, в основе которых лежит ядро Linux c аналогичным пользовательским окружением, в большинстве своём построенном на инструментах GNU, мигрирующих по Сети.
- FreeBSD изначально была нацелена на достижение наилучшей возможной производительности на 386-й платформе. Позже к i386 присоединился ряд других платформ, включая Alpha и SPARC, наряду с наследниками i386: Intel Itanium и AMD Opteron. Главная цель проекта — это максимальная надежность и эффективность работы на этих платформах, как в роли сервера, так и в роли десктопа.
- NetBSD нацелена на работу на максимально возможном числе платформ. Её цель — стать самой портируемой ОС на планете, и кажется, для этого честно стараются.
- OpenBSD направлена прежде всего (кто-то скажет «исключительно») на безопасность и тому подобное. Тесная интеграция безопасности, аудита, криптографии и связанные с этим вопросы являются первичными задачами.
О чём это я?
Мои компьютеры работают под управлением FreeBSD. У многих моих друзей на компьютерах стоит Linux, хотя бы один из его дистрибутивов. Несмотря на то, что мы согласны с тем, что системы *nix — это правильный выбор, в выборе конкретных дистрибутивов наши мнения расходятся.У меня сложилось впечатление, что BSD-сообщество, в целом, понимает Linux лучше, чем Linux-сообщество понимает BSD. У меня есть несколько предположений, почему так происходит, но это не суть важно. Я полагаю, многие линуксоиды отказались от BSD, потому что они не совсем понимают, что там к чему. Таким образом, как пользователь BSD, я попытаюсь объяснить, как работает BSD, в доступной форме.Хотя системы очень похожи во многих аспектах, существует множество различий. Если вы копнёте глубже, то узнаете, что они возникают из-за укоренившихся разногласий. Одни из них касаются методологии разработки, другие — установки и использования, третьи — того, что важно и кто важен, а четвёртые — какое мороженое вкуснее. Сравнение поверхностных различий не скажет вам ни о чём — только сравнение более глубокое объяснит и расставит всё по полочкам.
Чего здесь нет?
- списка соответствия команд, вроде « netstat -rnfinet в BSD = netstat -rnAinet в Linux» и всё прочее.
- Как сделать те или иные вещи при администрировании и работе BSD.
- Почему следует использовать BSD вместо Linux.
- Почему следует использовать Linux вместо BSD.
- Почему следует использовать эту BSD, а не ту BSD.
- Почему следует использовать этот Linux, а не тот Linux.
- Почему BSD — это правильно, а Linux — неправильно.
- Почему Linux — это правильно, а BSD — неправильно.
Некоторые соображения.
Есть много философских различий между миром Linux и миром BSD. И множество высказываний по этому поводу. Одно из моих любимых выглядит примерно так:
«BSD — это то, что получается, когда кучка Unix-хакеров пытается портировать Unix на PC. Linux — это то, что получается, когда кучка PC-хакеров пытается написать Unix-систему для PC.»
Мне нравится, как тонко замечено, не потому что это какая-то сакральная правда, а потому что это дает толчок к пониманию некоторых отличий. BSD-системы, в целом, более похожи на традиционный Unix, чем Linux. Во многом это связано с тем, что они являются прямыми потомками Berkeley Software Distibution, которая в свою очередь родилась из AT&T Unix. Торговая марка Unix принадлежит The Open Group, а код Unix является собственностью SCO, поэтому нельзя говорить, что BSD-системы — это Unix. Но, во многих отношениях, BSD-системы являются прямыми потомками традиционной Unix.Это прослеживается во многом: в дизайне системы, в дополнениях, в разбиении жесткого диска, в деталях команд, в отношении, предрассудках и реакциях разработчиков и в пользователях.BSD разрабатывают. Linux выращивают. Наверное, это единственное краткое описание, и возможно, наиболее корректное.
Этим небольшим вступением я начинаю перевод серии статей Мэтта Фуллера, которые в свое время вдохновили меня перейти на FreeBSD.
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 не может похвалиться — она плохо масштабируется на несколько процессоров.