Дисклеймер: этот цикл статей - очередная попытка расписать что такое Linux, с чем его едят, как его едят и чем потом восстанавливать повреждённый мозг для новичков. Для тех, кто ни разу не работал ни с чем, кроме Windows. Или OS X, мне пофиг. Зачем? Возникла необходимость за ближайшие месяца три обучить человека до уровня старшего помощника младшего сисадмина. Для “древних” тут нет ничего интересного, возвращайтесь за свежими статьями через недельку-две.

Запасайтесь чаем, успокоительным и терпением, это чтиво не подразумевает быстрого осознания того, что я попытаюсь объяснить. Возможно, на осмысление всего, что будет описано в этой заметке уйдёт неделя-две. Пишу я очень упорото, в конце каждой части буду приводить ссылки по теме, если не будет понятно моими словами - можете прочесть иные варианты изложения. Поехали.

Итак, у вас появился интерес, возникла необходимость или заставил начальник обучиться работе с системами Linux. Для начала - что такое Linux (если придираться - GNU/Linux, но об этом позже)? В буквальном смысле - это лишь ядро операционной системы, которое позволяет программам userspace’а (пользовательского окружения (то, с чем работает пользователь) общаться с железом, подключенными устройствами. Ядро в себе содержит комплект драйверов, которые позволяют выполнять правильную адресацию устройств и предоставляют интерфейс для работы с ними. То есть, драйверы позволяют понять, что подключенное устройство - например, USB флешка - это внешний носитель данных, и у него может быть файловая система и таблица разделов, и ядро предоставляет в userspace интерфейс для работы с носителем данных.

По умолчанию в ядро собирается огромный комплект универсальных драйверов, которые позволяют практически со всеми устройствами работать сразу по мере их подключения. Изредка возникает необходимость добавить поддержку крайне специфичного устройства (например, кард-ридера), и ядро требуется пересобрать, или написать подключаемый модуль с драйвером к ядру, чтобы оно правильно смогло сориентировать userspase, как работать с подключенным устройством.

GNU - аббревиатура, которая показывает, что программа имеет открытый исходный код и публикуется под лицензией GPL - то есть, каждый может посмотреть, что выполняет программа, за что она отвечает, какие данные использует и что программа не лезет куда не следует (например, вы можете удостовериться, что в программе не используются технологии слежения, и каждые полчаса ваши документы никуда не сгружаются без вашего ведома). Пример грубый и избитый, но понятный, вроде.

Под словами “поставить/установить Linux” подразумевается установить дистрибутив системы, работающей на ядре Linux. Дистрибутив Linux в общем случае - это:

  1. Ядро Linux
  2. Загрузчик ядра Linux
  3. Набор программ пользовательского окружения

Можно создать собственный дистрибутив Linux (Linux From Scratch), или использовать существующий. Создавать собственный мы, конечно же, не будем.

В данный момент существующие дистрибутивы Linux делятся на два типа:

  1. Source-based (а-ля скомпилируй себе все программы сам на своём железе, используя репозитории исходного текста и заранее описанные правила сборки)
  2. Binary-based (а-ля установи предварительно скомпилированные программы и сэкономь пару недель на установке системы)

Первые используются на устройствах, требующих максимальной оптимизации под конкретное железо, зачастую - на встраиваемых системах. Вторые предназначены для использования обычными пользователями. Но это не значит, что в source-based дистрибутиве нельзя использоваь предварительно скомпилированные библиотеки и программы, а в binary-based собирать всё из исходного кода - это влияет лишь на то, каким образом устанавливается и поддерживается дистрибутив его командой разработчиков.

На слуху у многих такие дистрибутивы как Ubuntu, Linux Mint, Gentoo etc., каждый линуксоид рекомендует, как правило, дистрибутив, которым пользуется сам, кто-то посылает на distrowatch.com выбирать самый популярный… Что первый подход херня, что второй: выбирать рекомендованный кем-либо дистрибутив чревато тем, что вы даёте решить за себя, какое базовое окружение вы получите без учёта потребностей, выбирать из ТОПа - тем, что он строится на основе данных о количестве установок за конкретный период, и резко возросшая популярность openSUSE вовсе не означает, что он воскрес из списка неподдерживаемых дистрибутивов :)

