GLG Programs fa uso di cookie per migliorare l'esperienza di navigazione degli utenti, ma non per tracciarne un profilo. Proseguendo nella navigazione, si accetta implicitamente l'utilizzo dei cookie.
[OK]Note legaliNon mi importa
Logo GLGPrograms Logo GLGPrograms

Arch Linux su Android

Messaggi degli initscripts all'avvio del sistema initscripts mentre preparano l'ambiente di lavoro per Arch Linux in chroot
Questa guida, di Dicembre 2012, fa uso di initscripts, e non funziona con il nuovo sistema d'avvio systemd

Introduzione

E così avete acquistato il vostro nuovo smartphone, rigorosamente con Android perché Android è Linux, immaginando di fare un buon acquisto, di poter installare moltissime app gratuitamente, di avere sempre a portata di mano la vostra postazione GNU... e poi dopo solo due giorni di utilizzo vi siete accorti che, sarà anche Linux, ma di GNU c'è ben poco.
Così, intenzionati a riprendervi la vostra libertà, vi siete messi alla ricerca di un modo per installare una qualche distribuzione GNU/Linux sul vostro smartphone, e avete scoperto cose a dir poco imbarazzanti: acquisire i privilegi di root? Flashare la ROM? Perdere la garanzia sul telefono nuovo? Dover usare programmi per Windows??? Decisi a continuare ad utilizzare il vostro telefono come, appunto, telefono e non come banco di prova, sprovvisti di una scheda telefonica d'emergenza, avete quindi abbandonato l'idea di poter vivere la vera esperienza Linux sul vostro smartphone.
Ma fortunatamente siete capitati qua, e avete scoperto che, in fondo, il compromesso giusto tra qualità e rischio c'è. Ecco quindi la mia guida su come utilizzare Archlinux in chroot su Android, in gran parte ispirata al lavoro di a Developer with Opinions, a parte qualche punto che non si conciliava bene col mio modus operandi e che quindi ho voluto cambiare.
Nota bene: continuate la lettura e la messa in pratica di questa guida a vostro rischio e pericolo. Non mi ritengo responsabile dei danni derivati a cose o persone causati dall'utilizzo di questa guida. Detto questo, iniziamo.

Il metodo

Supponiamo di avere l'immagine di un disco, dentro la quale abbiamo installato il nostro sistema. Per poter usare il sistema che c'è installato, sarà sufficiente montare l'immagine da qualche parte nel filesystem, e effettuare il chroot. Niente di più semplice!

Preparazione dell'ambiente di lavoro

Poiché su un sistema Linux il chroot può essere fatto solamente dall'utente root, sarà comunque necessario acquisire i privilegi di amministratore sul vostro smartphone, ovvero quello che i profani chiamano fare il root. Almeno nella maggior parte dei casi, il root invalida la garanzia dello smartphone.
Sebbene sia un'operazione molto delicata per il vostro telefono, è estremamente facile da mettere in pratica per voi: basterà seguire una delle tante guide che si trovano in giro sulla rete; per esempio, se avete un Samsung Galaxy Y Pro, potete seguire questa. Per il momento possiamo comunque continuare anche senza privilegi di amministrazione.

Colleghiamo quindi il nostro smartphone (o la sua scheda di memoria) al nostro computer, e creiamo la nostra immagine disco:

$ dd if=/dev/zero of=arch.img bs=1M count=800

Questo comando crea un file vuoto arch.img di 800 MB, una dimensione ragionevole per installare il nostro sistema. Adesso creiamo un filesystem sull'immagine, cosicché possiamo montarla e possiamo lavorarci, come se fosse un normalissimo disco:

$ mkfs.ext2 arch.img

Android per ora riconosce solo vfat e ext2, quindi noi ovviamente scegliamo di utilizzare ext2 per la nostra immagine. Probabilmente verremo avvertiti che quello su cui stiamo operando non è un disco vero e proprio, ma possiamo ignorare questo messaggio.
Montiamo quindi l'immagine da qualche parte nel nostro filesystem, per esempio:

# mount -t ext2 arch.img /mnt

Se non la monta, date un'occhiata a questa pagina che spiega dettagliatamente tutti i passaggi tecnici per creare un'immagine disco.

Installazione dei binari

