# [Off-topic] Gentoo en tablet con kernel Android

## Stolz

Llevo un par de días probando con éxito Gentoo instalado en mi tablet Android mediante chroot, es decir, el tablet inicia Android y luego conecto por SSH y mediante un par de comandos entro en un chroot Gentoo.

El caso es que la pantalla táctil del tablet falla frecuentemente y es desesperante por lo que me gustaría jubilarlo, reemplazando Android con Gentoo. El problema es que no tengo el código fuente del kernel original del fabricante por lo que, suponiendo que consiga compilar un kernel y arrancar el tablet con él,  dudo mucho que haga funcionar cosas como el wifi, gps, bluetooth, etc...

Por tanto me gustaría usar el kernel de android para iniciar mi Gentoo sin cargar ninguno de los programas de Android. Como a penas tengo idea de cómo funciona Android por dentro lo primero que me gustaría saber si es remotamente posible hacer lo que quiero.

En caso de ser posible ¿qué aproximaciones debería intentar?

AQUÍ se puede ver un diagrama del proceso de inicio de Android.

Mi idea inicial era directamente copiar el kernel de android y sus módulo a mi Gentoo pero no tengo ni idea de cómo reconfigurar el bootloader.

La otra forma que se me ocurre es reemplazar el proceso "init" de android por uno que arranque mi Gentoo (en vez de Zygote, Dalvik VM,...), pero de nuevo, ando perdido.

Como dato, tengo la posibilidad de instalar Android Gingerbread 2.3 o IceCreamSandwich 4.0.4 por si en alguno de los dos fuese más fácil de modificar.

¿es viable lo que quiero o mejor me olvido?

----------

## esteban_conde

Tengo que mirar esto que has probado, a lo mas que he llegado es a entrar por vnc a una debian preparada a la cual no aporté nada, e todas formas aunque entres por ssh seguirias usando el kernel de android en gentoo, de todas formas en el chroot verás si gentoo tiene activo algun kernel, supongo que funcionara uname -r o cosas de ese estilo, lo siguiente que se me ocurre es especulación pura si gentoo corre bien con un kernel android por ssh deberia poder hacerlo de la forma que tu quieres pero a todo el codigo java de android que hace que funcione casi todo tendrias que ponerlo a trabajar bajo gentoo o sustituirlo por algo (no se me ocurre qué) que haga ese trabajo.

El caso stolz es que vas a tener que currar un montón pero quien sabe a lo que puedes llegar y además siempre merecerá la pena intentarlo.

----------

## opotonil

No se si habrás visto estos posts de xda-developers:

[HOW-TO] Boot Debian with X11 and wifi from SD card. (Not chroot!)

http://forum.xda-developers.com/showthread.php?t=631389

Stock Gentoo on Nexus one.

http://forum.xda-developers.com/showthread.php?t=674063

No he tenido tiempo de leerlos a pesar de que me interesa el tema así que no se que tal estarán, espero que te ayuden y si consigues algo comenta.

Salu2.

----------

## Stolz

Muchas gracias por las respuestas.

Me he mirado los enlaces y aunque los tutoriales en sí no despejan directamente mi duda, los comentarios sí me han dado buenas pistas. Los tutoriales explican cómo ejecutar tu propio kernel, cosa que no quiero porque va a ser costoso de configurar y no me garantiza soporte de todo el hardware. Lo que yo busco es ir por la via fácil y usar el  kernel ya existente de mi Android, bien controlando el proceso desde el principio (copiando el kernel a mi Gentoo y arrancando desde él), bien "secuestrando" el arranque normal de Android para que una vez cargado el kernel y /dev seguir el proceso de arranque normal de mi Gentoo.

Sobre las pistas que me han dado: La primera es que con el comando fastboot puedes arrancar un kernel especificnado el "init", lo cual me puede servir aunque necesitaría un ordenador externo para poder arrancar Gentoo en el tablet.

```
fastboot -c 'root=/dev/dispositivo/de/tu/sdcard rw rootfs=ext2 init=/sbin/init rootwait noinitrd' boot zImage
```

Lo que no se es si el fastboot es algo estándard de todos los Android o solo funciona en el Nexus One.

La otra pista es este enlace que me puede servir para alternar el proceso de arranque. De momento sigo leyendo a ver qué saco.

----------

## opotonil

No se que tablet tienes pero si no puedes conseguir un Kernel Android para tu modelo directamente, quizás puedas utilizar uno de este proyecto/distro:

