Насколько современные Линуксы отличаются друг от друга
Более 15 лет я работаю в компании Fast Reports и по роду своей деятельности мне часто приходится иметь дело с Linux, ведя поддержку одного из продуктов. С Linux я знаком несколько дольше — впервые установил Slackware в 1997 году. Соответственно, обладая некоторым опытом, хочу поделиться с вами мнением, чем, на мой взгляд, современные дистрибутивы Linux отличаются друг от друга. Всё описанное в статье является субъективным мнением и не претендует на абсолютную истину.
Операционная система Линукс ведёт свою историю с 1991 года, когда финский студент Линус Торвальдс, начал разработку новой операционной системы, вдохновлённый идеями Unix и Minix. Удачный выбор свободной лицензии предопределил успех его начинания — к разработке подключились десятки и сотни энтузиастов, каждый из которых привнёс что-то новое. Впоследствии к разработке подключились крупные компании — Intel, IBM и другие. Точные причины, побудившие лидеров отрасли к поддержке свободной ОС мне не известны, но «злые языки» поговаривают что многие компании решили подвинуть Microsoft, занимающую в то время абсолютную монополию в операционных системах для настольных компьютеров.
Эволюция ядра Линукс, выраженная в количестве строк
Смог бы Линукс без поддержки мэтров индустрии стать тем, чем он есть сейчас? Далеко не факт – старожилы помнят патентые войны между Santa Cruz Operation и компаниями, поддерживающими Linux. Компания SCO проиграла эту войну и больше её не существует.
Количество коммитов в ядро в разрезе компаний
Таким образом за время своей жизни операционная система Линукс прошла длинный путь эволюции и в настоящее время стала популярной операционной системой, способной заменить Windows для решения многих насущных задач пользователей.
Прежде чем приступить к сравнению современных дистрибутивов Linux, мы должны определить два важных аспекта — первый аспект это из чего состоит операционная система, второй — с какой точки зрения будем сравнивать. Под дистрибутивом мы понимаем законченное решение, состоящее из ядра ОС, графического сервера (Икс-сервер), окружения (набора поставляемых программ), утилиты установки и начальной конфигурации. Сравнивать дистрибутивы можно с точки зрения конечного пользователя, системного администратора и прикладного программиста.
Линуксы с точки зрения системного администратора
На заре своего развития Линукс был уделом техногиков и техножрецов, обладающих специфическими знаниями программирования и администрирования. Предтечей Линукса была операционная система Unix и специалист, имевший опыт администрирования Unix, мог без труда установить и сконфигировать систему. Обычному среднестатистическому пользователю это было недоступно и процесс администрирования для него был чем-то сродни магии. Современные Линуксы стали дружественны пользователю — процесс установки сводится к ответу на несколько вопросов, а зачастую достаточно просто согласиться с предлагаемым установщиком вариантом конфигурации, просто положительно ответив на все вопросы — установщик сам проанализирует конфигурацию оборудования и подберёт необходимые драйвера и параметры конфигурации. Обычно дистрибутив содержит готовые к работе пакеты программ, поставляемые в виде DEB или RPM архивов, содержащих помимо самих программ скрипты конфигурации и информацию о зависимостях от сторонних библиотек. Однако, бывают и исключения, например, дистрибутив Gentoo поставляется в виде исходного когда всех программ и правил сборки, а сама операционная система буквально собирается на компьютере пользователя под его конфигурацию процессора. Вопрос эффективности такого метода спорный, мы не будем углубляться в него, замечу лишь что это лишь одна из степеней декларируемой сообществом свободы — пользователь волен сам выбирать «стоит ли овчинка выделки». В целом же форматы пакетов RPM и DEB похожи и при выборе дистрибутива можно не рассматривать этот момент. За редким исключением — иногда бывает так, что автор программы по какой-то причине не предусмотрел второй вариант инсталлятора и она существует только в RPM (RedHat Linux и производные от него дистрибутивы) или DEB (Debian Linux и его производные) формате. В этом случае вам могут потребоваться усилия по установке такой программы — даже вручную распаковав установочный пакет, можно наткнуться на неудовлетворённые зависимости. Установка такой программы потребует больших усилий, а в случае ошибки, пытаясь подменить требуемые библиотеки, можно привести к краху системы. К счастью, такая ситуация исключительно редка и 99,9% пользователей Линукс никогда не столкнуться с этой проблемой. Более того — все известные производители дистрибутивов держат свои репозитории с богатым набором программ, где каждая программа собрана и протестирована под конкретную версию дистрибутива.
Итак, мы знаем что одно из отличий Линуксов это формат пакетов. Однако, с точки зрения администратора системы существует ещё одно различие — формат стартовых скриптов. Из семейства операционных систем Unix в Linux пришли два конкурирующих формата — System V style и BSD style. Чтобы понять о чём речь, посмотрим как это работает. Стартовый загрузчик загружает ядро ОС и передаёт ему управление, ядро стартует и запускает первый процесс — init. Строго говоря, вместо init можно подсунуть любой процесс, например, bash. В этом случае мы получим нечто вроде однопользовательской однозадачной консольной системы без сети и графического интерфейса и с корневой файловой системой, доступной только для чтения. Более того, часть оборудования в этом случае может не работать, если драйвера для него не присутствуют в ядре, а загружаются в виде модулей. В классическом же режиме работы процесс init читает файл /etc/inittab и в соответствии с ним начинает процесс старта системы — монтирует разделы, подгружает драйвера, инициализирует сетевые интерфейсы, стартует сервисные программы (которые ранее называли демонами), загружает графическую подсистему. Делает это init не напрямую, а используя понятие runlevel и специальные скрипты. Обычно существует до шести runlevel — режимов исполнения, которые описывают режимы работы системы — стартовый, однопользовательский, многопользовательский с сетевой подсистемой, многопользовательский с графическим интерфейсом. В зависимости от условий применения администратор может задать стандартный runlevel, в который перейдёт система после загрузки, обычно это многопользовательский режим с сетью и графическим интерфейсом для десктопа и многопользовательский режим с сетью для серверов. Именно в этих скриптах и заключено отличие между SystemV и BSD стилями. Однако, обладая знаниями о формате inittab, можно посмотреть содержимое скриптов и понять как работают процедуры старта, останова и перехода между runlevels системы.
В 2010 году инженеры из RedHat разработали замену init — сервис systemd. Этот сервис привнёс новые возможности в систему:
Таким образом переход на systemd как бы стирает одно из различий Линукс — систему стартовых скриптов и приводит к унификации. При этом сохраняется поддержка классических стартовых скриптов — например, часть томов для монтирования может быть указана классически через /etc/fstab, а другие тома могут быть монтированы средствами systemd.
В прошлом системные администраторы любили спорить какая же система лучше SystemV или BSD, однако сейчас споры поутихли. Опытный сисадмин сможет сконфигурировать любую систему, для новичков же в Сети достаточно информации, раскрывающей любой аспект конфигурации Linux.
Линуксы c точки зрения пользователя
С точки зрения конечного пользователя линуксы различаются несколько сильнее. Заглянем вглубь вопроса. Изначально графическая подсистема в Unix была необязательна. Зачастую Unix работал на мощных компьютерах, а пользователи подключались к нему посредством Икс-терминалов. Взаимодействие происходило по сети – программа выполнялась на хост-компьютере, принимала информацию о нажатии на клавиатуру и событиях мыши, а в ответ посылал терминалу команды для отрисовки графических примитивов и текста. Графические терминалы были дорогими и редкими устройствами, поэтому в качестве терминалов стали популярны персональные компьютеры. Здесь, кстати, интересный момент, который зачастую вызывает недопонимание — Икс-сервер выполняется на терминале, а не на хосте. На хосте выполняется сама программа, которая использует библиотеку xlib, предоставляющую базовый низкоуровневый интерфейс для работы с графическим сервером. Этот интерфейс достаточно низкоуровневый, он вводит понятие окна, т.е. прямоугольной области экрана, умеет выводить векторный текст различными шрифтами, а так же обеспечивает отрисовку различных графических примитивов – точки, линии, прямоугольники, окружности и картинки.
Поскольку базовые графические примитивы довольно просты, это привело к появлению библиотек виджетов – эти библиотеки предоставляют более высокий уровень абстракции и значительно упрощают написание программ с графическим интерфейсом. Например, библиотека X Athena Widgets стала частью графической системы X Window System. Эта библиотека вводит понятие кнопок, радиокнопок, меню, полей ввода и подобных примитивов. Однако по современным меркам выглядит это довольно «вырвиглазно».
И вот собственно тут начинаются отличия для пользователей. Внешний вид того, что пользователь видит на экране, зависит от нескольких подсистем – это среда рабочего стола (Desktop Environment) обеспечивающая пространство, называемое рабочим столом, это оконный менеджер, определяющий внешний вид окон программы (декорации окна) и зачастую, но не обязательно, интегрированный в среду рабочего стола, и наконец, это библиотека элементов интерфейса. Что и как видит пользователь на экране определяется сочетаниями вышеназванных компонентов.
На практике это приводит к тому, что одна и та же программа запущенная в различных оконных менеджерах может иметь разные декорации окон – разные заголовки, размеры границ окон, разные кнопки сворачивания, раскрытия в полный экран и закрытия. Всё это определяет оконный менеджер. Вместе тем, в пределах одного оконного менеджера, различные программы могут иметь различный вид элементов интерфейса, в зависимости от используемой библиотеки. Справедливости ради нужно заметить, что подобное разнообразие вы могли наблюдать и в Windows, но значительно значительно реже, поскольку подавляющее большинство Windows программ используют стандартный GDI+ или обвзяку вокруг него.
С чем же столкнётся пользователь Linux на рабочем столе? Прежде всего это GNOME или KDE, большая часть дистрибутивов основана именно на этих средах рабочего стола. Однако ими не ограничиваются и различные вендоры Linux предлагают около десятка различных сред. Что касается библиотек элементов интерфейса, то здесь лидируют две библиотеки – GTK и Qt. Обе библиотеки кроссплатформенные и если какая-либо программа существует и под Linux, и под Windows, то с большой вероятностью она написана с использование GTK или Qt. Однако есть и исключения, например, компания Xamarin создала версию библиотеки Windows Forms для Linux и macOS. Так же иногда разработчики оконных менеджеров распространяют свои библиотеки виджетов. Таким образом становится понятно откуда такое разнообразие графических пользовательских интерфейсов под Linux.
Линуксы с точки зрения прикладных программистов
Всё вышесказанное относится так же и к программированию. Если вы пишете сервер или консольную утилиту, то в подавляющем большинстве случаев вам не придётся использовать директивы условной компиляции – современный Линукс достаточно хорошо стандартизирован и полностью совместим со стандартом POSIX. Более того, использование autoconf позволяет писать программы не только для Linux, но и для любой POSIX совместимой системы, начиная от BSD и заканчивая всяческой экзотикой.
Вам, скорее всего, не придётся выбирать формат пакетов – используйте оба DEB и RPM, и вы покроете практически все случаи использования. Для сервисных программ наверняка придётся обратить внимание на формат стартовых скриптов, чтобы инсталлятор правильно прописал автозапуск вашего сервиса. В моём случае пришлось обратить внимание на расположение шрифтов, поскольку различные вендоры используют различные пути для хранения шрифтов, однако, тут вам поможет рекурсивный поиск начиная с /usr/share/fonts – все шрифты, за исключением пользовательских, будут находиться по этому пути. Что касается пользовательских шрифтов, которые устанавливаются в /home/user, то здесь замечен некоторый «разброд и шатание» и разные вендоры предлагают как минимум две иерархии —
Для графических программ сложностей несколько больше. В виду зоопарка различных сред рабочего стола, необходимо учитывать их особенности. Например, так называемые desktop notifications будут поддерживаться большинством сред рабочего стола, но могут не работать с какими-то экзотическими оконными менеджерами.
Наконец, ещё несколько важных моментов, которые вносят существенные различия между дистрибутивами. Несмотря на похожесть всех современных линуксов вы можете столкнуться с проблемами на дистрибутивах с повышенной защитой, т.е. теми, где используется мандатная система доступа. Например, какой-либо ресурс по умолчанию доступен во всех классических дистрибутивах, но вызовет ошибку доступа в защищённой версии Линукс. Заранее предугадать, где и как откажет программа в данном случае невозможно, поэтому единственным решением является тестирование на защищённых дистрибутивах. Или оперативное исправление проблемы после обращения пользователя в техподдержку.
Второй момент — это популярность дистрибутива. Если в составе продукта вы используете какую-то не очень распространённую библиотеку или фреймворк, то возможна ситуация что в таком дистрибутиве будет старая или неполная версия этой библиотеки. В моей практике такая ситуация случалась в одном из дистрибутивов с поддержкой кодовой страницы 1251 в библиотеке System.Text.Encoding для C#. Бороться с такими проблемами можно только одним способом — поскольку проблема в других дистрибутивах Linux не наблюдается, то следует написать в техподдержку разработчику этого дистрибутива, подробно описав проблему и сказать что в других дистрибутивах проблемы нет.
Вывод. Если не рассматривать защищённые версии Linux, то с точки зрения системных администраторов и программистов современные дистрибутивы очень похожи. Зачастую различия между различными поколениями дистрибутива у одного вендора более весомые, чем различия между современными дистрибутивами. С точки зрения пользователей основное различие в выборе и настройке среды рабочего стола и поставляемого в дистрибутиве программного обеспечения.
Сравнение дистрибутивов Linux
Существует огромное количество дистрибутивов Linux. Все они чем-то похожи, но в то же время каждый из них имеет свои отличия. Все дистрибутивы используют одно и то же ядро Linux и по сути их программное обеспечение собирается из одних и тех же исходных кодов. Но всё же они довольно сильно отличаются между собой.
Что будем сравнивать?
Давайте сначала выясним какие дистрибутивы будем сравнивать:
Я не включал в этот обзор Linux Mint, Manjaro, MX и другие популярные системы потому что я очень мало их использовал и мне нечего о них сказать.
Простота установки
Простота установки играет очень важное значение, не только для новичков, но и для опытных пользователей. Если вы ставите перед собой целью не обучение, а работу, то не хочется затрачивать лишнее время на установку.
1. Ubuntu
Установить Ubuntu очень просто. У вас есть графический установщик где надо только нажимать кнопку Далее. Тем не менее с помощью её установщика можно настроить достаточно нужных вещей, например, разметить диск, задать пароль пользователя, выбрать раскладку клавиатуры и часовой пояс, а также многое другое.
2. Debian
Установщик Debian не сильно отличается от установщика Ubuntu. Здесь тоже всё разбито на удобные шаги и настроек даже больше. Кроме всего того, что можно настроить в Ubuntu, тут можно подключить DVD диски для установки без интернета, а также можно выбрать графическое окружение, поддерживается LVM и шифрование диска.
3. Fedora
Установщик Fedora уже не пошаговый, но тоже не сильно сложнее. Здесь есть главное меню, в котором вам надо выбрать различные пункты настроек. По подробности настройки он похож на Debian.
4. OpenSUSE
У OpenSUSE установщик такой же пошаговый и простой, как и у Ubuntu. Есть там всё, что необходимо. Из особенностей установщика можно отметить возможность выбора окружения, расширенная поддержка Btrfs, а также довольно красивый интерфейс.
5. ArchLinux
Несмотря на то, что существует несколько дистрибутивов, основанных на ArchLinux в которых есть графическая установка, в самом ArchLinux такой возможности нет. Это добавляет гибкости системе и помогает лучше разобраться как всё работает, но в то же время очень сложно для новичков, а для опытных пользователей если не сложно то просто занимает больше времени чем должна занимать установка системы, что тоже не есть хорошо.
6. Gentoo
У Gentoo тоже нет графического установщика, поэтому установка дистрибутива очень сложная для начинающих. Зато вы можете собрать все нужные вам программы из исходников и получить в теории более высокую производительность.
Готовность к использованию
Важно также насколько система будет готова к использованию после установки и сколько вам придется потратить времени на её дополнительную настройку.
1. Ubuntu
Операционная система Ubuntu использует по умолчанию окружение Gnome и сразу же после установки полностью готова к использованию. У вас будут все необходимые приложения, а рабочий стол будет выглядеть вполне красиво.
2. Debian
Debian тоже использует окружение рабочего стола Gnome и, в принципе, тоже готов к использованию после установки. Но есть несколько нюансов. Если вы захотите установить программное обеспечение, то у вас ничего не выйдет, потому что в список репозиториев добавлены только репозитории с диска, сетевые репозитории надо добавить вручную. Кроме того, команда sudo не всегда настроена и Debian не любит несвободное программное обеспечение, поэтому некоторые кодеки тоже придется устанавливать самому.
3. Fedora
Fedora вполне готова к использованию после установки. Здесь тоже надо будет установить несколько мультимедиа кодеков, по крайней мере так было, когда я её в последний раз серьезно использовал. Но в целом она готова и использует окружение Gnome.
4. OpenSUSE
В OpenSUSE по умолчанию используется окружение рабочего стола KDE. Оно более настраиваемое по сравнению с Gnome, но по моему мнению после установки его надо немного настроить для более комфортной работы. Ну и кодеки вам надо будет поискать. В остальном же система вполне готова.
5 и 6. Arch Linux и Gentoo
Ни о какой готовности здесь речь идти не может. Там и там вы получаете голую систему, в которую надо устанавливать драйвера, X сервер и графическое окружение. Всё вручную. Это занимает время, но помогает научится и разобраться в Linux.
Программное обеспечение
Когда мы работаем за компьютером, мы взаимодействуем не столько с операционной системой, сколько с программным обеспечением, которое в ней выполняется. Без программного обеспечения, помогающего нам делать свою работу из операционной системы будет мало смысла.
1 и 2. Ubuntu и Debian
3. Fedora
У Fedora с пакетами не так всё хорошо. Конечно, здесь есть официальные репозитории, в которых много чего есть. Ещё есть несколько сторонних репозиториев, в которых программ ещё больше. Но если бы не flatpak некоторые программы было бы сложно получить.
4. OpenSUSE
Здесь с программным обеспечением тоже всё хорошо. Как и в Fedora тут используется пакетный менеджер с форматом пакетов RPM, но в отличии от того дистрибутива здесь есть система сборки пакетов откуда можно установить программное обеспечение, которого нет в официальных репозиториях. Эта система доступна с помощью браузера и установка происходит буквально в пару кликов.
5. Arch Linux
В ArchLinux ситуация с пакетами программного обеспечения тоже не очень плохая. Тут используется собственный менеджер пакетов pacman и свой формат пакетов. Но зато есть пользовательский репозиторий AUR, в котором вы найдёте практически все пакеты, которые вам нужны.
6. Gentoo
Здесь с программным обеспечением всё плохо. Есть официальные репозитории, есть несколько сторонних репозиториев, так называемых оверлеев. Там есть большинство нужных программ. Но если нет, будет сложно. Правда уже можно установить snap и flatpak, которые частично решают проблему.
Настраиваемость
Настраиваемость дистрибутива имеет не очень большое значение для удобства работы в нём, но зато интересует многих. Фактически любой дистрибутив Linux будет более настраиваемым чем Windows, но между собой они тоже отличаются.
1. Ubuntu
Дистрибутив Ubuntu рассчитан на новичков, поэтому многие настройки спрятаны чуть глубже в системе. Во время установки вы не можете выбрать окружение рабочего стола, зато можете выбрать редакцию ещё до установки. В самой системе в качестве окружения рабочего стола используется Gnome, а это окружение рассчитано на минимализм и настроек там не так уж много. Для более тонкой настройки вам даже придется устанавливать дополнительные утилиты.
2. Debian
Операционная система Debian получилась более настраиваемая по сравнению с Ubuntu. Тут вы уже можете выбрать графическое окружение во время установки дистрибутива, по умолчанию учётная запись root будет включена. Но в качестве рабочего окружения используется тот же Gnome.
3. Fedora
Не сказал бы, что Fedora более настраиваемая чем Debian. Здесь используется всё тот же Gnome, да и установщик примерно с теми же возможностями. Для настройки системы используется стандартная утилита настроек Gnome, как и в предыдущих дистрибутивах.
4. OpenSUSE
А вот в OpenSUSE с настраиваемостью намного интереснее. В качестве окружения рабочего стола по умолчанию используется KDE. Оно очень настраиваемое. Вы можете добавлять различные виджеты, панели, эффекты для рабочего стола. Утилита настройки KDE может делать многое из того, что Gnome даже не снилось. Кроме того, у OpenSUSE есть своя утилита настроек под названием YaST она помогает администрировать систему, и если что-то нельзя сделать в KDE, то это можно сделать там.
5. Arch Linux
Дистрибутив Arch Linux ещё более настраиваемый. Благодаря тому, что всю установку вы выполняете вручную, то вы можете полностью определить какие программы будут использоваться, какое окружение рабочего стола установить и как всё это соединить вместе.
6. Gentoo
Самый высокий уровень настраиваемости у Gentoo. Дистрибутив позволяет компилировать нужные вам пакеты из исходников и при этом указывать флаги функциональности, которая вам нужна. Таким образом вы можете полностью отключить ненужные вам функции уже на уровне компиляции.
Стабильность
Очень важна для рабочего и домашнего использования стабильность. Если дистрибутив сломается в самый неподходящий момент, когда у вас много работы, будет очень неприятно.
1. Ubuntu
Операционная система Ubuntu очень стабильная. Она разработана корпорацией Canonical и позиционируется как надёжная система. Разработчики выпускают стабильные LTS релизы раз в два года, а раз в шесть месяцев релизы с коротким сроком поддержки. Сейчас я использую LTS релизы и на них всё довольно хорошо.
2. Debian
Принято считать, что Debian ещё стабильнее чем Ubuntu. Скорее всего, это так, потому что новые версии Debian выходят ещё реже и разработчики успевают всё проверить и тщательно протестировать. Тут, конечно, надо обратить внимание на новизну программ в Debian, однако в последнее время новые версии дистрибутива начали выходить чуть чаще, давая нам новые версии программ, а flatpak и snap вовсе решают этот вопрос.
3. Fedora
Дистрибутив Fedora позиционируется разработчиками как тестовая площадка для новых технологий, которые будут использоваться в Red Hat Enterprice Linux. Поэтому его никак нельзя считать очень стабильным, хотя за время что я его использовал у меня ничего серьезно не ломалось. Новые версии выходят довольно часто.
4. OpenSUSE
Я использовал OpenSUSE довольно долгое время и могу сказать, что система не менее стабильна, чем Ubuntu. Всё работает очень хорошо и даже Plasma не падает. А если падает, то очень редко.
5 и 6. Arch Linux и Gentoo
Оба дистрибутива используют rolling систему обновлений, когда в репозиториях всегда находится самая последняя версия системы. А это значит, что они очень нестабильны и это не раз подтверждалось на практике. Если обновления делать регулярно и исправлять мелкие проблемы, то ещё можно жить. Но если обновляться редко, то такие обновления могут сломать всю систему. Gentoo можно считать чуть стабильнее чем Arch, потому что разработчики Arch Linux позиционируют свой дистрибутив как самый современный, содержащий только новые версии программ. В Gentoo такого нет.
Выводы
В этой статье мы сделали небольшое сравнение дистрибутивов Linux по нескольким параметрам, которое поможет определить какой дистрибутив лучше выбрать для рабочей станции или домашнего использования.
| Показатель | Ubuntu | Debian | Fedora | OpenSUSE | ArchLinux | Gentoo |
| Простота установки | 5 | 5 | 4 | 5 | 2 | 1 |
| Готовность к использованию | 5 | 4 | 4 | 3 | 1 | 1 |
| Программное обеспечение | 5 | 5 | 3 | 4 | 4 | 2 |
| Настраиваемость | 2 | 2 | 2 | 3 | 4 | 5 |
| Стабильность | 4 | 5 | 3 | 4 | 1 | 2 |
| Средняя оценка | 4,2 | 4,2 | 3,2 | 3,8 | 2,4 | 2,2 |
Как видите, лучше всего подходит Ubuntu или Debian. Дистрибутивы Fedora и OpenSUSE тоже вполне неплохие, а вот Arch Linux и Gentoo лучше использовать только в период обучения. А что вы думаете обо всём этом? Напишите в комментариях!













