Введение
И так в 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












