Многообразие Linux-дистрибутивов. Часть 1.

Многообразие Linux-дистрибутивов. Часть 1.

Life-Hack [Жизнь-Взлом]/Хакинг

Цель этой статьи показать и объяснить многообразие дистрибутивов Linux. Перечислить основные сходства (они же все почему-то называются "Линуксы" или даже правильнее GNU/Linux) и основные различия (если бы не было различий, их бы столько не существовало).

Чем же они отличаются? И почему просто не выпускают всем миром один дистрибутив? Отличий много, поэтому разделю их на блоки, и каждый блок подробно разберем.

Дистрибутивы появляются и исчезают, разделяются и даже сливаются, … Уверен, что с момента написания этой статьи к моменту её прочтения могут произойти изменения в этой огромной экосистеме. Я старался многие утверждения подкреплять примерами и ссылками, но все же понимаю, что все не перечислить, да и примеры будут устаревать со временем.

В качестве примеров ко всем "различиям" постараюсь приводить очень разнообразные дистрибутивы, а не из одного семейства (хотя достаточно много примеров про дистрибутивы, с которыми мне чаще приходилось сталкиваться, но их я и знаю лучше). Если считаете, что какой-то заслуженный дистрибутив был не упомянут (или мало упомянут) в этой статье, пишите в комментариях, в каком пункте следует добавить пример с ним. Также интересно узнать в комментариях, какими дистрибутивами вы пользуетесь дома и/или на работе.

Вопрос: Зачем их так много?

Если вы новичок в мире Linux и больше пользовались MS Windows или Mac, то скорее всего у вас уже появился вопрос: "Зачем? Зачем так много дистрибутивов? Можно было б сделать ну один-два, ну три варианта… Почему их сотни?"...

Немного неожиданный ответ, но который раскрывает самую суть: "Абсолютное большинство дистрибутивов Linux НЕ делается на продажу, а создается как сопутствующий инструмент для решения собственных задач". Это же утверждение относится и к большей части программ в Linux. И часто получившееся решение разработчики выкладывают в общий доступ для ознакомления и использования всеми желающими. Делают так, потому что решение не сиюминутное и его нужно развивать/дополнять/тестировать/исправлять, и гораздо дешевле и продуктивнее, если в эту работу включатся добровольцы-специалисты (при этом не обязательно бесплатно) с новыми идеями и подходами.

Представьте, что вы не в магазин или бутик зашли, а на выставку-ярмарку, где цель показать своё мастерство и установить деловые контакты со специалистами в нужных сферах, а уж продажи - на втором месте. Отсюда и качество продукта, забота и уважение к клиенту (в первую очередь к себе, так как разработчик делает программу для себя) - открытые API, модульность, отсутствие телеметрии и рекламных баннеров, неиспользование закрытых форматов файлов и других НЕ привычных подходов для открытого ПО. А уж потом, если появляется спрос на подобное решение (люди или компании, готовые платить за работающую из коробки систему без необходимости разбираться в её создании, и которым нужна платная поддержка или дополнительные возможности), тогда из этих же добровольцев-специалистов собираются организации и выпускают коммерческие дистрибутивы.

Вопрос: Сколько их?

Теперь давайте разберемся, сколько дистрибутивов Linux существует на данный момент. Точное число никто не знает, и оно зависит от того, как считать. Поэтому далее несколько ответов.

1) Сотни тысяч, а то и миллионов! Просто собственный дистрибутив может создать любой желающий, особенно если делать на основе другого дистрибутива, не разрабатывая новых компонент, а используя уже существующие решения и подходы. Тут даже глубоких знаний не понадобится, только недельку-две свободного времени и, например, 400-страничная пошаговая инструкция дистрибутива ​⊚Linux_From_Scratch (дистрибутив, распространяемый в виде pdf-книги).

Большинство из этих дистрибутивов не заметны для it-сообщества - это "однодневки", созданные для личного использования или ради изучения/опыта.

2) Около 600 (точное число 554), если учитывать каждый "штрих" на картинке "Linux_Distribution_Timeline (за 2021 год)" (с wikipedia-страницы Список_дистрибутивов_Linux):

На этой картинке в хронологическом порядке (с 1992 до 2021 года) отображено, какие дистрибутивы существовали в разные годы, а параллельными разноцветными горизонтальными линиями - различные дистрибутивы:

- С даты начала проекта до даты окончания существования дистрибутива или текущего года, если разработка дистрибутива в текущий момент продолжается.

- Посредством соединения кривыми линиями показано, какие дистрибутивы являются производными от других дистрибутивов.

- Вертикальные пунктирные линии указывают на различные слияния проектов.

