Запускаем полноценный Linux с systemd на смартфоне через Droidspaces

27 июл 2026
1,764
182
8
2 недели

Старые смартфоны на Android часто превращают в домашние серверы, Telegram-ботов или локальные тестовые стенды. Обычно для этого берут Termux с PRoot или ковыряют chroot. Но у этих подходов есть серьезные грабли. PRoot перехватывает каждый системный вызов через ptrace, из-за чего просаживается скорость работы. Обычный chroot изолирует только файловую систему, оставляя дерево процессов и сети общими с хостом. А главное, поднять полноценный systemd в качестве PID 1 на Android всегда было сложной задачей из-за особенностей cgroups, SELinux и утилит очистки памяти Android LMK.

Проект Droidspaces от разработчика ravindu644 предлагает другое решение. Это бинарник весом около 400 КБ, собранный с musl libc. Он использует стандартные неймспейсы ядра Linux и поднимает изолированные контейнеры с настоящей инициализацией, ускорением графики и сетью.

Чем Droidspaces отличается от аналогов

В отличие от тяжеловесных связок LXC или Docker поверх Termux, Droidspaces работает напрямую с ядром. У него нет внешних зависимостей. Если ядро системы поддерживает неймспейсы, инструмент заведется даже в среде восстановления Android (Recovery или Ramdisk).

Сравним Droidspaces с привычными инструментами:

  • В PRoot каждый системный вызов идет с задержкой. Здесь контейнер работает нативно.
  • Обычный chroot сбегает при банальной команде просмотра процессов. Droidspaces дает честную изоляцию PID, MNT, UTS, IPC и Cgroup.
  • Убийца фоновых процессов Android часто закрывает Termux вместе со всеми сервисами. Droidspaces отвязывается от сессии приложения через setsid и живет в фоновом демоне.
  • Если удалить Android-приложение, запущенные контейнеры в /data/local/Droidspaces продолжат работать, данные не пропадут.

Графика, звук и сеть без ручной настройки

С версий 6.x утилита умеет самостоятельно пробрасывать графику и звук. Если вам нужен XFCE или другой рабочий стол, не придется вручную вбивать переменные окружения и стартовать серверы в Termux.

Реклама

При включении соответствующих тумблеров утилита сама поднимает Termux:X11, VirGL и PulseAudio. Внутри контейнера автоматически оказываются переменные DISPLAY=:5 и GALLIUM_DRIVER=virpipe. Для видеокарт Qualcomm Adreno доступен драйвер Turnip с прямой проброской GPU.

С сетью поддерживается четыре режима:

  • Host (общая сеть с устройством)
  • NAT (изолированная сеть с автоопределением интерфейса и пробросом портов)
  • None (полная сетевая изоляция)
  • Gateway (делегирование маршрутизации другому контейнеру, например с OpenWRT)

Управление и работа с кодом

Для Android создали удобный графический интерфейс на Kotlin. В нем настраиваются точки монтирования, выделяются аппаратные ресурсы, пробрасываются порты и выводятся логи загрузки systemd.

На десктопном Linux или через SSH устройство управляется через утилиту командной строки:

# Проверка готовности ядра
sudo ./droidspaces check

# Запуск контейнера с файлом конфигурации
sudo ./droidspaces start ubuntu --conf /path/to/ubuntu.config

# Вход в консоль запущенного контейнера
sudo ./droidspaces enter ubuntu

Если нужно протестировать софт без риска испортить файловую систему, пригодится режим Volatile. Он использует OverlayFS, хранит все изменения в оперативной памяти и сбрасывает их сразу после остановки.

Требования к ядру и нюансы безопасности

Без рут-прав магии не произойдет. Инструменту нужен Root (KernelSU, Magisk или APatch) и ядро версии 3.10 или новее.

На старых ядрах (3.10–4.19) приходится сталкиваться со спецификой Android. Из-за конфликтов FBE-шифрования и особенностей VFS иногда возникают зависания ядра. Автор предусмотрел переключатель Deadlock Shield и BPF-фильтры. Если отключить защиту, получается запускать даже Docker внутри Droidspaces (nested containers). На современных ядрах GKI (5.4+) все функции доступны сразу.

Важная оговорка по безопасности: Droidspaces создавался для энтузиастов и не работает как строгая песочница. Процессы внутри контейнера с правами root имеют доступ к вызовам ядра, а флаг --privileged отключает большинство ограничений capabilities и seccomp. Запускать сомнительный код на личном устройстве точно не стоит.

Кому пригодится проект

Инструмент понравится тем, кто превращает старый планшет или смартфон в локальный сервер. На нем удобно поднимать Docker-контейнеры, домашний Home Assistant, инстансы баз данных или полноценный рабочий стол с рендерингом через GPU.

Готовые бинарники под архитектуры aarch64, armhf, x86_64, x86 и riscv64 выложены в релизах на GitHub.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.