>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Kotlin

Volwaardig Linux met systemd op een smartphone draaien via Droidspaces

Oude Android-smartphones worden vaak omgetoverd tot thuisservers, Telegram-bots of lokale testomgevingen. Meestal gebeurt dit met Termux en PRoot of door te rommelen met chroot. Maar deze benaderingen hebben serieuze nadelen. PRoot onderschept elke systeemaanroep via ptrace, wat de prestaties vertraagt. Gewone chroot isoleert alleen het bestandssysteem, waardoor de procesboom en netwerken gedeeld blijven met de host. En het belangrijkste: een volledig systemd als PID 1 op Android krijgen was altijd een uitdagende taak vanwege cgroups, SELinux en Androids LMK-geheugendoder.

Het Droidspaces-project van ontwikkelaar ravindu644 biedt een andere oplossing. Het is een binary van ongeveer 400 KB, gebouwd met musl libc. Het gebruikt standaard Linux-kernel-namespaces en start geïsoleerde containers op met echte initialisatie, grafische acceleratie en netwerken.

Hoe Droidspaces verschilt van alternatieven

In tegenstelling tot zware LXC- of Docker-stacks die bovenop Termux draaien, werkt Droidspaces rechtstreeks met de kernel. Het heeft geen externe afhankelijkheden. Als de systeemkernel namespaces ondersteunt, draait het hulpmiddel zelfs in de Android-recoveryomgeving (Recovery of Ramdisk).

Vergelijk Droidspaces met bekende hulpmiddelen:

  • Bij PRoot gaat elke systeemaanroep met vertraging. Hier draait de container native.
  • Gewone chroot faalt bij een simpele opdracht om processen te bekijken. Droidspaces biedt eerlijke isolatie van PID, MNT, UTS, IPC en Cgroup.
  • Androids achtergrondprocesdoder sluit Termux vaak samen met alle services af. Droidspaces ontkoppelt van de applicatiesessie via setsid en draait als achtergronddaemon.
  • Als je de Android-app verwijdert, blijven draaiende containers in /data/local/Droidspaces gewoon werken, data gaat niet verloren.

Graphics, geluid en netwerk zonder handmatige configuratie

Sinds versie 6.x kan het hulpmiddel grafische weergave en audio zelf doorsturen. Als je XFCE of een andere desktopomgeving nodig hebt, hoef je geen handmatige omgevingsvariabelen in te stellen en servers in Termux te starten.

Wanneer de bijbehorende toggles zijn ingeschakeld, start het hulpmiddel automatisch Termux:X11, VirGL en PulseAudio op. Binnen de container worden de variabelen DISPLAY=:5 en GALLIUM_DRIVER=virpipe automatisch ingesteld. Voor Qualcomm Adreno GPU's is de Turnip-driver met directe GPU-passthrough beschikbaar.

Vier netwerkmodi worden ondersteund:

  • Host (gedeeld netwerk met het apparaat)
  • NAT (geïsoleerd netwerk met automatische detectie van interface en poortdoorsturing)
  • None (volledige netwerkisolatie)
  • Gateway (routering delegeren naar een andere container, bijvoorbeeld met OpenWRT)

Beheer en werken met code

Er is een handige GUI gemaakt voor Android in Kotlin. Het configureert mount-punten, wijst hardwarebronnen toe, stuurt poorten door en toont systemd-opstartlogboeken.

Op desktop Linux of via SSH wordt het apparaat beheerd via een command-line-hulpmiddel:

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

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

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

Als je software wilt testen zonder risico op schade aan het bestandssysteem, is de Volatile-modus handig. Het gebruikt OverlayFS, slaat alle wijzigingen in RAM op en gooit ze onmiddellijk weg na het stoppen.

Kernel-vereisten en beveiligingsnuances

Zonder root-rechten gebeurt er geen magie. Het hulpmiddel heeft Root nodig (KernelSU, Magisk of APatch) en kernelversie 3.10 of nieuwer.

Op oude kernels (3.10–4.19) moet je met Android-specifieke zaken omgaan. Vanwege FBE-coderingconflicten en VFS-bijzonderheden treden soms kernel-bevriezingen op. De auteur heeft een Deadlock Shield-toggle en BPF-filters geleverd. Als je de bescherming uitschakelt, kun je zelfs Docker binnen Droidspaces draaien (geneste containers). Op moderne GKI-kernels (5.4+) zijn alle functies standaard beschikbaar.

Een belangrijke beveiligingsnoot: Droidspaces is gemaakt voor enthousiastelingen en werkt niet als een strikte sandbox. Processen binnen de container met root-privileges hebben toegang tot kernel-aanroepen, en de --privileged-vlag schakelt de meeste capabilities en seccomp-beperkingen uit. Het draaien van twijfelachtige code op je persoonlijke apparaat is beslist niet aan te raden.

Voor wie is dit project nuttig

Het hulpmiddel zal aanspreken bij degenen die een oude tablet of smartphone omtoveren tot lokale server. Het is handig voor het opzetten van Docker-containers, een thuis-Home Assistant, database-instanties of een volledige desktopomgeving met rendering via GPU.

kant-en-klare binaries voor aarch64, armhf, x86_64, x86 en riscv64-architecturen zijn beschikbaar in de releases op GitHub.

Gerelateerde projecten