3) Около 300, если учитывать только те проекты, которые в текущий момент считаются актуальными (не объявлено о сворачивании разработок, и выходят новые релизы). Если быть точнее, их ровно 270 (согласно Linux_Distribution_Timeline (за 2021) и 254 (согласно DistroWatch).

4) Около 5, если учитывать только наиболее популярные в мире дистрибутивы: ⊚​RedHat⊚​Ubuntu⊚​SUSE⊚​Arch, ... (не обижайтесь если кого не назвал - просто навскидку пишу, что сразу вспомнилось). Кстати, таким же будет количество (около 5), если в организации требуется использовать "отечественную ОС". Только список в этом случае другой: ​⊚Alt​⊚AstraLinux​⊚ROSA, ... (но об этом подробнее будет далее).

5) Один, если учитывать мнение ярого фаната отдельного дистрибутива.

Вопрос: Что у них общего?

Рассмотрим основные сходства. Почему-то же они все называются "Линуксы". При этом еще есть "Юниксы (и они - не Линуксы)". Многим начинающим кажется неожиданным тот факт, что FreeBSD и MacOS - не Linux, хотя "там тоже есть вроде такая же командная строка с ls, cd, pwd, bash, vi и т.д." (на самом деле не такая же, а похожая!).

ОБЩЕЕ

  • Исходники программного обеспечения:
  • СПО. Большая часть используемого ПО является свободным программным обеспечением (как следствие имеет общедоступный исходный код, распространяемый по одной из свободных лицензий). Здесь требуется уточнение, так как пользователи Windows обычно ошибочно это трактуют как "Бесплатно доступен exe-шник". Однако не "exe-шник", а исходный код, на основе которого компилируется программа. И не бесплатно распространяется, а свободно (можно свободно изучать код, модифицировать его и распространять уже модифицированный - подробнее можно узнать, почитав про СПО). Повторюсь, в свободный доступ выложены исходники, но, чтобы пользоваться программой, исходники еще нужно проверить, скомпилировать и попутно разрешить зависимости (одна из основных задач создателей дистрибутивов).
  • Ядро_Linux - ядро ОС, собирается на основе исходников доступных на kernel.org.
  • GNU-утилиты. Отдельно стоит упомянуть множество утилит от проекта GNU (так что более корректное название для ОС - GNU/Linux):
  • базовый набор GNU_Coreutils (перечислю наиболее знакомые даже начинающему: ls, cp, mv, rm, mkdir, pwd, sort, touch, head, tail, id, whoami, chmod, chown, date, ...)
  • и другие не менее популярные GNU-утилиты: grep, bash, mc, tar/gzip, gtk+/gimp/gnome, grub, less, sed, wget, find, gawk, emacs, nano, screen, fdisk, gcc/libc, ...
  • Используемые стандарты (для совместимости различных дистрибутивов):
  • учитываются и используются различные UNIX-стандарты: POSIXSingle_UNIX_Specification;
  • собственные стандарты: Linux_Standard_Base (например, в абсолютном большинстве дистрибутивов используется стандарт размещения и назначения каталогов - FHS);
  • рекомендации-спецификации для графических сред от FreeDesktop.org;
  • использование открытых_стандартов, протоколов и форматов файлов.
  • Общепринятые решения.
  • Некоторые программы и решения хоть и не значатся стандартом, но используются в большинстве дистрибутивов и поэтому добавляют некое единообразие в те дистрибутивы, в которых используются: браузер Firefox, офисный пакет LibreOffice, система инициализации Systemd, загрузчик GRUB, командный интерпретатор BASH, файловая система Ext4, почтовый клиент Thunderbird, различные среды оформления рабочего стола (рекомендую посмотреть мою habr-статью на эту тему), настройка сети через NetworkManager, служба печати CUPS и т.д.
  • У некоторых из них просто нет альтернатив в текущий момент, а у некоторых есть. Однако так сложилось, что пока это решение популярнее во многих дистрибутивах. А завтра может появиться новое и занять место на "пьедестале общепринятых решений".

Так FreeBSD, MacOS, Solaris, QNX, AIX, HP-UX являются НЕ Linux-системами (в них другое ядро, другой набор ПО, другой набор стандартов, по другим лицензиям распространяется), а Unix или Unix-подобными системами. И базовые утилиты (например: ls, cp, tar, ps, grep, ...), которые в них имеют такое же название, как и аналогичные в Linux (так как это описано в общеиспользуемых стандартах POSIX) на самом деле имеют разный код внутри и разный набор поддерживаемых опций - сравните man ls (в FreeBSD) и man ls (в Linux).


http://ars.userfriendly.org/cartoons/?id=20150108

Вопрос: В чем они различаются?

