Vollwertiges Linux mit systemd auf einem Smartphone über Droidspaces ausführen
Alte Android-Smartphones werden oft in Home-Server, Telegram-Bots oder lokale Testumgebungen verwandelt. Normalerweise geschieht dies mit Termux und PRoot oder durch Bastelei mit chroot. Aber diese Ansätze haben ernsthafte Nachteile. PRoot fängt jeden Systemaufruf über ptrace ab, was die Leistung verlangsamt. Normales chroot isoliert nur das Dateisystem und lässt den Prozessbaum und die Netzwerke mit dem Host teilen. Und vor allem war es aufgrund von cgroups, SELinux und Androids LMK-Speicherkiller schon immer eine Herausforderung, ein vollständiges systemd als PID 1 auf Android zu bekommen.
Das Projekt Droidspaces des Entwicklers ravindu644 bietet eine andere Lösung. Es ist ein Binary von etwa 400 KB, gebaut mit musl libc. Es verwendet Standard-Linux-Kernel-Namespaces und erstellt isolierte Container mit echter Initialisierung, Grafikbeschleunigung und Netzwerkfunktionalität.
Wie sich Droidspaces von Alternativen unterscheidet
Im Gegensatz zu schwergewichtigen LXC- oder Docker-Stacks, die auf Termux laufen, arbeitet Droidspaces direkt mit dem Kernel. Es hat keine externen Abhängigkeiten. Wenn der Systemkernel Namespaces unterstützt, läuft das Tool sogar in der Android-Wiederherstellungsumgebung (Recovery oder Ramdisk).
Vergleichen wir Droidspaces mit vertrauten Tools:
- Bei PRoot hat jeder Systemaufruf eine Verzögerung. Hier läuft der Container nativ.
- Normales chroot scheitert bei einem einfachen Prozess-Anzeigebefehl. Droidspaces bietet ehrliche Isolation von PID, MNT, UTS, IPC und Cgroup.
- Androids Hintergrundprozess-Killer schließt oft Termux zusammen mit allen Diensten. Droidspaces löst sich über setsid von der Anwendungssitzung und lebt als Hintergrund-Daemon.
- Wenn Sie die Android-App löschen, laufen die Container in
/data/local/Droidspacesweiter, Daten gehen nicht verloren.
Grafik, Sound und Netzwerk ohne manuelle Konfiguration
Seit Version 6.x kann das Tool Grafik und Audio eigenständig weiterleiten. Wenn Sie XFCE oder eine andere Desktop-Umgebung benötigen, müssen Sie keine Umgebungsvariablen manuell setzen und Server in Termux starten.
Wenn die entsprechenden Toggles aktiviert sind, startet das Tool automatisch Termux:X11, VirGL und PulseAudio. Innerhalb des Containers werden die Variablen DISPLAY=:5 und GALLIUM_DRIVER=virpipe automatisch gesetzt. Für Qualcomm Adreno GPUs ist der Turnip-Treiber mit direktem GPU-Passthrough verfügbar.
Vier Netzwerkmodi werden unterstützt:
- Host (geteiltes Netzwerk mit dem Gerät)
- NAT (isoliertes Netzwerk mit automatischer Erkennung der Schnittstelle und Port-Weiterleitung)
- None (vollständige Netzwerkisolation)
- Gateway (Delegierung des Routings an einen anderen Container, zum Beispiel mit OpenWRT)
Verwaltung und Arbeiten mit Code
Eine komfortable GUI wurde für Android in Kotlin erstellt. Sie konfiguriert Mount-Punkte, verteilt Hardware-Ressourcen, leitet Ports weiter und zeigt systemd Boot-Logs an.
Auf Desktop-Linux oder über SSH wird das Gerät über ein Kommandozeilen-Tool verwaltet:
# Проверка готовности ядра
sudo ./droidspaces check
# Запуск контейнера с файлом конфигурации
sudo ./droidspaces start ubuntu --conf /path/to/ubuntu.config
# Вход в консоль запущенного контейнера
sudo ./droidspaces enter ubuntu
Wenn Sie Software testen müssen, ohne das Dateisystem zu gefährden, ist der Volatile-Modus praktisch. Er verwendet OverlayFS, speichert alle Änderungen im RAM und verwirft sie sofort nach dem Stoppen.
Kernel-Anforderungen und Sicherheitsnuancen
Ohne Root-Rechte passiert keine Magie. Das Tool benötigt Root (KernelSU, Magisk oder APatch) und Kernel-Version 3.10 oder neuer.
Auf alten Kernels (3.10–4.19) muss man sich mit Android-Spezifika herumschlagen. Aufgrund von FBE-Verschlüsselungskonflikten und VFS-Eigenheiten treten manchmal Kernel-Freezes auf. Der Autor hat einen Deadlock Shield Toggle und BPF-Filter bereitgestellt. Wenn Sie den Schutz deaktivieren, können Sie sogar Docker innerhalb von Droidspaces ausführen (verschachtelte Container). Auf modernen GKI-Kernels (5.4+) sind alle Funktionen standardmäßig verfügbar.
Eine wichtige Sicherheitsnote: Droidspaces wurde für Enthusiasten entwickelt und funktioniert nicht als strenge Sandbox. Prozesse innerhalb des Containers mit Root-Rechten haben Zugriff auf Kernel-Aufrufe, und das Flag --privileged deaktiviert die meisten Capabilities und Seccomp-Einschränkungen. Das Ausführen fragwürdigen Codes auf Ihrem persönlichen Gerät ist definitiv nicht empfehlenswert.
Wem dieses Projekt nützen wird
Das Tool wird diejenigen ansprechen, die ein altes Tablet oder Smartphone in einen lokalen Server verwandeln. Es ist praktisch zum Starten von Docker-Containern, einer Home-Assistant-Instanz, Datenbankinstanzen oder einer vollständigen Desktop-Umgebung mit Rendering über GPU.
Fertige Binaries für aarch64, armhf, x86_64, x86 und riscv64 Architekturen sind in den Releases auf GitHub verfügbar.
Ähnliche Projekte