[Операционки] BSD vs Linux :)

Тема в разделе "Софт", создана пользователем imm, 17 май 2008.

Статус темы:
Закрыта.
  1. imm

    imm

    Регистр.:
    17 июл 2007
    Сообщения:
    195
    Симпатии:
    30
    О чём это я?

    Мои компьютеры работают под управлением FreeBSD. У многих моих друзей на компьютерах стоит Linux, хотя бы один из его дистрибутивов. Несмотря на то, что мы согласны с тем, что системы *nix — это правильный выбор, в выборе конкретных дистрибутивов наши мнения расходятся.

    У меня сложилось впечатление, что BSD-сообщество, в целом, понимает Linux лучше, чем Linux-сообщество понимает Linux. У меня есть несколько предположений, почему так происходит, но это не суть важно. Я полагаю, многие линуксоиды отказались от BSD, потому что они не совсем понимают, что там к чему. Таким образом, как пользователь BSD, я попытаюсь объяснить, как работает BSD, в доступной форме.

    Хотя системы очень похожи во многих аспектах, существует множество различий. Если вы копнёте глубже, то узнаете, что они возникают из-за укоренившихся разногласий. Одни из них касаются методологии разработки, другие — установки и использования, третьи — того, что важно и кто важен, а четвёртые — какое мороженое вкуснее. Сравнение поверхностных различий не скажет вам ни о чём — только сравнение более глубокое объяснит и расставит всё по полочкам.

    Чего здесь нет?

    Здесь нет:

    списка соответствия команд, вроде «netstat -rnfinet в BSD = netstat -rnAinet в Linux» и всё прочее.
    Как сделать те или иные вещи при администрировании и работе BSD.
    Почему следует использовать BSD вместо Linux.
    Почему следует использовать Linux вместо BSD.
    Почему следует использовать эту BSD, а не ту BSD.
    Почему следует использовать этот Linux, а не тот Linux.
    Почему BSD — это правильно, а Linux — неправильно.
    Почему Linux — это правильно, а BSD — неправильно.
    Лично я верю, что мой выбор ОС правильный. Но это я. Я не говорю вам, что вы должны верить в то же. Изучите факты, их предпосылки, и сделайте ваш выбор. Ведь именно для этого он вам и дан.

    Некоторые соображения.
    Есть много философских различий между миром Linux и миром BSD. И множество высказываний по этому поводу. Одно из моих любимых выглядит примерно так:

    Linux это что-то для Windows ненависников, BSD это что-то для Unix любителей.

    If you f*ck up BSD, it gets unsecure. Linux must be f*cked up to be secure.

    Мне нравится, как тонко замечено, не потому что это какая-то сакральная правда, а потому что это дает толчок к пониманию некоторых отличий. BSD-системы, в целом, более похожи на традиционный Unix, чем Linux. Во многом это связано с тем, что они являются прямыми потомками Berkeley Software Distibution, которая в свою очередь родилась из AT&T Unix. Торговая марка Unix принадлежит The Open Group, а код Unix является собственностью SCO, поэтому нельзя говорить, что BSD-системы — это Unix. Но, во многих отношениях, BSD-системы являются прямыми потомками традиционной Unix.

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

    BSD разрабатывают. Linux выращивают. Наверное, это единственное краткое описание, и возможно, наиболее корректное.

    Этим небольшим вступением я начинаю перевод серии статей Мэтта Фуллера, которые в свое время вдохновили меня перейти на FreeBSD.

    Что такое «Базовая Система»?

    Концепция «базовой системы» — это то, что создаёт большинство проблем для людей, привыкших к методологии Linux. Что вполне понятно, ведь в мире Linux такого понятия даже не существует.

    С самого начала Linux был просто ядром. И без вечных дискуссий по поводу того, что входит в понятие «операционная система», можно сказать, что ядро само по себе не очень полезно. Вам необходима вся пользовательская оболочка для того, чтобы заставить его работать. Linux — это конгломерат; здесь ядро, там ls, с другой стороны ps, vim, perl, gzip, tar и ещё куча всего.

    В Linux никогда не было какого-либо разделения на «базовую систему» и «дополнительные утилиты». Вся система — это «дополнительные утилиты». MySQL ничем не отличается от ls, от KDE, whois, dc, GnuCash… Каждый бит системы — это тот или иной пакет дополнений.

    Напротив, в BSD всегда была централизованная модель разработки. Всегда присутствовала общность, которая «отвечает» за систему. BSD не использует GNU ls или GNU libc, она использует BSD ls и BSD libc, являющиеся прямыми потомками тех ls и libc, которые распространялись вместе с BSD от CSRG. Они никогда не разрабатывались или собирались независимо. Вы не сможете «пойти скачать BSD libc» где-нибудь, потому как в мире BSD libc сама по себе бессмысленна. ls сама по себе бессмысленна. Ядро само по себе бессмысленно. Система — это единое целое, а не собранные в кучу маленькие кусочки.

    Далее, X не является частью базовой системы FreeBSD. Это пакет дополнений. Так как X — это не часть базовой системы, то приложения X, такие как xterm, KDE, Gnome, Mozilla, gaim, xmms и т.д. очевидно также не могут быть частью базовой системы. Это приложения, которые рассматриваются по-другому. Основное отличие в том, где они разработаны.

    NetBSD и OpenBSD имеют в своей базе X, из-за способа её интеграции с драйвером консоли. Обе они используют сильно модифицированные версии, поэтому хранить их в виде отдельных пакетов нецелесообразно.

    Вся базовая система разрабатывается совместно. Чтобы быть точным, есть части базовой системы, такие как sendmail, BIND, tcpdump, ssh и т.д., которые на самом деле являются самостоятельными пакетами и разрабатываются отдельно. Есть некоторые приложения GNU такие, как groff, gcc, gzip, которые знакомы всем пользователям Linux. Но к ним особое отношение, они импортируются в дерево, а затем формируются в соответствии с остальной частью системы. На самом деле, многие из них используются как BSD-only; BIND и sendmail изначально были разработаны в Беркли как часть BSD, и только позже стали доступны как отдельные приложения. Моя FreeBSD уверяет, что работает с gcc версии 3.2.2. Технически, это не совсем gcc 3.2.2; это компилятор FreeBSD, основанный на gcc 3.2.2. Версия tcpdump, которая стоит в системе, технически не является версией 3.7.2, это FreeBSD tcpdump, основанный на tcpdump 3.7.2.

    В большинстве случаев, конечно, версия пакета в FreeBSD практически неотличима от вендорной. Обычно вносятся несколько изменений, касающихся компиляции (Makefiles и прочее), для чистоты сборки в соответствии с остальной системой, и иной раз несколько важных патчей для правильной компиляции и выполнения. Некоторые изменения шире, некоторые — громоздки. Но их собирают вместе и заставляют работать вместе. Гарантируется, что все составляющие базовой системы BSD по дизайну соответствуют друг другу.

    Первопричина внедрения в базовую систему пакета, разрабатываемого третьей стороной, обычно состоит в том, что пакет удовлетворяет базовым требованиям и легче всего использовать его в ней по умолчанию. На сегодня FreeBSD использует ssh сервер и клиент OpenSSH, которые интегрированы в базовую систему, потому что на данный момент метод прямого защищённого доступа — базовый для любой системы, и его внедрение было практической необходимостью. gcc и binutils входят в базовую систему, потому что… ну, они необходимы для построения базовой системы. X, Gnome, PostgreSQL, Apache и прочее не входят в базовую систему и, наверное, никогда не войдут, потому что они не требуются для того, чтобы поднять и запустить систему, не будут использоваться на многих системах, не требуют такой тесной интеграции, … да еще много причин.

    Важно подчеркнуть эту сторону «базовой системы», потому как, я полагаю, в ней заключается самое заметное отличие методологий разработки BSD и Linux. Дистрибьютор Linux может сложить вместе все куски и протестировать их на взаимное соответствие до релиза. Некоторые пакеты могут быть модифицированы. Но это совершенно отличается от интенсивной интеграции в BSD. В частности, тем, что многие компоненты базовой системы берутся не «откуда-то оттуда», а уже прожили жизнь как часть системы.

    Некоторые дистрибутивы Linux (Debian и Gentoo, насколько я понимаю, наиболее заметные в этой группе) намного ближе к связке base/ports, чем остальные. У них есть некая черта между тем, что необходимо для запуска системы, и всеми остальными пакетами, которые вы бы могли захотеть установить в системе. Чем это отличается от базовой системы BSD? Тем, что большинство пакетов всё равно разрабатывается и поддерживается на стороне, и потом просто собирается в дистрибутив Linux. Нет, например, такой вещи, как «Gentoo tftp» — это сторонний пакет. Хотя многие пакеты в BSD сторонние, почти вся «базовая система» никогда не была «откуда-то оттуда» — она всегда была BSD.

    Базовую систему иногда клеймят «минималистской» или «скудной», имея в виду то, что она разрабатывается с единственным желанием сделать её настолько маленькой и сжатой, насколько это возможно. Но дело не совсем в этом. Конечно, мы хотим её видеть такой, но она разрабатывается таким образом, потому как предназначена быть именно тем, чем является по названию — базой системы. Никогда в моей жизни я не запускал BSD только с тем, что есть в базе, и наверное, никогда не запущу. Я не знаю никого, кто бы это делал. База нужна для того, чтобы предоставить необходимые для работы в системе инструменты и позволить вам обновляться и устанавливать приложения. Затем вы просто устанавливаете всё, что вам необходимо в соответствии с предназначением системы.

    Мне сказали, что всё вышесказанное более правдиво для FreeBSD, чем для NetBSD или OpenBSD, которые во многих отношениях имеют более широкие критерии для включения в базовую систему. Как всегда, вам следует обратиться к документации систем, чтобы точно знать, что куда включается.

    Действующие лица.

    Встречаем игроков
    Здесь я дам небольшой обзор систем, о которых пойдет речь.

    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, мигрирующих по Сети.

    BSD

    BSD означает «Berkeley Software Distribution». Изначально, это был набор патчей и утилит для официальной Bell Unix, которые разрабатывались группой CSRG в Калифорнийском Университете в Беркли. С течением времени он развивался, заменяя и/или меняя всё больше и больше частей системы до тех пор, пока на каком-то неопределенном этапе не превратился в свою собственную ОС, просто поделившись кусками кода с Bell Unix.

    Конечно, это всё равно требовало наличие лицензии Bell на использование системы, хотя бы потому, что большая часть кода была написана в Bell. Весь код, написанный в Беркли, тем не менее, был выпущен под лицензией, которая впоследствии стала известна как BSD-лицензия, вольный перевод которой звучит так: «Делай с кодом всё, что тебе взбредёт в голову, просто дай нам об этом знать». Итак, путь почти всего кода BSD в конечном итоге вёл обратно в «официальные» системы Unix: в System III и System V. А обе эти ветви прокладывали свой путь к различным коммерческим форкам Unix.

    После того, как CSRG (в большинстве своём) распалась и разработка BSD прекратилась, несколько групп подхватили знамя. Одной из них был проект 386BSD, портировавший код BSD на платформу Intel i386. Когда проект 386BSD сошёл на нет, образовались две другие группы, которые поддержали и развили код 386BSD; одной из них был проект FreeBSD, другой — NetBSD. С течением времени некоторые внутренние разногласия внутри проекта NetBSD привели к образованию проекта OpenBSD.

    Когда я говорю «BSD», я имею в виду несколько вещей. Я имею в виду общий дух BSD и подход к системам. В общем смысле, под вышесказанным понимается 3 находящихся на сегодня в свободном доступе BSD системы.

    FreeBSD изначально была нацелена на достижение наилучшей возможной производительности на 386-й платформе. Позже к i386 присоединился ряд других платформ, включая Alpha и SPARC, наряду с наследниками i386: Intel Itanium и AMD Opteron. Главная цель проекта — это максимальная надежность и эффективность работы на этих платформах, как в роли сервера, так и в роли десктопа.
    NetBSD нацелена на работу на максимально возможном числе платформ. Её цель — стать самой портируемой ОС на планете, и кажется, для этого честно стараются.
    OpenBSD направлена прежде всего (кто-то скажет «исключительно») на безопасность и тому подобное. Тесная интеграция безопасности, аудита, криптографии и связанные с этим вопросы являются первичными задачами.
    Все эти цели, конечно, взаимозаменяемы. Каждая BSD заботится о безопасности и работает над ней. Каждая BSD заботится о производительности и работает над ней. Каждая BSD заботится о портируемости и работает над ней. Внутри группы делятся большими кусками кода. Многие разработчики работают более чем над одной системой.

    Проницательный читатель заметит, что я не упомянул Mac OS X или лежащий в её основе Darwin. Хотя они и построены в большей степени на BSD, верхние слои OS X — это всё-таки чистый Apple. Работая в OS X, как пользователь, вы используете её как MacOS, а не как BSD. Поэтому, несмотря на то, что чисто академически некоторые вещи можно отнести к OS X, особой практической ценности в их понимании нет. Darwin ближе к стандартному понятию BSD, но так как большая часть его пользователей пришли из BSD, можно сказать, что это вне контекста моего эссе. Однако, большая часть общей информации, скорее всего, будет лёгкой для понимания.
     
  2. vlam

    vlam Создатель

    Регистр.:
    27 апр 2007
    Сообщения:
    46
    Симпатии:
    9
  3. Simpson

    Simpson

    Регистр.:
    22 июл 2007
    Сообщения:
    373
    Симпатии:
    36
    Лучше бы описали из списка "чего здесь нет", чем эта белитристика из истории *никс систем. :mad:
     
  4. imm

    imm

    Регистр.:
    17 июл 2007
    Сообщения:
    195
    Симпатии:
    30
    =)

    Незнал кто источник, взято с локального портала. :ah:
     
  5. EvLeS

    EvLeS Постоялец

    Регистр.:
    21 сен 2007
    Сообщения:
    64
    Симпатии:
    11
    Ну фряха как не крути всетаки серверная ось и как альтернатива линуху на десктоп пока что не катит.Хотябы изначалное отсутствие поддержки флаш в браузере и проблемами с поддержкой мультимедийного жнлнза начисто отбивает охоту ставить ее как десктоп
     
  6. wespire

    wespire Постоялец

    Регистр.:
    18 мар 2008
    Сообщения:
    55
    Симпатии:
    6
    серверная ось без саппорта
     
  7. rulezzzzz

    rulezzzzz Прохожие

    ты так часто пользуешься ОФФИЦИАЛЬНЫМ саппортом ?:)

    а мест в инете, где в случае чего можно задать вопрос, по моему хватает ....:D
     
  8. baddan

    baddan

    Регистр.:
    14 мар 2008
    Сообщения:
    355
    Симпатии:
    42
    linux уже по большей части тоже становится системой для домохозяек окошки изначально уже после установки консоль уже как такавая и забывается вот поэто БСД со своей консолькой по дефолту и получется серверной ситемой :) не силен в *иксах, но мой взгляд на это также как переход от DOS к виндус, стоолько тупых юзеров стало с другой стороны нам программерам проще жить и востребованость высокая в нас ;)
     
  9. swed

    swed

    Moderator
    Регистр.:
    17 апр 2008
    Сообщения:
    509
    Симпатии:
    494
    Ну не настолько уж эйпловское железо и дорого.
    Хотя рядовому юзеру винда привычней и в большинстве случаев удобней из за того, что почти любой софт под нее можно найти, макось хороша для выполнения мультимедийных задач, и если это нужно для работы - лучший выбор для десктопа имхо.
     
  10. shr540i

    shr540i Писатель

    Регистр.:
    25 фев 2009
    Сообщения:
    7
    Симпатии:
    1
    Прочитал, прослезился,
    сразу вспомнился анекдот про дружественность интерфейса:
    "кто сказал что у командной строки недружественный интерфейс? просто она хорошо выбираетсебе друзей!"
     
Статус темы:
Закрыта.