Ниже приведу основные дистрибутивы, их плюсы и минусы:

  1. Debian (binary-based, менеджер пакетов - dpkg, основной) - один из древнейших дистрибутивов Linux, поддерживает почти все распространённые платформы, имеет все модели версионирования приложений (стабильная ветка (пакеты сюда попадают после тщательной проверки и обкатки на широком круге пользователей), тестовая (предварительная версия, перед попаданием в стабильный репозиторий пакеты обкатываются на этом круге пользователей), rolling/нестабильная ветка (обновления по мере их появления, почти сразу)), имеет самую большую базу программ в репозитории разработчиков дистрибутива. Используется, по большому счёту, везде. Плюсы - ломается редко, выбор программ “из коробки” большой, поддержку на форумах получить довольно просто. Минусы - после установки многие программы придётся доустанавливать отдельно.
  2. Ubuntu (binary-based, менеджер пакетов - dpkg, основан на Debian) - самый разрекламированный дистрибутив Linux, в основном рекомендуемый для установки начинающим пользователям. Примечателен тем, что разрабатывает его команда разработчиков компании Cannonical, которая активно продвигает использование Linux на всех устройствах - на основе Ubuntu написан дистрибутив SteamOS, были попытки адаптации под мобильные устройства. Плюсы - после установки пользователь получает большинство программ, необходимых для работы на уровне “посидеть в интернете, посмотреть картинки, напечатать реферат, поработать с таблицами и презентациями”. Минусы - ломается довольно часто из-за сложной обвязки с системами Cannonicial (баг-трекер, центр приложений Ubuntu, поиск в Dash (в версии с окружением Unity), отсутствуют кодеки для некоторых закрытых форматов аудио и видео (mp3, к примеру). Основан на смешении тестовой и нестабильной веток Debian.
  3. Linux Mint (binary-based, менеджер пакетов - dpkg, основан на Ubuntu) - то же самое, что и Ubuntu, но с кодеками из коробки, с бОльшим набором программ (для редактирования изображений, например) и красивым окружением из коробки. Но не для маломощных устройств.
  4. Arch Linux (binary-based, менеджер пакетов - pacman, основной) - также один из древнейших дистрибутивов Linux, поддерживает только x86_64 платформу (неофициально поддерживаются i686, arm). Модели версионирования… Если сравнивать с Debian по версиям пакетов - нестабильная ветка (stable), относительно стабильная ветка (staging), крайне нестабильная ветка (testing). Стабильная, предварительная и тестовая в терминологии Debian сообтественно. Почему так? В отличии от Debian все пакеты в Arch Linux собираются без применения патчей адаптации под всю систему в целом, то есть как исходный код был написан разработчиком - так он и был собран, без исправлений. Из-за чего крайне редко могут выскакивать проблемы совместимости библиотек и приложений… Ну крайне редко. Плюсы - идеология Keep It Simple - пользователь получает именно ту систему, которую хотел, ничего лишнего, просто и шустро; пожалуй, лучшая вики, к которой можно обратиться используя любой иной дистрибутив - примеры настроек, основные пути решения проблем и прочее - скорее всего уже описаны на страницах ArchWiki. Минусы - идеология Keep It Simple (то же самое, да) - ВСЮ систему пользователь вынужден ставить вручную. На выходе в итоге только то, что нужно пользователю, ничего лишнего.
    Крайне спорный дистрибутив для новичков. С одной стороны - его установка даёт понять, как устанавливаются и обслуживаются абсолютно все бинарные дистрибутивы Linux, с другой - рядовым пользователям насиловать мозг работой с терминалом нахрен не сдалось, и чёрный экран с мигающим приветствием написать что-либо лишь отпугивает неподготовленных пользователей.
  5. Antergos (binary-based, менеджер пакетов - pacman, основан на Arch Linux) - тот же Arch Linux, но более дружелюбный к пользователю - графический установщик, возможность выбора устанавливаемого окружения по-умолчанию с конфигурациями, пригодными для использования.
    Плюсы - если хочется Arch Linux, но процесс установки пугает - можно установить этот дистрибутив.
    Минусы - порой установщик может сбоить. Возможно, уже исправили.
  6. Manjaro Linux (binary-based, менеджер пакетов - pacman, основан на Arch Linux) - да, Arch. Да, с установщиком. Крайне упоротым установщиком. Да, та же система версионирования пакетов. Да, попытка закосплеить Debian с патчами совместимости для всей системы… Версии пакетов отстают от Arch Linux примерно на месяц, стабильность при этом хромает сильно, и если ломается - без проблем починить систему не выйдет. Поддержка от сообщества околонулевая… Не то чтобы я был против использования этого дистрибутива, но особого смысла в этом нет.
  7. openSUSE (binary-based, менеджер пакетов - rpm, полигон для SUSE Enterprise) - tl;dw: умер как дистрибутив для домашнего использования. Но у той же компании есть дистрибутив SUSE Enterprise - примечателен он тем, что его любят в госучреждениях в качестве дистрибутива для использования на рабочих станциях.
  8. Fedora (binary-based, менеджер пакетов - rpm, полигон для RedHat Linux) - альфа-версия дистрибутива RedHat Enterprise Desktop, в целом - неплохой, имеет одну из самых больших пользовательских баз, курируется компанией, которая осуществляет поддержку бОльшей части проектов, на которых и держится сообщество разработчиков Linux.
  9. память захромала, ищет не совсем маргинальную экзотику на слуху Нет, серьёзно, бОльшая часть всех оставшихся дистрибутивов бинарных - переделки из описанного выше с разным базовым набором программ и нескучными обоями. Не Android-x86 же в список включать… А, вот:

Gentoo Linux (source-based, менеджер пакетов - portage, основной) - легендарно-красноглазый… Вру, не легендарный, но достаточно красноглазый дистрибутив, работающий по принципам Arch Linux с небольшой корректировкой - все программы собираются на устройстве, куда устанавливается система. Дзен-дистрибутив - установка в некоторых случаях может занять неделю (если совсем по-минимуму, чтобы можно было перезагрузиться в работающую систему и доустанавливать уже без LiveUSB/CD/DVD - около суток) на слабых устройствах. Не менее охеренная (по сравнению с Arch) вики сообщества.

  1. Slackware Linux (source-based, менеджер пакетов - portage, основной… или основан на Gentoo Linux… Впрочем, какая разница) - легендарный красноглазый дистрибутив. То же самое, что и Gentoo Linux. Ну, может ebuilds почаще/пореже выходят.

Остальное - не заслуживает отдельного описания. elementary, {X,K,L}ubuntu{,studio}, ZorinOS, BolgenOS, и прочее - просто разные оболочки, предварительно установленные поверх Ubuntu; Kali Linux - Debian с предустановленными пакетами для тестирования сетей; переделки Fedora, Arch Linux и openSUSE… Эти 10 (7, если убрать переделки основных дистрибутивов) дистрибутивов - основные, на основе них разработчики с синдромом фатального недостатка пилят остальные дистрибутивы с нескучными обоями и разными наборами предустановленных программ. Debian, Ubuntu, Arch Linux, Fedora, openSUSE, Gentoo, Slackware - “локомотив” мира Linux, каждый дистрибутив имеет свои специфические заморочки, например, все драйверы и бОльшая часть адаптированных для Linux программ от разработчиков всякой проприетарщины (не-GNU-программного-обеспечения) выпускаются с равнением на Ubuntu. Что не мешает Arch Linux, с его репозиторием AUR, все эти программы (почти всегда) без проблем поставить в собственно Arch Linux. На Red Hat (Fedora) равняются такие компании, как Oracle, Microsoft и прочие - программы, заточенные под Enterprise-применение, выпускаются в rpm-формате.

Небольшой подытог - по сути, различия бинарных дистрибутивов заключаются в пакетном менеджере, используемом по умолчанию, в сложности установки и в предустановленном окружении после базовой установки. Холивары на тему “твой дистрибутив - говно” имеют только религиозные обоснования :) Стоит поломаться чему-либо в каком-либо дистрибутиве - адепты иных дистрибутивов, руководствуясь парадигмой “у меня всё работает” начинают вопли “%дистрибутивнейм% - говно!11”. Де-факто выбор дистрибутива должен происходить с рассчётом на то, какие программы будут использоваться и какими ресурсами железа обладает пользователь. Source-based дистрибутивы используются в крайне нестандартных ситуациях, или же для понтов.