Una volta montata l'immagine, è necessario metterci dentro il sistema: dal sito archlinuxarm.org reperiamo quindi i binari adatti al nostro smartphone, in formato .tar.gz.
Per conoscere l'architettura del nostro dispositivo, apriamo un terminale su di esso e diamo:

cat /proc/cpuinfo
Il mio smartphone, per esempio, dice Processor: ARMv6-compatible processor rev 5 (v 61), quindi evidentemente devo scaricare i binari per un ARMv6.
Se, in seguito, utilizzando il sistema, riscontrassimo errori come dei Segmentation fault, allora l'architettura non è compatibile, e sarà quindi una buona idea scaricare un'altra versione di binari.

Ottenuti i binari, per scongiurare il pericolo di aver perso qualcosa per strada, calcoliamo il loro hash md5. In caso di esito positivo, spostiamoli nella cartella in cui è montata la nostra immagine, nel nostro caso /mnt, e scompattiamo l'archivio:

# cd /mnt
# tar -xzvf ArchLinuxARM-oxnas-latest.tar.gz
Nel giro di qualche decina di secondi dovrebbe aver finito; a questo punto il sistema è installato: possiamo rimuovere l'archivio, e configurare qualche file di sistema che ci tornerà utile.

Configurazione del sistema

Per poter utilizzare il sistema è necessario aggiungere i seguenti comandi al file etc/profile della nostra immagine:

export TERM=xterm
export HOME=/root
Attenzione a non modificare il file /etc/profile del vostro sistema: lavorate solamente sui file nell'immagine!
Assicuriamoci anche dell'esistenza di alcune cartelle importanti, e nel caso in cui non esistano, creiamole:
# mkdir -p proc
# mkdir -p dev
# mkdir -p sys
Opzionalmente diamo anche un nome al nostro sistema, inserendolo nel file etc/hostname.

Avvio del sistema

Ora siamo pronti: smontiamo l'immagine dal nostro computer, scolleghiamo lo smartphone (o rimettiamo la scheda di memoria dentro di esso) e, spostandoci ovviamente sul nostro Android, avviamo Arch.
Apriamo un terminale, creiamo un punto di mount, e poi diventiamo root:

$ mkdir archlinux
$ su
Android ci chiederà se siamo sicuri, e noi gli diciamo di sì. Una volta amministratori, montiamo l'immagine...
# mknod /dev/loop256 b 7 256
# losetup /dev/loop256 arch.img
# mount -t ext2 /dev/loop256 archlinux
...tutte le altre cartelle necessarie...
# mount -o bind /dev/ archlinux/dev
# mount -t proc /proc/ archlinux/proc
# mount -t sysfs /sys/ archlinux/sys
...e effettuiamo il chroot:
# chroot archlinux /bin/bash

Se tutto è andato a buon fine, il prompt della bash dovrebbe apparire sullo schermo, in attesa di comandi. Facciamo finta di essere PID=0 (cioè init) e avviamo gli script di caricamento:

 # /etc/rc.sysinit
# /etc/rc.multi
# . /etc/profile
Con molta probabilità, verranno notificati degli errori, qualcosa andrà sicuramente storto, ma nel complesso il sistema dovrebbe avviarsi. Abbiate pazienza (al massimo uno o due minuti) e quando sarà comparso di nuovo il prompt, il vostro sistema sarà finalmente pronto per ricevere i vostri comandi. Consiglio vivamente di creare uno script che effettui automaticamente queste operazioni.
Da ora in poi, potete iniziare ad utilizzare Arch come sul vostro computer: buon divertimento!

Ulteriori accorgimenti

Home page di Google visualizzata col browser testuale elinks Home page di Google visualizzata tramite il browser testuale elinks

Poiché necessiteremo di collegarci ad Internet per installare nuovi programmi, apriamo il file /etc/resolv.conf e modifichiamo il suo contenuto con:

nameserver 208.67.222.222
nameserver 208.67.220.220
In alternativa, se Android e la vostra rete lo consentono, attiviamo il wifi, e diamo
dhcpcd eth0
che assegnerà automaticamente un indirizzo IP e dei server DNS alla scheda di rete virtuale eth0.
Pagina scritta da

Hai una domanda? Scrivici!
Questa pagina ti è piaciuta? Condividila!
Share on Facebook Share on Google+ Share on linkedin