ОТЛИЧИЯ

  1. Модификации ПО: патчи к ядру, патчи к программам, выбор ПО по умолчанию.
  2. Отличия в основе: производные дистрибутивы (клоны/деривативы), не стандартный подход, использование различных GUI, формат пакетов, свои дополнения.
  3. Вопрос: "Основанный на другом дистрибутиве" - как такое возможно? Не пиратство ли это?
  4. Форма организации: коммерческие дистрибутивы и разрабатываемые сообществами, прогнозируемость проекта, принадлежность к стране и понятие "отечественный дистрибутив".
  5. Вопрос: Как можно продавать то, что по определению распространяться бесплатно?
  6. Вопрос: Американский ли Linux или может финский?
  7. Вопрос: Какой он - "отечественный Linux"?
  8. Предназначение: Под определенные задачи, пользователей, оборудование.

Отличия: 1. Модификации ПО

Кстати в фильме 2009 года "Терминатор 4 (Да придёт спаситель)" на компьютерах в SKYNET используется версия ядра 4.1.15-1.1381_SKYN12nnmp, ванильную версия которого в реальности выпустили в декабре 2015 года.

1.1 Патчи к ядру

1.1a) Ванильное ядро с kernel.org и его модификации. Как уже сказано выше в "Общее": "Ядро ОС, собранное на одной основе (исходники доступны на kernel.org)". То есть всем дистрибутивам доступны одни и те же исходники (и это называется "Ванильное_ядро"), но с какими настройками (а их около 10000) его скомпилировать - выбор уже за разработчиками дистрибутива. А также выбор, какую использовать версию ядра (более новую со всеми новинками или более старую, но более проверенную/оттестированную) - тоже за разработчиками дистрибутива. Многие дистрибутивы включают свои патчи, добавляющие новый функционал в ядро и отключают те части кода ядра, которые не понадобятся (предположу, что в дистрибутиве для простейшего роутера убирают поддержку звука, bluetooth, полсотни различных файловых систем и пару сотен wifi-драйверов, кроме тех, что используются). Также часто дистрибутивы добавляют в свою версию ядра драйверы устройств или технологий, которые еще не включены в официальную версию ядра (из-за их экспериментального статуса).

​⊚OracleLinux, ⊚RHEL, ​⊚CentOS, ⊚AstraLinuxSE

1.1b) Есть дистрибутивы, которые используют "лицензионно чистое" ядро (например, ядро Linux-libre) - ядро без Блоб'ов (Binary Linked OBject). Обычно эти же дистрибутивы используют и "лицензионно чистое" ПО.

⊚Trisquel, ​⊚PureOS, ⊚​GuixSD, ​⊚Dragora, ​⊚Parabola, ...

1.1c) Есть различные патчи безопасности для ядра, например, патчи PaX.

​⊚AstraLinuxSE

1.1d) Модифицированная версия ядра с оптимизациями для мультимедиа и игр: Liquorix (или ZenKernel).

1.1e) Модифицированная версия ядра для систем реального времени: kernel-rt (или linux-rt, preempt-rt).

1.2 Свои патчи к ПО

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


⊚Debian, ​⊚Trisquel, ⊚TAILS, ⊚Whonix, ⊚Kodachi

1.2b) Использование дополнительных плагинов/библиотек, расширяющих возможности существующей утилиты.

⊚​AstraLinuxSE

1.3 Используемое по умолчанию ПО

Здесь надо понимать, что в любом дистрибутиве есть возможность использовать огромное количество ПО, написанного "под Linux". И только некоторая наиболее востребованная часть добавлена разработчиками дистрибутива в свой дистрибутив - это может быть и несколько десятков тысяч пакетов, а может только и несколько тысяч пакетов.

Также стоит понимать, что всё это (и программы, относящиеся непосредственно к базовой части системы, и программы дополнительные, типа офисного пакета, редактора картинок, pdf-просмотрщика и т.д.) являются частью дистрибутива и распространяются, и поддерживаются совместно в отличии от "некоторых других ОС".

1.3a) У каждого дистрибутива свой выбор ПО, доступного по умолчанию в дистрибутиве (на установочном диске).

1.3b) У каждого дистрибутива свой выбор ПО, доступного по умолчанию в репозиториях дистрибутива (по сети или на дополнительных носителях).

​⊚AstraLinuxSE(Смоленск 1.6), ⊚​AstraLinuxCE(Орел 1.6), ⊚​Debian (9 Stretch)

1.3c) Есть дистрибутивы, которые используют или делают сильный уклон только на "лицензионно чистое ПО".

Free-Дистрибутивы

Отличия: 2. Отличия в основе

Отличия в основах можно разделить на следующие категории:


2.1 "Основан на ..." или производные дистрибутивы

На картинке "Linux_Distribution_Timeline (за 2021 год)" заметно, что многие дистрибутивы начали своё развитие как "ответвление" от другого дистрибутива (даже можно выделить несколько крупных "семейств" производных дистрибутивов, основанных на: ⊚​Debian​⊚RedHat​⊚Arch⊚​Slackware⊚​SUSE​⊚Gentoo​⊚Android). То есть разработчики взяли другой дистрибутив (разрабатываемый другими людьми или другой организацией) и на его основе создали "свою" версию системы.

