Android en OpenSolaris con BrandZ

15/11/2007

Con la siguiente receta, seremos capaces de ejecutar el emulador de Android en OpenSolaris. Pero no nos limitaremos sólo a ésto, seremos capaces de ejecutar programas X11 de Linux en nuestro escritorio OpenSolaris utilizando BrandZ o ‘zonas de marca lx’, unas zonas especialmente diseñadas para ejecutar una distribución completa de Linux.

Android in OpenSolaris

Para comenzar necesitaremos una distro reciente, por ejemplo Solaris Express, OpenSolaris Developer Preview, Belenix, o la que prefiráis, pero a ser posible moderna. También necesitaremos el tarball de CentOS, el sistema Linux que vamos a instalar en nuestra zona brandZ y finalmente, el software de Android.

En éste caso, estoy utilizando Solaris Express Developer Edition actualizado al build 76 de Nevada. BrandZ (zonas lx) ya está integrado en mi sistema, así que sólo tengo que empezar a configurar las zonas. Si tu distro OpenSolaris es diferente a SXDE o SXCE, no te preocupes, los pasos deberían ser muy similares.

Para que todo funcione, necesitaremos hacer uso de una red privada que pueda conectarse a la zona lx, y que dicha zona además haga uso de nuestro sistema de ficheros ($HOME). También compartiremos el mismo usuario y UID que el nuestro habitual en la zona global. Para comunicar la zona global (nuestro escritorio) con la zona lx (CentOS Linux), utilizaremos SSH.

Aseguraos que tenéis un interfaz de red activo y funcionando (quizás tengáis NWAM en funcionamiento, ojo), indiferentemente de si tenemos acceso a Internet, podemos utilizar los mismos rangos para que todo resulte más sencillo, pero no se asegura que la zona con Linux pueda acceder a Internet.

Mi interfaz de red es e1000g0, para ver cual estás empleando tú, puedes ejecutar los comandos ifconfig -a y/o dladm show-link . Si usas DHCP para autoconfigurar tu interfaz de red, es una buena idea saber qué IP y que rangos estamos utilizando en nuestra red para configurar la zona lx. Por ejemplo yo estoy utilizando la IP 192.168.0.15 con máscara 255.255.255.0, para que tengáis una referencia. Para configurar manualmente vuestro interfaz: (como root) ifconfig -a e1000g0 192.168.0.25 netmask 255.255.255.0 up.

Para instalar CentOS Linux en nuestra zona lx, necesitaremos al menos giga y medio de disco (alrededor de 1.3G) libres. Si estamos utilizando ZFS para almacenar nuestras zonas, se creará un sistema ZFS concreto para nuestra zona. La zona lx tendrá la IP 192.168.0.16, apúntala pues posteriormente emplearemos ésta IP para el mecanismo de comunicación con la zona global.

(root@endeavour /) # zonecfg -z linux
linux: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:linux> create -t SUNWlx
zonecfg:linux> set zonepath=/zonas/linux
zonecfg:linux> set autoboot=false
zonecfg:linux> add net
zonecfg:linux:net> set address=192.168.0.16
zonecfg:linux:net> set physical=e1000g0
zonecfg:linux:net> end
zonecfg:linux> add fs
zonecfg:linux:fs> set dir=/home/iban
zonecfg:linux:fs> set special=/home/iban
zonecfg:linux:fs> set type=lofs
zonecfg:linux:fs> end
zonecfg:linux> commit
zonecfg:linux> exit
(root@endeavour /) #

Terminados éstos pasos, debemos instalar la zona utilizando el tarball de CentOS que hemos bajado antes. En mi caso, lo tengo en /home/iban/Downloads :

(root@endeavour /) # zoneadm -z linux install -d /home/iban/Downloads/centos_fs_image.tar.bz2
A ZFS file system has been created for this zone.
Installing zone 'linux' at root directory '/zonas/linux'
from archive '/home/iban/Downloads/centos_fs_image.tar.bz2'

This process may take several minutes.

Setting up the initial lx brand environment.
System configuration modifications complete.
Setting up the initial lx brand environment.
System configuration modifications complete.

Installation of zone 'linux' completed successfully.

Details saved to log file:
"/zonas/linux/root/var/log/linux.install.861.log"
(root@endeavour /) #

Ahora arrancamos la zona linux con el comando zoneadm -z linux boot y creamos un usuario con las mismas características que el nuestro de la zona global, consultad la instruccion id en un terminal para saber el UID, grupo, etc

# useradd -u 105 -M -d /home/iban iban
# passwd iban
Changing password for user iban.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
# printf '10.10.10.3 linux\n' >> /etc/hosts
# printf 'NETWORKING="yes"\n' > /etc/sysconfig/network
# printf 'HOSTNAME=linux\n' >> /etc/sysconfig/network
# cat /etc/hosts
# init 6

La zona se reiniciará automáticamente, por lo que pasamos a configurar el mecanismo de comunicación SSH entre la zona Linux y la zona global:

(iban@endeavour /) $ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/iban/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/iban/.ssh/id_rsa.
Your public key has been saved in /home/iban/.ssh/id_rsa.pub.
The key fingerprint is:
a7:07:ee:c7:57:79:4c:bc:ca:f4:4c:49:cc:37:59:76 iban@endeavour
(iban@endeavour /) $ cp .ssh/id_rsa.pub .ssh/authorized_keys

A partir de éste punto, ya deberíamos poder ejecutar binarios de Linux en nuestro escritorio. Para poder comprobarlo, movemos el comprimido con Android (o el software Linux que sea) a nuestra escritorio (desde la zona global).

Ahora entramos en la zona Linux (zoneadm -z linux boot), comprobamos que nuestro usuario y contraseñas funcionen bien y que tenemos los permisos adecuados. Haciendo un chown -R nombreusuario:staff /home/usuario desde nuestra zona Linux podría prevenir problemas posteriores. Así mismo, descomprimimos Android con nuestro usuario para evitar problemas de permisos, resultando un directorio llamado ‘android_sdk_linux_m3-rc20a’.

Desde nuestro escritorio, abrimos un terminal y ejecutamos lo siguiente:

ssh -X 192.168.0.16 /home/iban/android_sdk_linux_m3-rc20a/tools/emulator

SSH debe pedirnos nuestro usuario de contraseña del usuario en la zona lx , después de eso, el emulador de Android debería aparecer en nuestra pantalla.

Android in OpenSolaris

Todo lo que necesitéis ejecutar de Linux en vuestro escritorio, dejadlo en vuestro $HOME de la zona lx y ejecutadlo con éste método. También sería más eficaz hacerse un sencillo shellscript para ejecutar fácilmente binarios de Linux.

Terminado todo éste proceso, tendremos una zona con Linux (con todo lo que conlleva) y el software relacionado que no podíamos ejecutar en OpenSolaris. A pesar de todo lo que nos ha llevado, ahora no será necesario reiniciar nuestro ordenador para utilizar algún programa concreto de Linux :-D

About these ads

Una respuesta to “Android en OpenSolaris con BrandZ”


  1. Muy bueno el post tio ;-)


Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: