Come è già stato sottolineato, è necessario installare un chroot compatibile con ARM sul dispositivo e installare tutti i pacchetti richiesti in quel chroot. Tuttavia, farlo nella directory home spreca molto spazio prezioso. Invece, può essere fatto sulla tua scheda SD usando un computer che gira su un sistema operativo Linux appropriato (testato su Linux Mint 17 e Ubuntu Trusty). Dato che non ho trovato alcuna informazione in merito altrove, l'ho inserito qui come risposta a una vecchia domanda.
Le seguenti istruzioni presuppongono che si desideri installare un debian jessie chroot nella directory jessie.
Creazione e popolamento del file immagine su un computer desktop
Creazione di un file di immagine vuoto
Per creare un'immagine da 1 GB chiamata IMAGE.img nella directory di lavoro corrente, eseguire:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Si noti che la B in GB è esclusa. "if" sta per "file di input", "of" per "file di output" e "bs" per "dimensione del blocco".
Esistono comandi più efficienti là fuori, ma quelli funzionano solo su alcuni tipi di file system, per quanto ne so. Questo funziona anche su una scheda SD o un tempfs. Notare l'uso di / dev / zero e non / dev / random o / dev / urandom in quanto ciò richiederebbe molto più tempo e richiederebbe molto più tempo per trasferire l'immagine tra i dispositivi in un secondo momento.
Creazione di un file system sull'immagine
Senza il file system, il telefono non sarebbe in grado di memorizzare alcun dato sull'immagine. Senza un file system, non è ancora possibile montare l'immagine su una directory, ma solo su un dispositivo a blocchi.
Questo comando bash genererà il successivo dispositivo a ciclo vuoto nella variabile LOOP
:
$LOOP=$(sudo losetup -f)
Quindi, assegnare l'immagine a un dispositivo a blocchi:
sudo losetup $LOOP IMAGE.img
Quindi, crea il file system ext4 su di esso:
sudo mkfs -t ext4 $LOOP
Quindi, staccare l'immagine dal dispositivo loop:
sudo losetup -d $LOOP
Se ricevi errori di comando non trovato, installa semplicemente i programmi mancanti.
Montare il file di immagine sul computer per accedervi
Ora, crea una directory temporanea nella directory di lavoro:
mkdir jessie
e montare il file di immagine IMAGE.img su di esso:
sudo mount -o loop IMAGE.img $(pwd)/jessie
Il comando pwd
assicurerà di assegnare a mount un percorso assoluto per la directory di lavoro corrente.
Popolamento dell'immagine con il nuovo sistema operativo con qemu-debootstrap
Il prossimo passo sarà usare qemu-debootstrap per scaricare i file necessari. Questo è facile se qemu-debootstrap è disponibile come nel caso di Ubuntu e dei sistemi operativi derivati. Se ricevi errori di comando non trovati durante l'esecuzione
qemu-debootstrap --help
, prova a installare il pacchetto appropriato, che può essere fatto su Ubuntu tramite:
sudo apt-get install qemu-user-static
Per scaricare tutti i file richiesti e preparare il nuovo sistema operativo, eseguire il comando seguente:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
Si noti che il primo jessie
rappresenta la versione del sistema operativo mentre il secondo jessie
indica la directory in cui devono essere installati i file. Ora è possibile smontare l'immagine poiché il resto del lavoro deve essere eseguito sul telefono. Fallo tramite:
sudo umount $(pwd)/jessie
Se non è possibile installare qemu-debootstrap, consultare la sezione successiva.
Popolamento dell'immagine con il nuovo sistema operativo senza qemu-debootstrap
Salta questa sezione se hai qemu-debootstrap disponibile. Tuttavia, avrai comunque bisogno di un debootstrap nativo per la tua architettura. Se questo sembra essere armhf, basta usare la riga di comando sopra ma sostituire qemu-debootstrap
con
debootstrap
. In caso contrario, seguire questa sezione.
Per scaricare tutti i file richiesti per il nuovo sistema operativo, eseguire il comando seguente:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
Ora puoi smontare l'immagine poiché il resto del lavoro deve essere fatto al telefono. Fallo tramite:
sudo umount $(pwd)/jessie
Trasferisci l'immagine sul telefono
Ora è meglio creare un archivio tar da questo che poi copiare sul telefono. Non importa se l'archivio è inserito nella scheda SD o nella memoria interna. Crea l'archivio sul desktop usando:
tar -cvzf jessie.tar.gz IMAGE.img
Ora, sul tuo telefono, attiva il supporto ssh per copiare l'immagine. Puoi anche farlo usando un cavo USB. Poiché il server ssh viene reimpostato ad ogni riavvio, avviare il servizio ssh sul telefono tramite:
sudo service ssh start
Quindi, copia l'immagine tramite:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
dove la variabile COPYDIR
contiene la directory in cui deve essere memorizzata l'immagine. Questo comando presuppone che il tuo nome utente sul telefono sia phablet e il nome host del telefono sia ubuntu-phablet. Puoi scoprirlo sia emettendo echo $USER
che echo $HOSTNAME
al telefono, rispettivamente.
Ora devi solo estrarre l'archivio dove vuoi che risieda l'immagine. Supponiamo che la directory in cui si desidera posizionare l'immagine sia memorizzata nella variabile IMAGEDIR
. Estrai l'immagine lì tramite il comando bash:
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Ora potresti rimuovere l'archivio:
rm $COPYDIR/jessie.tar.gz
Finalizzare e utilizzare l'immagine sul telefono
Se non hai acceso il server ssh sul telefono, fallo ora tramite:
sudo service ssh start
Successivamente, monta l'immagine su una directory di tua scelta (in questo caso "jessie"):
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
Ora inserisci la tua chroot per la prima volta tramite:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
Se avevi qemu-debootstrap disponibile sul tuo computer, hai finito. Utilizzare i 2 comandi precedenti per connettersi al chroot. In caso contrario, è necessario eseguire il comando seguente una volta all'interno del chroot, al fine di configurare correttamente il sistema operativo:
/debootstrap/debootstrap --second-stage
Riepilogo di come accedere al chroot
Se hai seguito i passaggi precedenti, dovresti essere in grado di accedere al tuo chroot usando questo semplice script sul telefono:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
Devi prima ssh nel tuo telefono dal telefono a causa delle restrizioni apparmor dell'app terminale. L'app del terminale è autorizzata a eseguire binari solo in determinate posizioni e né la tua home directory né la scheda SD sono tra quelle. Il servizio ssh, tuttavia, non ha tali restrizioni.