Modificare il file hosts di Android risulta molto utile, sia per bloccare l'accesso a risorse indesiderate (malware o pubblicità), sia per forzare la risoluzione dei nomi a dominio sugli indirizzi IP della rete locale (LAN) allo scopo di testare un sito o un'app in fase di sviluppo. Vediamo dunque come procedere per leggere e modificare il file hosts di Android, operando tramite PC e senza imbatterci negli errori adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system
oppure adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Permission denied
nota: in questo articolo vedremo direttamente la procedura pratica per modificare il file hosts di Android. Per tutte le informazioni sul file hosts, il formato da utilizzare ecc:
Per svolgere la procedura useremo i comandi adb pull
e adb push
per leggere e scrivere file sullo smartphone. Se non li avete mai usati prima, è certamente una buona idea fare un po' di pratica prima di procedere:
» Leggi: ADB pull e push: come copiare file fra Android e PC, anche quando lo smartphone non si avvia più
Passo 1: Necessari Root oppure custom ROM
Prima di iniziare, è necessario chiarire che l'accesso al file hosts di Android è possibile solamente dopo aver eseguito il rooting del device. Per la guida:
» Leggi: Come rootare lo smartphone Android: guida facile in italiano al root/rooting con SuperSU
In alternativa, potete modificare il file hosts di Android anche sugli smartphone/tablet che montino LineageOS, OmniROM, Resurrection Remix o una qualsiasi altra ROM non-ufficiale: il motivo è che tali firmware offrono già l'accesso root di default. Per la guida:
Passo 2: Installare Android Debug Bridge (ADB)
Android Debug Bridge (ADB) è un programma che consente di impartire comandi ai dispositivi Android tramite il PC. Procedete dunque ad installarlo, poiché lo utilizzeremo per accedere al file hosts:
Assicuratevi di attivare la modalità debug USB e di autorizzare il PC alla connessione, così come descritto nella guida indicata. Prima di proseguire, dovete essere davanti ad un Prompt dei comandi il cui percorso corrente sia la cartella platform-tools
nella quale sono stati scaricati ADB e Fastboot.
Passo 3: Ottenere il file hosts di Android
Siamo ora pronti a copiare su PC il file hosts di Android. Il comando da impartire è:
adb pull /system/etc/hosts hosts_di_android.txt
Il responso dovrebbe essere simile a
[100%] /system/etc/hosts
Questo recupera hosts dal suo percorso sullo smartphone e lo scrive in un file chiamato hosts_di_android.txt
all'interno della cartella corrente (ovvero, quella nella quale si trova ADB)
Passo 4: Modificare l'hosts di Android
Proseguiamo ora ad aprire il file hosts_di_android.txt
con l'editor di testi preferito ed apportare tutte le modifiche desiderate. Per maggiori info:
Nell'esempio seguente ho aggiunto queste righe:
# Modifiche file hosts by TurboLab.it
192.168.0.1 dev.turbolab.it
127.0.0.1 facebook.com www.facebook.com m.facebook.com
La prima è un commento per ricordarmi, in seguito, che sono stato io ad apportare queste modifiche.
La seconda mi permetterà di visualizzare all'indirizzo http://dev.turbolab.it
la copia di TurboLab.it in esecuzione sul mio PC, di modo da testare che le novità introdotte funzionino correttamente anche su mobile.
L'ultima è un semplice blocco di Facebook che ho inserito per fare una prova
Passo 5: Montare il filesystem in lettura+scrittura
Se provassimo a copiare ora il file hosts sul dispositivo Android otterremmo un errore simile a questo:
adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Read-only file system
Per impostazione predefinita, infatti, la partizione /system/
del dispositivo Android è montata in sola lettura. Per potervi scrivere il file hosts, eseguiamo questi comandi per accedere alla shell del device e ri-montare detta partizione in lettura+scrittura:
adb shell
su
mount -o remount,rw /system
exit
exit
(sì, dovete ripetere exit
due volte)
Nessuno di questi comandi genera una risposta. È normale.
Passo 6: Lanciare ADB come root
Non è ancora finita. Se provassimo a copiare ora il file hosts sul dispositivo Android otterremmo un errore simile a questo:
adb: error: failed to copy 'hosts' to '/system/etc/hosts': couldn't create file: Permission denied
Come già puntualizzato, anche sotto Android il file hosts è accessibile unicamente all'utente root. Riavviamo dunque ADB come root tramite il comando
adb root
Non si ottiene nessuna risposta, ma è corretto così.
Passo 7: Copiare il file hosts modificato
Bene, a questo punto siamo davvero pronti a riportare il nostro file hosts modificato sullo smartphone/tablet. Basta impartire
adb push hosts_di_android.txt /system/etc/hosts
La conferma mostrata è:
[100%] /system/etc/hosts
Passo 8: Test
La modifica al file hosts di Android diviene effettiva immediatamente, senza bisogno di riavviare il device e nemmeno le singole app (basta un "ricarica" in Chrome, ad esempio)
Passo 9: Applicare altre modifiche
Da questa situazione, potrete continuare a modificare il file hosts tramite PC e lanciare il comando di "push" (Passo 8
) immediatamente. Al riavvio del device, però, la partizione /system/
verrà nuovamente montata in sola-lettura, motivo per cui dovrete poi ripetere anche il Passo 6
.