Гайд на distrobox и как можно запускать любые дистрибутивы в Qubes без боли

Введение

И так в Qubes есть несколько проблем с поддержкой альтернативных дистрибутивов:

  • (Основная) Зависимость от репозиториев qubes и обновлений в них, что усложняет использование rolling дистрибутивов и в целом понижает стабильность. Разработчики Qubes не всегда успевают обновлять их вовремя.
  • Дистрибутивы из TemplateVM зависят от Qubes и делают много вещей в фоне, например выполняют хук чтобы отображать новое установленное приложение в списке приложений и это занимает время. Очевидно что не все установленные приложения нам нужно экспортировать.

Дабы решить эти проблемы можно использовать distrobox (https://distrobox.it/) это легковестная контейнерная среда работающая поверх podman или docker которая позволяет вам запускать другие дистрибутивы linux. Хостовая система уже будет примонтирована в контейнер и настроена для запуска любых приложений. Distrobox поддерживает весь функционал обычного линукс дистрибутива (systemd, dbus, и т.д.) что позволяет бесшовно запускать приложения.

Как же distrobox решает эти проблемы:

  • так как он работает в контейнере то, не зависит от VM системы впринципе, можно использовать любой дистрибутив как основу, но мы будем использовать debian-13.
  • он не дергает хуки qubes при выполнении операций обновления пакетов, а так же в целом никак старается не трогать вещи которые разработчики qubes добавили в Guest VM

Установка

Демонстрационный процесс я буду показывать на kali который является rolling релизом и в настоящее время его сложно использовать как TemplateVM в Qubes, в репозиториях он не доступен.

Создаем VM

Задаем настройки как на скриншоте ниже и кликаем Create new qube

После чего появится окно с настройками где вы можете задать память на свой выбор. Я буду использовать такие:

Жмем OK.

Настраиваем

Устанавливаем зависимости

Открываем терминал, и выполняем

sudo apt install distrobox -y

Устанавливаем kali

Другие дистрибутивы вы можете найти тут GitHub - toolbx-images/images: Community maintained container images to use with toolbx and distrobox · GitHub, или в GUI https://flathub.org/en/apps/com.ranfdev.DistroShelf
Установка займет какое-то время

distrobox create --root --image docker.io/kalilinux/kali-rolling:latest --name kali --init --hostname kali
distrobox enter --root kali

Во время установки у distrobox не получилось автоматически сконфигурировать пользователя, поэтому мы сделаем это сами. В предоставленном промпте задаем пароль (позже мы от него избавимся)

После ввода нового пароля мы попадаем внуть контейнера, откуда же нам сразу надо выйте командой exit.

Сейчас пользователь не в sudo группе поэтому не может выполнять команды от имени администратора. Чтобы исправить проблему с паролем нам надо выполнить несколько шагов.

Эта команда позволит нам зайти в контейнер от имени пользователя root

sudo podman exec -it kali /bin/bash

От имени пользователя root выполняем:

apt install -y nano # kali репозитории забанены в РФ
nano /etc/sudoers

Листаем в конец файла и под строку root ALL=(ALL:ALL) ALL
Добавляем:

user ALL=(ALL) NOPASSWD: ALL

Жмем Ctrl+S, Ctrl+X чтобы сохранить изменения после чего благополучно выходим из окружения командой exit.

Убеждаемся что все работает командой

distrobox enter --root kali

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

Донастройка для удобства использования

В контейнер устанавливаем терминал и выходим из окружения

sudo apt install xfce4-terminal -y
exit # выходим из окружения контейнера

в окружении VM исполняем:

distrobox generate-entry --root kali # создаем .desktop
nano .local/share/applications/kali.desktop # конфигурируем

Пишем

Exec=/usr/bin/distrobox enter --root kali -- xfce4-terminal
Terminal=false

Открываем настройки VM и жмем Refresh applications:

После чего добавляем Kali в список приложений

Теперь запускаем Kali и у нас открывает терминал контейнера

Его так же стоит настроить чтобы запускать /bin/bash а не /bin/sh, это можно сделать в настройках xfce4-terminal:

Результат

Заключение

Такой способ упрощает использование в Qubes дистрибутивов которые не поддерживаются оффициально. Пользователи NixOS используют идентичный способ чтобы использовать программы которых нет в репозиториях и которые зависят от LFS.

Заходите в ТГК: Telegram: View @qubesru

Расширенный список поддерживаемых дистрибутивов, предоставил @newqube