Skip to main content

Trasforma il tuo vecchio smartphone in un server Linux

Hai uno smartphone dimenticato in un cassetto? È un server. Solo che ancora non lo sa.

CPU ARM multi-core, qualche GB di RAM, storage flash, WiFi e una batteria che fa da UPS integrato. Il tutto con un consumo (quasi) a zero in bolletta. Con il sistema giusto ci fai girare quello che faresti girare su un mini PC: servizi self-hosted, container, perfino un cluster Kubernetes fatto di telefoni.

In questa pagina trovi da dove partire e qualche trucco utile già da subito. Le guide complete, passo per passo, sono nella Knowledge Base riservata ai sostenitori su Patreon (in fondo trovi i dettagli).


Android è Linux… quindi perché non basta?

Android usa il kernel Linux, è vero. Ma ci sono due problemi:

  • il kernel Android è un fork con modifiche sostanziali rispetto al kernel "vanilla";
  • i produttori distribuiscono kernel vecchi, con funzionalità limitate e driver chiusi (patch downstream di cui spesso non rilasciano il sorgente).

Il risultato: niente Docker, niente Kubernetes, niente Linux "vero". Per usare il telefono come un PC serve il kernel mainline, cioè lo stesso che usi sul tuo computer.

Il progetto che fa questo lavoro sul serio (reverse engineering dei driver e upstreaming nel kernel ufficiale) è postmarketOS, una distro minimale basata su Alpine Linux.


Step 0: il tuo telefono è supportato?

Cerca il tuo modello sulla wiki di postmarketOS. Nella pagina del dispositivo guarda:

  • la tabella delle funzionalità: cosa funziona, cosa no e cosa non ancora;
  • le varianti conosciute: lo stesso modello può montare hardware diverso, con un livello di supporto diverso;
  • i problemi noti.

Leggi tutta la pagina del tuo dispositivo prima di fare qualsiasi cosa!

Trovi solo "port generico"? Il telefono è supportato tramite un port comune a più dispositivi con lo stesso SoC. Di solito vuol dire che boot e componenti del SoC funzionano, mentre touch, speaker, fotocamera e simili spesso no. Lo riconosci da questo avviso sulla pagina del dispositivo:

Avviso di port generico sulla wiki di postmarketOS

Un telefono senza touch funzionante può comunque essere un ottimo server headless. Il Pixel 4a, per esempio: touch, speaker e sensori non vanno, ma come server funziona perfettamente.

Modelli già documentati nella KB: Xiaomi POCO F1, Google Pixel 4a, OnePlus 6 / 6T, Xiaomi Mi A2.


Ad alto livello

  1. Verifica del supporto: vedi sopra.
  2. Sblocco del bootloader con ADB/fastboot (cancella tutti i dati del telefono).
  3. Installazione di postmarketOS: con pmbootstrap (consigliato e personalizzabile).
  4. Collegamento al telefono: anche se schermo e touch non funzionano.
  5. Controlli post-installazione: ricarica, CPU, batteria.
  6. Ottimizzazione per l'uso server: RAM, scritture su flash, log, e poi Kubernetes.

3 trucchi da usare subito

1. Dopo il flash, non riavviare mai con il tasto fisico

Riavvia sempre con:

fastboot reboot

Altrimenti le scritture potrebbero non completarsi e ti ritrovi con un sistema corrotto.

2. Schermo rotto o touch che non va? Entra via SSH dal cavo USB

Dopo un'installazione con pmbootstrap, il telefono collegato al PC si presenta come scheda di rete USB (modalità gadget). Il telefono ha sempre l'IP 172.16.42.1.

Assegna un IP alla nuova interfaccia sul PC (il nome può variare, per esempio usb0) e collegati con l'utente che hai scelto in fase di setup:

sudo ip addr add 172.16.42.2/24 dev usb0
ssh tuoUtente@172.16.42.1

Le immagini precompilate hanno SSH disabilitato per impostazione predefinita. Se il touch non funziona, installa con pmbootstrap.

3. CPU al 100% anche a riposo?

Su alcuni modelli, a causa di driver mancanti, un servizio cerca all'infinito di leggere sensori che non esistono e tiene un core sempre al massimo. Controlla con htop:

htop: iio-sensor-proxy al 100% su un core

Se il colpevole è iio-sensor-proxy:

sudo systemctl mask --now iio-sensor-proxy

Bonus: durante pmbootstrap install, se per il tuo telefono c'è l'opzione, scegli systemd e non openrc.


Cosa trovi nella Knowledge Base completa

Fin qui hai visto l'inizio. Questo è quello che ti aspetta dentro:

  • Sblocco del bootloader passo per passo, con i casi particolari.
  • Installazione con pmbootstrap completa, più la gestione dei dispositivi con boot A/B: è il motivo per cui, dopo un riavvio qualsiasi, il telefono può smettere di avviarsi con "root partition not found".
  • Internet al telefono tramite USB, usando il PC come router, quando WiFi ed ethernet non funzionano ma devi installare un pacchetto.
  • Checklist post-installazione: come verificare da terminale che la ricarica funzioni davvero e scovare i processi che bloccano la CPU.
  • Limitare la carica della batteria al 40-50% modificando il device tree, per tenere il telefono attaccato alla corrente h24 senza rovinare la batteria.
  • Ottimizzazione headless: da un sistema desktop pesante a ~300 MB di RAM, più tutte le accortezze per non consumare la memoria flash (mount, journald, tmpfs, sysctl).
  • Cluster Kubernetes (k3s) in alta affidabilità fatto di smartphone: etcd su ramdisk per salvare la flash, re-join automatico dopo un riavvio, procedura di ripristino dopo un blackout.
  • Quirks per i modelli testati (il fix del WiFi del POCO F1 che non si autentica, la USB-C in modalità host su POCO F1, ecc...)
  • Video correlati su Patreon, dove vedi le procedure in azione.

Un assaggio: lo stesso telefono, prima e dopo l'ottimizzazione headless.

Prima: 862 MB di RAM usati

RAM prima dell'ottimizzazione: 862M

Dopo: 298 MB di RAM usati

RAM dopo l'ottimizzazione: 298M

Ti è già capitata questa schermata? Nella KB trovi perché succede e come evitarla.

root partition not found su uno Xiaomi Mi A2


Sblocca tutte le guide

Iscriviti su Patreon al tier Benefattori o Produttori per accedere a tutti i contenuti del libro Linux mobile.

👉 Diventa sostenitore su Patreon
Sostieni il progetto e dai una seconda vita al tuo vecchio telefono.