5 дистрибутивов Linux, о которых вы могли не слышать
Сравните пять малоизвестных дистрибутивов Linux для разработчиков: CachyOS, Bazzite, Nobara, Vanilla OS и Chimera Linux — драйверы, обновления и инструменты.
Лучший дистрибутив Linux для разработчика — тот, на котором тулчейны, контейнеры и драйверы GPU заводятся с наименьшими усилиями. CachyOS, Bazzite, Nobara, Vanilla OS и Chimera Linux идут на разные компромиссы по каждому из этих трёх пунктов.
Большинство подборок «лучших дистрибутивов» на деле оказываются игровыми бенчмарками. Они сообщают FPS, но не говорят, будут ли npm install, Docker или ваша IDE нормально работать в обычный вторник утром.
Вашему ноутбуку больше не нужно повторять продакшн-окружение: эту задачу теперь решают контейнеры. Поэтому выбор хостовой ОС сводится к трём вещам: драйверам, поведению обновлений и способу установки инструментов. В этой статье пять менее известных дистрибутивов рассматриваются именно с этих трёх сторон. Omarchy и Garuda Linux посвящены отдельные обзоры, поэтому здесь они не рассматриваются.
Ключевые выводы
- CachyOS — это Arch с оптимизированным ядром и репозиториями, собранными под конкретные поколения CPU, поэтому репозитории Arch, AUR и Arch Wiki по-прежнему применимы.
- В иммутабельных дистрибутивах вроде Bazzite и Vanilla OS хостовые пакеты накладываются слоями поверх образа, доступного только для чтения, а языковые тулчейны живут в контейнерах, которые используют ваш домашний каталог совместно с хостом.
- Nobara — это Fedora с доступной для записи системой, в которой предустановлены кодеки и драйверы NVIDIA, поэтому документация Fedora и привычки работы с
dnfостаются в силе. - Chimera Linux использует musl, LLVM/Clang, базовые утилиты FreeBSD и dinit, из-за чего готовые бинарники, собранные только под glibc, могут не запуститься без glibc-контейнера.
- Ни один из этих дистрибутивов не меняет того, на чём ваш код работает в продакшне. Выбор определяет, как инструменты попадают на машину и как приходят обновления.
CachyOS: Arch с тюнингом производительности
CachyOS — дистрибутив с моделью rolling release на базе Arch. От стокового Arch он отличается двумя вещами: ядром CachyOS, которое по умолчанию использует настроенный планировщик EEVDF (BORE и другие планировщики доступны опционально), и репозиториями пакетов, скомпилированными под x86-64-v3, x86-64-v4 и AMD Zen 4/5. Он подойдёт разработчикам, которым уже нравится Arch и которые хотят получить готовую тонкую настройку.
- Пакеты: репозитории Arch плюс AUR. Редкие CLI-утилиты, языковые серверы и нишевые SDK обычно ставятся одной командой.
- Что сделать перед началом работы: установите нужные рантаймы и Docker или Podman из репозиториев. Никаких препятствий нет.
- NVIDIA: пакеты NVIDIA из Arch и страница NVIDIA в Arch Wiki применимы напрямую.
- В роли рабочей машины: обновления ядра, Mesa и тулчейна приходят непрерывно, и перед крупными обновлениями от вас ожидается, что вы прочитаете новости проекта.
Чем придётся заплатить: необходимостью обслуживать rolling-release-систему. Если неудачное обновление прилетит в день дедлайна, чинить его придётся вам.
Bazzite: Fedora Atomic с отдельными образами для NVIDIA
Bazzite — иммутабельный дистрибутив, базовая ОС которого представляет собой доступный только для чтения образ Fedora Atomic. Он обновляется как единое целое, а откат выполняется загрузкой предыдущего образа. Это значит, что инструменты разработки не устанавливаются глобально, как это делается через dnf. Bazzite подойдёт разработчикам, которым нужна машина в стабильном, предсказуемом состоянии, и которые готовы работать внутри контейнеров.
- Пакеты: Flatpak для GUI-приложений, наслоение (layering) через rpm-ostree для хостового ПО и контейнеры для тулчейнов. Bazzite поставляется с Distrobox. Если вам нужен Docker из коробки, он есть в варианте Bazzite DX, а не в стандартном образе.
- Что сделать перед началом работы: соберите dev-контейнер.
- NVIDIA: Bazzite предлагает отдельные образы для NVIDIA. Выберите подходящий на странице загрузки.
- В роли рабочей машины: обновления атомарны, и их можно откатить, но за домашний каталог, контейнеры и наслоенные пакеты по-прежнему отвечаете вы.
В иммутабельной системе на базе Fedora пакеты уровня хоста накладываются на образ через rpm-ostree и вступают в силу после перезагрузки. Языковые тулчейны размещаются в контейнере Distrobox или Toolbx, который использует ваш домашний каталог совместно с хостом:
rpm-ostree install zsh # host layer, applied on next boot
systemctl reboot
distrobox create --name dev --image registry.fedoraproject.org/fedora:latest
distrobox enter dev
sudo dnf install nodejs gcc make # inside the container only
rpm-ostree rollback # revert to the previous deployment
Всё, что вы устанавливаете внутри dev, не попадает в хостовый образ, а при удалении контейнера удаляется и это ПО.
Базовая система Bazzite, доступная только для чтения, ломает привычные подходы. Возможно, вы привыкли решать проблемы с помощью sudo и текстового редактора, а права доступа и владельцев файлов знаете назубок. В Fedora Atomic каталог /usr доступен только для чтения. /etc остаётся доступным для записи, но OSTree объединяет ваши изменения с каждым новым образом. Есть и ещё одна ловушка: IDE, установленная в виде Flatpak, работает в песочнице, поэтому может не видеть компиляторы в вашем контейнере или на хосте, если вы не настроите это отдельно.
Чем придётся заплатить: перед установкой каждого инструмента нужно сначала решить, где ему место: на хосте, в контейнере или во Flatpak.
Nobara: Fedora без острых углов
Nobara — это обычная Fedora с доступной для записи системой, в которую добавлены медиакодеки, драйверы NVIDIA и ориентированные на игры патчи ядра. Большая часть документации Fedora и привычки работы с dnf переносятся без изменений. Дистрибутив поддерживает GloriousEggroll. Он подойдёт пользователям Fedora, которые устали настраивать кодеки и драйверы после каждой установки.
- Пакеты:
dnf, Flatpak и экосистема Fedora, а также собственные репозитории Nobara. - Что сделать перед началом работы: почти ничего. Установите рантаймы и контейнерный движок так же, как на Fedora.
- NVIDIA: драйверы предустановлены, что устраняет самый частый источник проблем при первой загрузке Fedora.
- В роли рабочей машины: изменяемая (mutable) система. Вы можете отредактировать что угодно и так же легко что угодно сломать.
Чем придётся заплатить: проект меньше, чем Fedora. Когда что-то ломается, приходится разбираться не только с апстримом, но и с патчами Nobara.
Vanilla OS: иммутабельность и контейнеры на первом месте
Vanilla OS сохраняет базовую систему неизменяемой и переносит установку ПО в контейнеры. Установка компилятора начинается с вопроса, в каком контейнере он будет жить, а не из какого репозитория его взять. Дистрибутив подойдёт разработчикам, которым регулярно нужны пакеты из нескольких дистрибутивов на одной машине.
- Пакеты: хостом управляет ABRoot, который применяет каждое обновление ко второму корневому разделу и переключается на него при следующей перезагрузке. Apx управляет контейнерами на базе других дистрибутивов и делает их пакетные менеджеры доступными с хоста. GUI-приложения ставятся через Flatpak.
- Что сделать перед началом работы: создайте Apx-контейнер для каждого семейства тулчейнов.
- NVIDIA: сверьтесь с документацией проекта для вашего оборудования.
- В роли рабочей машины: действуют те же компромиссы иммутабельной системы, что и у Bazzite, но реализованные собственными инструментами Vanilla, а не rpm-ostree.
Чем придётся заплатить: инструментами, специфичными для Vanilla. Документация Fedora Atomic и Arch к ним напрямую не применима.
Chimera Linux: по-настоящему необычный дистрибутив
Chimera Linux — независимый дистрибутив с моделью rolling release, который по возможности обходится без GNU. Он использует musl вместо glibc, базовые утилиты FreeBSD вместо GNU coreutils, LLVM/Clang в качестве системного тулчейна и dinit в качестве системы инициализации. Пакеты устанавливаются через apk-tools. Дистрибутив подойдёт системным программистам и всем, кто хочет проверить переносимость своего кода.
- Пакеты: репозитории apk. Всё, что рассчитано на пакеты Arch или Fedora, придётся запускать в контейнере.
- Что сделать перед началом работы: убедитесь, что ваши рантаймы работают на musl.
- NVIDIA: уточните поддержку NVIDIA в документации проекта.
- В роли рабочей машины: shell-скрипты, написанные под GNU coreutils, могут работать некорректно, поскольку BSD-утилиты принимают другие флаги.
В дистрибутиве на базе musl, таком как Chimera Linux, ваш собственный код без проблем собирается и запускается. С готовыми бинарниками, слинкованными с glibc, ситуация иная: вендорские CLI-утилиты и пакеты, которые распространяются только в сборках под glibc, могут не запуститься без слоя совместимости или glibc-контейнера.
Чем придётся заплатить: несовпадением с допущениями экосистемы. Большая часть бинарников в мире собирается под glibc.
Какой дистрибутив Linux лучше для разработчиков?
- Если вы живёте в AUR и не против rolling-обновлений, CachyOS даст вам Arch с уже выполненной настройкой.
- Если вам нужна ОС, которая не меняется у вас под ногами, и вы готовы вести разработку в контейнерах, вам подойдут модель образов Bazzite и Distrobox.
- Если вы уже знаете Fedora и просто хотите закрыть вопрос с NVIDIA и кодеками, Nobara сохранит ваши привычки.
- Если вам регулярно нужны пакеты из нескольких дистрибутивов на одной машине, Vanilla OS поместит каждый тулчейн в отдельный Apx-контейнер.
- Если вам нужна нестандартная система для проверки переносимости, Chimera выявит в вашем коде каждое допущение, завязанное на glibc и GNU.
Ни один из этих дистрибутивов не меняет того, на чём ваш код работает в продакшне. Выбор определяет, как тулчейны попадают на машину, как приходят обновления и сколько возни с драйверами предстоит до того, как вы откроете редактор. Найдите сценарий, похожий на ваш, установите соответствующий дистрибутив на свободный раздел и воссоздайте там окружение текущего проекта, прежде чем переходить на него окончательно.
Часто задаваемые вопросы
Нужно ли перезагружаться каждый раз после rpm-ostree install в Bazzite или Fedora Atomic?
Нет, если вы только добавляете пакеты. По умолчанию каждая операция rpm-ostree выполняется офлайн и вступает в силу при следующей загрузке, но rpm-ostree install --apply-live (краткая форма -A) сразу применяет новые наслоенные пакеты к работающей системе. Live-применение работает только при добавлении пакетов и только если нет других отложенных изменений. Удаление пакетов по-прежнему требует перезагрузки, а rpm-ostree apply-live --reset возвращает систему к загруженному дереву.
Работает ли CachyOS на старых процессорах без поддержки x86-64-v3?
Да. Помимо сборок для x86-64-v3, x86-64-v4 и Zen 4/5, CachyOS поддерживает универсальный репозиторий x86-64. Во время установки инсталлятор и скрипт настройки репозиториев определяют возможности процессора и выбирают наиболее подходящий уровень репозитория. Процессоры без AVX2 получают универсальные пакеты, так что rolling-база Arch и инструменты CachyOS остаются доступны. Команда /lib/ld-linux-x86-64.so.2 --help показывает, какие уровни поддерживает ваш CPU.
Чем Distrobox отличается от Toolbx для контейнеров разработки?
Оба инструмента создают долгоживущие контейнеры, которые используют домашний каталог совместно с хостом. Toolbx работает только с Podman и лучше всего подходит для образов в стиле Fedora. Distrobox служит обёрткой над Podman или Docker, при их отсутствии использует собственный менеджер Lilipod и запускает образы практически любого дистрибутива. Для контейнеров Fedora на Fedora Atomic достаточно Toolbx. Distrobox пригодится, когда нужно пользовательское окружение Arch, Ubuntu или Alpine — например, для вендорского инструмента, поставляемого только в виде .deb.
Может ли Flatpak-версия VS Code использовать компиляторы, установленные в Distrobox или на хосте?
По умолчанию нет. Пакет VS Code с Flathub работает в песочнице, у которой нет доступа к SDK, установленным на хосте, поэтому тулчейны в контейнере Distrobox или наслоенные через rpm-ostree остаются вне поля зрения. В примечаниях к пакету перечислены три обходных пути: запускать команды хоста через flatpak-spawn --host или host-spawn, настроить встроенный терминал на использование хостовой оболочки или установить внутрь песочницы расширения Freedesktop SDK, например SDK для Go или .NET.