Вопрос: "Основанный на другом дистрибутиве" - как такое возможно? Не пиратство ли это?

На самом деле, это - не пиратство (хотя такое тоже может быть и изредка происходит в мире Linux при несоблюдении условий лицензии на отдельное ПО). Просто здесь большинство программ являются СПО (Свободным Программным Обеспечением), и как следствие (если простым языком) допускается их модификация, использование и распространение. Если создавать свой дистрибутив на основе дистрибутива, в котором есть несвободное ПО, то это ПО нужно или исключить из своего дистрибутива, или отдельно договариваться об условиях использования с авторами этого ПО. Также обычно есть ограничения на использование торговой марки и логотипов, то есть потребуется дополнительное соглашение, например, с Canonical на использование слова "Ubuntu" в названии своего дистрибутива.

Дистрибутивы по степени "производности на основе другого дистрибутива":

2.1a) Самостоятельные дистрибутивы. Собираются на основе собственных репозиториев, не используют пакеты от других дистрибутивов, развиваются полностью самостоятельно, хотя опять же собираются, как и все дистрибутивы Linux, на основе общедоступной базы исходников ПО.


⊚RHEL, ⊚Debian, ⊚​SUSE, ⊚Arch, ⊚Linux_From_Scratch, ⊚Alt, ...

2.1b) Клоны (различия с оригиналом сводятся к ребрендингу, замене названия и художественного оформления - просто понадобится нарисовать свои "нескучные обои" со своим логотипом). Стоит заметить, что клоны построены на тех же пакетах с исходниками, что и оригинал, а не на тех же бинарных пакетах. Подобные проекты пользуются спросом, так как коммерческие дистрибутивы проводят процедуру сертификации на совместимость с различными другими коммерческими решениями, а также под данный дистрибутив имеется официальный пакет от производителя данного решения. В итоге всё будет корректно работать и на бесплатном дистрибутиве-клоне.


​⊚CentOS - клон ⊚​RHEL (RedHat)

http://ars.userfriendly.org/cartoons/?id=20200405

2.1c) Деривативы (или ответвление) или различные ...-based дистрибутивы (например, RedHat-based или Debian-based). Дистрибутив, построенный и выпускающий релизы на основе другого дистрибутива и имеющий совместимые пакеты с оригинальным проектом. То есть большую часть пакетов повторили "один в один" из оригинального дистрибутива, какие-то пакеты были изменены и плюс добавили свои дополнительные пакеты. Такой подход удобен для разработчика дериватива тем, что уже имеется оттестированная стабильная "база", остается только её доработать своими правками и дополнениями. Но в тоже же время есть зависимость от решений, стандартных для базового дистрибутива. То есть, если там перешли на использование какой-нибудь новой технологии (например, systemd), то и дериватив, вероятнее всего, будет использовать эту технологию (ну или перейдет в другой тип производных дистрибутивов). Также график выхода релизов дериватива зависит от графика выхода релизов и обновлений базового дистрибутива. Пакеты, предназначенные для базового дистрибутива вероятнее всего без проблем установятся и в деривативе.

⊚Ubuntu, ⊚​OracleLinux, ⊚​AstraLinuxSE. НЕ деривативы: ⊚Alt, ⊚​SUSE

2.1d) "Дистрибутивы под покровительством". Они развиваются сообществом добровольцев при поддержке (в том числе и финансовой) коммерческого дистрибутива в качестве тестовых площадок для подготовки и тестирования новых решений к выходу коммерческого дистрибутива. Обычно у таких дистрибутивов хостинг самого проекта и сопутствующие расходы находятся на ресурсах коммерческого дистрибутива, и помимо добровольцев есть сотрудники на зарплате от коммерческого дистрибутива. При этом обычно они не управляются напрямую менеджерами коммерческого дистрибутива. У подобных проектов имеется свобода самостоятельного развития и принятия решений (иначе сообщество будет мало заинтересовано участвовать в таком проекте на бесплатной основе, и участники могут попросту разбежаться по другим более демократичным проектам).


⊚Fedora/RedHat, ⊚openSUSE/SUSE

Да Лебедь рвётся в облака (Cloud ныне модно),
Рак пятится назад,
А Щука тянет в воду.
А воз ... медленно, но верно
продвигается во всех направлениях.

2.2 Отличия от стандартов

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


⊚GoboLinux, ⊚Devuan, ⊚Alpine, ⊚Void

Разные среды оформления рабочего стола на одном и том же дистрибутиве (здесь OpenSUSE)

Источник

Report Page