Eseguire un Linux completo con systemd su uno smartphone tramite Droidspaces
I vecchi smartphone Android vengono spesso trasformati in home server, bot Telegram o banchi di test locali. Di solito questo viene fatto con Termux e PRoot o armeggiando con chroot. Ma questi approcci hanno gravi inconvenienti. PRoot intercetta ogni chiamata di sistema tramite ptrace, il che rallenta le prestazioni. Il chroot normale isola solo il file system, lasciando l'albero dei processi e le reti condivise con l'host. E, cosa più importante, ottenere un systemd completo come PID 1 su Android è sempre stato un compito impegnativo a causa dei cgroup, SELinux e del killer di memoria LMK di Android.
Il progetto Droidspaces del developer ravindu644 offre una soluzione diversa. È un binario di circa 400 KB, compilato con musl libc. Utilizza i namespace del kernel Linux standard e avvia container isolati con inizializzazione reale, accelerazione grafica e networking.
Come Droidspaces si differenzia dalle alternative
A differenza degli stack LXC o Docker pesanti che girano sopra Termux, Droidspaces funziona direttamente con il kernel. Non ha dipendenze esterne. Se il kernel di sistema supporta i namespace, lo strumento funzionerà anche nell'ambiente di recovery Android (Recovery o Ramdisk).
Confrontiamo Droidspaces con gli strumenti familiari:
- In PRoot, ogni chiamata di sistema va con un ritardo. Qui il container gira nativamente.
- Il chroot normale si rompe con un semplice comando di visualizzazione dei processi. Droidspaces fornisce un'onesta isolazione di PID, MNT, UTS, IPC e Cgroup.
- Il killer di processi in background di Android spesso chiude Termux insieme a tutti i servizi. Droidspaces si stacca dalla sessione dell'applicazione tramite setsid e vive in un demone in background.
- Se elimini l'app Android, i container in esecuzione in
/data/local/Droidspacescontinueranno a funzionare, i dati non andranno persi.
Grafica, audio e rete senza configurazione manuale
Dalla versione 6.x, l'utility può inoltrare grafica e audio autonomamente. Se hai bisogno di XFCE o di un altro ambiente desktop, non dovrai impostare manualmente le variabili d'ambiente e avviare server in Termux.
Quando le toggle corrispondenti sono abilitate, l'utility alza automaticamente Termux:X11, VirGL e PulseAudio. All'interno del container, le variabili DISPLAY=:5 e GALLIUM_DRIVER=virpipe vengono impostate automaticamente. Per le GPU Qualcomm Adreno, è disponibile il driver Turnip con passthrough GPU diretto.
Sono supportate quattro modalità di rete:
- Host (rete condivisa con il dispositivo)
- NAT (rete isolata con auto-detect dell'interfaccia e port forwarding)
- None (isolamento completo della rete)
- Gateway (delega del routing a un altro container, ad esempio con OpenWRT)
Gestione e lavoro con il codice
È stata creata una comoda GUI per Android in Kotlin. Configura i punti di mount, alloca le risorse hardware, inoltra le porte e visualizza i log di boot di systemd.
Sul desktop Linux o tramite SSH, il dispositivo viene gestito attraverso un'utility da riga di comando:
# Проверка готовности ядра
sudo ./droidspaces check
# Запуск контейнера с файлом конфигурации
sudo ./droidspaces start ubuntu --conf /path/to/ubuntu.config
# Вход в консоль запущенного контейнера
sudo ./droidspaces enter ubuntu
Se hai bisogno di testare software senza rischiare di danneggiare il file system, la modalità Volatile fa al caso tuo. Usa OverlayFS, memorizza tutte le modifiche in RAM e le scarta immediatamente dopo l'arresto.
Requisiti del kernel e sfumature di sicurezza
Senza diritti di root, non succederà nessuna magia. Lo strumento ha bisogno di Root (KernelSU, Magisk o APatch) e versione del kernel 3.10 o successiva.
Sui kernel vecchi (3.10–4.19), bisogna fare i conti con le specificità di Android. A causa dei conflitti di crittografia FBE e delle peculiarità di VFS, a volte si verificano blocchi del kernel. L'autore ha fornito una toggle Deadlock Shield e filtri BPF. Se disabiliti la protezione, puoi persino eseguire Docker all'interno di Droidspaces (container annidati). Sui kernel GKI moderni (5.4+), tutte le funzioni sono disponibili out of the box.
Una nota importante sulla sicurezza: Droidspaces è stato creato per gli appassionati e non funziona come un sandbox rigoroso. I processi all'interno del container con privilegi root hanno accesso alle chiamate di sistema, e il flag --privileged disabilita la maggior parte delle capability e delle restrizioni seccomp. Eseguire codice discutibile sul proprio dispositivo personale non è sicuramente consigliabile.
A chi sarà utile questo progetto
Lo strumento piacerà a chi trasforma un vecchio tablet o smartphone in un server locale. È comodo per avviare container Docker, un Home Assistant domestico, istanze di database o un ambiente desktop completo con rendering tramite GPU.
I binari pronti per le architetture aarch64, armhf, x86_64, x86 e riscv64 sono disponibili nelle release su GitHub.
Progetti correlati