http://www.cyanogenmod.org/

Aquí tienes los modelos que soportan oficialmente:

http://wiki.cyanogenmod.org/w/Devices#vendor=;

En su repo de GitHub parece que tienen las fuentes del Kernel Android para varios modelos (filtra por kernel):

https://github.com/CyanogenMod

Salu2.

----------

## Stolz

Mi tablet es un Lenovo A1 pero insisto, no estoy interesado en absoluto en conseguir un kernel o compilar uno yo mismo. Ya tengo uno que es relativamente reciente (3.x), que soporta todo mi hardware y que funciona bien. Me refiero obviamente al kernel que viene de serie en mi tablet.

----------

## opotonil

En estos otros foros: http://www.slatedroid.com/topic/30524-running-a-linux-distribution-on-zenithink-zt280/

Parece que hacen lo que pretendes con una tablet Zenithink ZT280, parten de un kernel binario, que arranca con Uboot, al que le extraen el initrd para luego crear otro que ejecute /sbin/init y lo reensamblan otra vez. Pero bueno échale un ojo tu a ver si te parece útil, porque la verdad que yo me pierdo un poco.

Parece algo similar a lo que comentan en el enlace de antes para alternar el proceso de arranque.

Salu2.

----------

## gringo

no puedes usar un kernel "hecho para android" para cargar gentoo que yo sepa, porque es simplemente un kernel linux para lanzar un máquina java. 

Creo que un kernel android no sabe ni lo que es posix y creo que tampoco sabe lo que es un init clásico ni soporta la mitad de las virguerías que necesitas hoy en día para un kernel para una distro.

Lo del init es fácil porque lo puedes escribir tu pero vamos, creo que está jodido el tema aunque si lo consigues estaría mas que encantado en verlo  :Smile: 

Podrías mirar como lo han hecho los de ubuntu para el galaxy nexus, igual sacas algo en limpio de ahi. 

Si consigues que un kernel linux "clásico" cargue el siguiente problema es el soporte hardware ya que casi todo son binarios en el mundo android.

 *Quote:*   

> Lo que no se es si el fastboot es algo estándard de todos los Android o solo funciona en el Nexus One. 

 

que yo sepa si, tanto adb como fastboot son comunes a todos los android. 

Lo que si creo que pasa es que algunos fabricantes (HTC p.ej. ) "capan"  fastboot para que no pueda cargar cualquier cosa.

saluetes

----------

## Stolz

Bueno, pues tras consultarlo en el IRC me han comentado algo parecido a lo que dice gringo. Por lo que parece en versiones recientes de kernels normales (no Andorid) no hay problema es cargar el /init de Android, en cambio nadie me ha podido confirmar lo contrario, es decir cargar el /sbin/init normal de Gentoo desde un kernel Android. Tampoco me lo han podido desmentir, tan solo me han dicho que "no les suena que se pueda".

Así es que ahora me estoy centrando en mi otra opción; "secuestrar" el init.rc de Android. De momento ya he conseguido encontrar y descomprimir el init.rc. Ahora me toca investigar cómo convertirlo en una imagen u-boot y flashearlo en el tablet para sustituir el original. En principio solo voy a intentar lanzar el chroot sin alterar la ejecución normal de Android y si lo consigo intentaré matar todos los procesos Android que no sean el PID=1 antes de lanzar mi chroot 

Si hay progresos lo comentaré por aquí.

----------

## edgar_uriel84

Bueno, hasta hace poco tenía un atrix, que podía lanzar gentoo desde un kernel android, usando todos los recursos de un android pero si había un truculento chroot. Hasta donde tengo entendido si usas un kernel android para gentoo, no podrás arrancarlo mucho menos si es oficial, necesitas construir tu kernel, lo se también por la expericencia del atrix, dejo un enlace para que veas ese gentoo que use http://forum.xda-developers.com/showthread.php?t=1180800

Creo que lo mejor que puedes hacer es empezar a compilar un kernel que arranque un gentoo nativo, te llevara tiempo y seguro necesitaras testers pero es un buen proyecto, seguro encuentras apoyo.

----------

## Stolz

Ya lo tengo funcionado aunque todavía quedan cosas por pulir. 

Las instrucciones están en https://github.com/Stolz/linux-cheat-sheets/blob/master/Android/chroot_gentoo_en_android.md . He procurado que sean lo suficientemente genéricas para que sirvan a más gente.

Gracias a todos por la ayuda.

Saludozzzzzzzzzz

----------

