Como instalar Gentoo en un telefono Nexus 5

android
Recientemente llego a mis manos un teléfono Nexus 5 que cuenta con hardware bastante interesante (y una bocina que convierte a Manowar en zarabanda locochona) por lo que decidí aprovecharlo e instalarle la mejor distribución Linux del universo, Gentoo Linux.

Para instalar Gentoo en un teléfono con Android, es necesario apoyarse de un proyecto desarrollado durante el GSOC-2013 denominado Gentoo RAP. RAP es una variante de Gentoo prefix que permite utilizar los ejecutables de Gentoo en paralelo a los ejecutables de Android en una ruta diferente a /, con lo que es posible utilizar Gentoo sin todas las limitaciones de un chroot como el que se crea con LinuxOnAndroid y que dicho sea de paso no soporta Gentoo.

La instalación en Android puede realizarse de dos formas, 1) haciendo bootstrap (compilando un stage desde 0 en el dispositivo)  o 2) descargando un pre-compilado para ARM-v7 como se indica en la wiki. En mi caso utilicé el segundo método, el cual traduzco/comento en esta guiá.

1) Prerrequisitos
*  Asegurarse que tenemos el bootloader liberado y con acceso root (acá dos guiás para obtener root);
* Instalar alguna implementación de busybox (yo recomiendo esta);
* De preferencia utilizar superuser como administrador de root;
* Habilitar el acceso ssh al dispositivo (recomiendo esta aplicación) o instalar en el dispositivo un emulador de terminal (yo recomiendo este).

2) Descomprimiendo el stage

El primer paso es obtener root

1
$ su

Luego procedemos a descargar el stage de Gentoo en cualquiera de los mirrors del proyecto, basta con ejecutar el siguiente comando que convenientemente realizó en /data

1
busybox wget http://gentoo.c3sl.ufpr.br/experimental/prefix/rap/gentoo.tar.bz2

Una vez con el stage listo procedemos a descomprimirlo

1
busybox bzip2 -dc gentoo.tar.bz2 | busybox tar -xf - -C /data

Este paso deberia crear una carpeta llamada /data/gentoo que es la base de nuestro Gentoo prefix.

3) Hacks previos a usar el prefix

Una vez listo el prefix es necesario que  algunos ejecutables clave para compilar sean visibles, especificamente env, sh y pwd, para esto se pueden utilizar los incluidos en el prefix mediante  enlaces simbólicos, primero remontamos / con permisos de escritura

1
/system/bin/mount -o remount,rw /

Y creamos los enlaces simbólicos

1
2
mkdir /bin; cd /bin; ln -s /data/gentoo/bin/sh; ln -s /data/gentoo/bin/pwd
mkdir -p /usr/bin; cd /usr/bin; ln -s /data/gentoo/usr/bin/env

Por ultimo también es recomendable crear /tmp ya que algunos ebuilds lo utilizan para compilar.

1
mkdir /tmp; /system/bin/mount -t tmpfs tmpfs /tmp

4) Iniciando nuestro prefix

Una vez listo el sistema, procedemos a iniciar nuestro prefix ejecutando el script en /data/gentoo/startprefix, si todo sale bien pues bienvenidos a Gentoo!

2013-12-08 18.35.20

5) Usar el prefix como root

A menos que realicemos un chmod sobre /data/gentoo, por defecto la instalación y portage solo podrá ser usada por root. No entanto algunas implementaciones de su para Android como SuperSu, utilizan una shell diferente para los usuarios normales y para root, lo cual podemos verificar mediante la variable de entorno $SHELL.

2013-12-08 18.46.55

Si este fuera el caso, lo más probable es que al iniciar el prefix como root el script falle, sin embargo basta con sobreescribir la variable $SHELL para usar la shell por defecto que en el caso de Android es /system/bin/sh

1
export SHELL=/system/bin/sh

Y listo, ahora podemos utilizar Gentoo con todo su poder

2013-12-08 18.52.46

Es conveniente que antes de cualquier cosa actualicemos portage y agreguemos el overlay de heroxbd el principal desarrollador del port.

1
2
emerge --sync
layman -s heroxbd

3 Replies to “Como instalar Gentoo en un telefono Nexus 5”

  1. Usando Firefox 26.0 Firefox 26.0 en GNU/Linux x64 GNU/Linux x64

    Pues a mi me sirve para tener ejecutables en linea de comandos como htop, vim y otros que al usar el telefono en un monitor externo son de bastante ayuda

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *