Como ya se ha señalado, debe instalar un chroot con capacidad ARM en su dispositivo e instalar todos los paquetes necesarios en ese chroot. Sin embargo, hacerlo en su directorio personal desperdicia mucho espacio valioso. En cambio, se puede hacer en su tarjeta SD usando una computadora que se ejecuta en un sistema operativo Linux apropiado (probado en Linux Mint 17 y Ubuntu Trusty). Como no encontré ninguna información sobre esto en ningún otro lugar, la puse aquí como respuesta a una vieja pregunta.
Las siguientes instrucciones suponen que desea instalar un debian jessie chroot en el directorio jessie.
Crear y completar el archivo de imagen en una computadora de escritorio
Crear un archivo de imagen vacío
Para crear una imagen de 1GB llamada IMAGE.img en el directorio de trabajo actual, haga lo siguiente:
dd if=/dev/zero of=IMAGE.img bs=1G count=1
Tenga en cuenta que la B en GB se omite. "if" significa "archivo de entrada", "de" para "archivo de salida" y "bs" para "tamaño de bloque".
Existen comandos más eficientes, pero que yo sepa, solo funcionan en ciertos tipos de sistemas de archivos. Este también funciona en una tarjeta SD o tempfs. Tenga en cuenta el uso de / dev / zero y no / dev / random o / dev / urandom, ya que eso tomaría mucho más tiempo y demoraría mucho más la transferencia de la imagen entre dispositivos más adelante.
Crear un sistema de archivos en la imagen
Sin el sistema de archivos, el teléfono no podría almacenar ningún dato en la imagen. Sin un sistema de archivos, aún no puede montar la imagen en un directorio, solo en un dispositivo de bloque.
Este comando bash generará el siguiente dispositivo de bucle vacío en la variable LOOP
:
$LOOP=$(sudo losetup -f)
A continuación, asigne la imagen a un dispositivo de bloque:
sudo losetup $LOOP IMAGE.img
A continuación, cree el sistema de archivos ext4 en él:
sudo mkfs -t ext4 $LOOP
A continuación, separe la imagen del dispositivo de bucle:
sudo losetup -d $LOOP
Si obtiene errores de comando no encontrado, simplemente instale los programas que faltan.
Monte el archivo de imagen en la computadora para acceder a él
Ahora, cree un directorio temporal en el directorio de trabajo:
mkdir jessie
y monte el archivo de imagen IMAGE.img en él:
sudo mount -o loop IMAGE.img $(pwd)/jessie
El comando pwd
se asegurará de darle a mount una ruta absoluta a su directorio de trabajo actual.
Rellenar la imagen con el nuevo sistema operativo con qemu-debootstrap
El siguiente paso será usar qemu-debootstrap para descargar los archivos necesarios. Esto es fácil si qemu-debootstrap está disponible, como es el caso en Ubuntu y sistemas operativos derivados. Si obtiene errores de comando no encontrado al ejecutar
qemu-debootstrap --help
, intente instalar el paquete apropiado, que se puede hacer en Ubuntu a través de:
sudo apt-get install qemu-user-static
Para descargar todos los archivos necesarios y preparar el nuevo sistema operativo, ejecute el siguiente comando:
sudo qemu-debootstrap --arch=armhf jessie ./jessie http://http.debian.net/debian
Tenga en cuenta que el primero jessie
representa la versión del sistema operativo, mientras que el segundo jessie
representa el directorio donde se instalarán los archivos. Ahora puede desmontar la imagen ya que el resto del trabajo debe realizarse en el teléfono. Hazlo a través de:
sudo umount $(pwd)/jessie
Si no puede instalar qemu-debootstrap, consulte la siguiente sección.
Rellenar la imagen con el nuevo sistema operativo sin qemu-debootstrap
Omita esta sección si tiene qemu-debootstrap disponible. Sin embargo, aún necesitará una cinta antirrebote nativa para su arquitectura. Si esto resulta ser armhf, solo use la línea de comando anterior pero reemplace qemu-debootstrap
por
debootstrap
. Si no, sigue esta sección.
Para descargar todos los archivos necesarios para el nuevo sistema operativo, ejecute el siguiente comando:
sudo debootstrap --arch=armhf --foreign jessie ./jessie \
http://http.debian.net/debian
Ahora puede desmontar la imagen ya que el resto del trabajo debe realizarse en el teléfono. Hazlo a través de:
sudo umount $(pwd)/jessie
Transfiere la imagen al teléfono
Ahora mejor cree un archivo tar a partir de esto que luego copie en su teléfono. No importa si el archivo se coloca en la tarjeta SD o en el almacenamiento interno. Cree el archivo en el escritorio usando:
tar -cvzf jessie.tar.gz IMAGE.img
Ahora, en su teléfono, active el soporte ssh para copiar la imagen. También puede hacerlo usando un cable USB. Dado que el servidor ssh se reinicia en cada reinicio, inicie el servicio ssh en el teléfono a través de:
sudo service ssh start
A continuación, copie la imagen a través de:
scp jessie.tar.gz phablet@ubuntu-phablet:$COPYDIR
donde la variable COPYDIR
contiene el directorio donde se almacenará la imagen. Este comando asume que su nombre de usuario en el teléfono es phablet y el nombre de host del teléfono es ubuntu-phablet. Puede averiguarlo emitiendo echo $USER
y echo $HOSTNAME
por teléfono, respectivamente.
Ahora solo tiene que extraer el archivo donde quiera que resida la imagen. Suponga que el directorio donde desea que se ubique la imagen está almacenado en la variable IMAGEDIR
. Extraiga la imagen allí mediante el comando bash:
( cd $IMAGEDIR; tar -xvzf $COPYDIR/jessie.tar.gz; )
Ahora puede eliminar el archivo:
rm $COPYDIR/jessie.tar.gz
Finalizando y usando la imagen en el teléfono
Si no activó el servidor ssh en el teléfono, hágalo ahora a través de:
sudo service ssh start
A continuación, monte su imagen en un directorio de su elección (en este caso "jessie"):
sudo mount -o loop $IMAGEDIR/IMAGE.img $(pwd)/jessie
Ahora, ingrese su chroot por primera vez a través de:
ssh localhost "sudo chroot $(pwd)/jessie /bin/bash"
Si tenía qemu-debootstrap disponible en su computadora, ya está. Use los 2 comandos anteriores para conectarse a su chroot. Si no, aún debe ejecutar el siguiente comando una vez que esté dentro de su chroot, para configurar correctamente el sistema operativo:
/debootstrap/debootstrap --second-stage
Resumen de cómo acceder al chroot
Si seguiste los pasos anteriores, deberías poder acceder a tu chroot usando este simple script en el teléfono:
#!/bin/bash
sudo service ssh start
ssh localhost "sudo chroot jessie /bin/bash"
Primero debe ingresar a su propio teléfono desde el teléfono debido a las restricciones de aparición de la aplicación de terminal. La aplicación de terminal solo puede ejecutar archivos binarios en ciertas ubicaciones y ni su directorio de inicio ni la tarjeta SD están entre ellos. El servicio ssh, sin embargo, no tiene tales restricciones.