domingo, 1 de septiembre de 2013

Instalar Debian en SD Card en mk908

Hoy en día tenemos la oportunidad de tener mini-pc android con suficiente recursos como para correr un sistema linux con su entorno gráfico Gnome u otro que nos interese, en mi caso compre una Tronsmart MK908.



Este equipo tiene los siguientes recursos:

  • 2 GB de RAM DDR3
  • Rk3188 Quad Core 1.6ghz, max 1.8Ghz (Cortex-A9)
  • Quad Core Mali 400
  • On board NAND Flash 8G
  • Micro SD Card/ T-Flash(Maximum support 32GB)
  • WIFI support 802.11 b/g/n
  • Bluetooth v4.0
  • MINI HDMI Port
  • Mini USB,Support OTG/HOST ( USB port RJ45)

Enlace de compra en amazon: http://www.amazon.com/Tronsmart-MK908-Google-Android-RK3188/dp/B00CGYAGL6/ref=sr_1_1?ie=UTF8&qid=1378047748&sr=8-1&keywords=mk908

Ahora vamos a proceder a instalar debian en la Sd Card. Empecemos por hacer una partición al final de la memoria SD en formato EXT-4 y con nombre linuxroot, luego procedemos a montar la partición y a abrir una consola en ella para empezar a instalar. Esto lo podemos hacer con el particionador que deseemos.

Para hacer práctico el ejemplo la montaremos en una carpeta que crearemos en /mnt. (Esto lo corremos desde la terminal en super usuario SU)

mkdir /mnt/debianSD

El dispositivo cambia según la cantidad de discos por lo que deben averiguar cual es el dispositivo.

mount /dev/sdb1 /mnt/debianSD

En la terminal en modo super usuario (su) corremos el siguiente comando. (Recordemos que en --foreign podemos cambiar la distribución que nos plasca)

debootstrap --verbose --arch=armhf --foreign wheezy /mnt/debianSD http://ftp.de.debian.org/debian

Después que termine el proceso desmontamos la o las particiones para poder remover la memoria SD y la insertamos en el equipo. En el siguiente paso pueden tanto hacerlo desde el ordenador como directo desde el sistema Android con el comando adb shell que lo corremos usando el "Android SDK Tools" y el "Android SDK Platform-tools" (lo podemos descargar aqui http://developer.android.com/sdk/index.html).

Yo preferí correrlo desde el dispositivo, pero conectándole un teclado a mi MK908. Sea por cual sea el modo que decidieron proceder a terminar la instalación se tendrán que ejecutar los siguientes comandos para poder hacer lo que queremos.

Para poder ejecutar lo siguiente en el equipo necesitamos instalar una terminal en android (https://play.google.com/store/apps/details?id=jackpal.androidterm&hl=es-419).

Primero iniciamos en modo root.

su

Y ahora procedemos a preparar el entorno

export mnt=/system/debianSD
export PATH=/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export SHELL=/bin/bash

Procedemos a montar la partición para terminar de instalar. En caso de que mkdir no funcione pues solo montamos la partición de /system en modo escritura (mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system) esto puede que haga que Android reinicie, así que no se preocupen solo esperen que inicie de nuevo.

mkdir /system/debianSD
mount -t ext4 /dev/block/vold/179:2 /system/debianSD
busybox chroot $mnt

Con la ejecución del ultimo comando nos situamos dentro del sistema Debian en la memoria, por lo que la terminal ya no es Android sino Debian.

Muchos manuales que podrás encontrar en la red no te dirán lo siguiente, pues dentro de Debian debes correr el siguiente comando para poder activar los comandos básicos y terminar la instalación. Este comando debe ser corrido cada vez que entremos a Debian, pero automatizaremos esto más adelante.

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Una vez hecho la exportación del PATH procedemos a terminar de instalar.

/debootstrap/debootstrap --second-stage

Una vez completa vamos a agregar un repositorio y instalar lo que queremos. En /etc/apt/sources.list agrego

echo 'deb http://http.us.debian.org/debian/ wheezy main contrib non-free' > /etc/apt/sources.list
echo 'deb-src http://http.us.debian.org/debian/ wheezy main contrib non-free' > /etc/apt/sources.list

Adicionamos lo siguiente para entregar conexión a Internet

echo 'nameserver 8.8.8.8' > /etc/resolv.conf
echo '127.0.0.1 localhost' > /etc/resolv.conf

Ya en esta etapa hacemos exit para regresar a Android y automatizaremos la entrada a Debian con algunos scripts.

Este script lo ubicaremos en /system/bin/ con el nombre que queramos, en mi caso lo llame "debian". El contenido es el siguiente:

#!/system/bin/sh

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH
export TERM=linux
export HOME=/root
export SHELL=/bin/bash

mount -t ext4 /dev/block/vold/179:2 /system/debianSD
mount -t devpts /devpts /system/debianSD/dev/pts
mount -t proc /proc /system/debianSD/proc
mount -t sysfs /sysfs /system/debianSD/sys
rm -f /system/debianSD/etc/mtab
rm -rf /system/debianSD/tmp/*
rm -rf /system/debianSD/tmp/.X*
ln -s /proc/mounts /system/debianSD/etc/mtab
busybox chroot /system/debianSD /bin/bash

Este paso recomiendo hacerlo en una pc y copiarlo a la memoria para luego copiarlo a el sitio correcto. En caso de tener el script listo en la memoria lo copian de la siguiente manera

cp /mnt/sdcard/debian /system/bin/

Con esto cuando queremos entrar a Debian solo debemos abrir la terminar en android y escribir debian y con esto entramos.

Con esto termina la instalación, pero solo estamos en modo consola, por lo que vamos a instalar algunas cosas mas en nuestro Debian para poder verlo de forma gráfica.

Dentro de Debian ejecutamos lo siguiente para instalar un pequeño servidor de VNC.

apt-get update
apt-get install tightvncserver icewm xterm

Una vez instalador tenemos que iniciar el servidor y lo hacemos con el siguiente comando y la geometría la cambiamos a la que tenemos en el android.

vncserver -geometry 1280x720

Si queremos matarlo solo ejecutamos

vncserver -kill :1

Instalamos un escritorio ligero para mejor rendimiento, pero es decisión nuestra elegir el escritorio.

apt-get install lxde

Con esto solo queda tener un cliente en Android para poder visualizar nuestro sistema.

https://play.google.com/store/apps/details?id=com.iiordanov.freebVNC&hl=es-419

La configuración para el cliente es la siguiente:

Nombre conexión: Debian
Contraseña: La que ponemos cuando configuramos el vnc
Dirección: localhost
Puerto: 5901
Color formato: 24-bit color (4bpp)

Ahora queda la automatización de nuestro PATH que siempre se pierde y esto lo hacemos con lo siguiente (esto se hace dentro de Debian):

cd
echo 'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' > .bashrc

Algunas fotos de Debian corriendo.



Para aquellos que no les gusta hacer particiones en su SD Card, tan solo deben usar un disco virtual (son esos archivos img que sirven como discos) e instalar el Debian hay y en vez de montar la partición solo montan esa img y después el proceso es igual.

Si quieren crear su propio disco solo deben usar dd if=/dev/zero of=miDebian.img bs=1024M count=10 o si prefieren pueden hacerlo con un programa para ello. En caso que no quieran un archivo que tenga tamaño fijo, pueden usar offset para crear esas imágenes que crecen según el sistema lo necesita.


No hay comentarios.:

Publicar un comentario