Posts Tagged ‘brandz’

Android en OpenSolaris con BrandZ

15 Noviembre,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

BrandZ integrado en snv49 (por fín)

13 Octubre,2006

Hace bastante tiempo os hablé de BrandZ, y aunque lo tenía un poco abandonado desde hace unos de meses, sigo bastante interesado en éste proyecto. Sobre todo para hacer pruebas con SlimServer, que aunque funciona también sobre Solaris, me preguntaba como lo haría en un contenedor Linux en la misma máquina.

Recordad que BrandZ sirve para correr zonas Linux dentro de Solaris, lo que significa que podremos ejecutar binarios Linux y además emplear tecnologias como ZFS y DTrace.

Hoy he podido comprobar que en Solaris Express snv_49 ya está todo integrado y la verdad es que funciona de maravilla. Como en mi caso quería utilizar la tarjeta de sonido de la máquina, añadiremos también los atributos de audio:

# zonecfg -z gentoolinux
gentoolinux: No such zone configured

Use 'create' to begin configuring a new zone.

zonecfg:gentoolinux> create -t SUNWlx

zonecfg:gentoolinux> set zonepath=/mnt/disco2/pruebaszonas/gentoolinux

zonecfg:gentoolinux> add net

zonecfg:gentoolinux:net> set address=192.168.0.8/24

zonecfg:gentoolinux:net> set physical=hme0

zonecfg:gentoolinux:net> end

zonecfg:gentoolinux> add attr

zonecfg:gentoolinux:attr> set name="audio"

zonecfg:gentoolinux:attr> set type=boolean

zonecfg:gentoolinux:attr> set value=true

zonecfg:gentoolinux:attr> end

zonecfg:gentoolinux> exit

# zoneadm -z gentoolinux install -d /mnt/disco2/gentoo2006pruebas.tar.bz2
A ZFS file system has been created for this zone.

Installing zone 'gentoolinux' at root directory '/mnt/disco2/pruebaszonas/gentoolinux' from archive '/mnt/disco2/gentoo2006pruebas.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 'gentoolinux' completed successfully.

Details saved to log file:

"/mnt/disco2/pruebaszonas/gentoolinux/root/var/log/gentoolinux.install.10064.log"


Update: la verdad es que tuve que modificar varias veces la imagen de pruebas de gentoo y al final no funcionó tan bien como esperaba. Probé después CentOS y funcionó a la primera… Todos los programas incluídos se ejecutaron perfectamente, peeeero SlimServer se arrastraba bajo Brandz x”DDD

[tags]brandz,opensolaris,solaris express[/tags]

Instalando una zona Debian con BrandZ

13 Enero,2006

Hace poco os hablé de BrandZ, un framework que permite ejecutar otros sistemas operativos en una zona de Solaris. Inicialmente sólo se podía arrancar CentOS, una distro basada en RedHat, mas sin embargo ya hay quien ha conseguido instalar Debian GNU/Linux Sarge en una de éstas zonas.

De momento, la instalación se realiza manualmente, bootando el sistema y descomprimiendo algunos paquetes .deb de forma manual. El sistema arranca y funciona correctamente, salvo alguna cuestión con linuxthreads, pues Debian GNU/Linux emplea un sistema antiguo de hilos y diferente al NPTL de RedHat, el cual sí está soportado en las zonas de Solaris.

¡Habrá que esperar al build 31 para hacer un BFU ó recompilar BrandZ! :-)

OpenSolaris correrá zonas con Linux

14 Diciembre,2005

BrandZ es un framework que amplía la infraestructura de las zonas de Solaris para crear zonas calificadas, que son las zonas que contienen entornos operativos (SOs) extranjeros. El término “extranjero” es intencionalmente vago, pues la infraestructura permite la creación de una amplia gama entornos operativos.

Cada entorno operativo es proporcionado por una “marca de fábrica” que se enchufa en el framework de BrandZ. Una “marca de fábrica” puede ser tan simple como un entorno con las utilidades de Solaris estándar substituidas por sus equivalentes de GNU, ó tan complejas como un espacio de usuario completo de Linux.

BrandZ amplía la infraestructura de las zonas en espacio de usuario:

- Una marca de fábrica es un atributo de una zona, configuración que se realiza al crear dicha zona.
- Cada marca de fábrica proporciona su propia rutina de la instalación, lo cual nos permite instalar una colección arbitraria de software en la zona calificada.
- Cada marca de fábrica puede proporcionar scripts pre/post-arranque que nos permiten hacer una configuración final en tiempo de arranque.
- Las herramientas zoneadm y zonecfg pueden fijar y reportar el tipo de la marca de fábrica de una zona.

BrandZ proporciona un sistema de puntos de interposición en el kernel:

- Éstos puntos se encuentran en la trayectoria syscall, la trayectoria de carga de un proceso, trayectoria de creación del hilo, etc.
- En cada uno de éstos puntos, una marca de fábrica puede elegir suplir o substituir el comportamiento estándar de Solaris.
- Éstos puntos de interposición se aplican solamente a los procesos en una zona calificada.
- Fundamentalmente, las diferentes marcas de fábrica pueden requerir nuevos puntos de interposición.

¿Has dicho algo sobre Linux?

La marca de fábrica lx, permite que los binarios de Linux puedan funcionar sin modificación alguna en Solaris, dentro de las zonas que funcionan en un espacio de usuario completo de Linux. La combinación de BrandZ y de la marca de fábrica de lx será puesta en marcha como contenedor de Solaris para aplicaciones Linux.

La marca de fábrica lx no es una distribución de Linux y no contiene ningún software de Linux en todos los casos. La marca de fábrica lx permite al software de nivel de usuario de Linux funcionar bajo una máquina con un núcleo de Solaris, e incluye las herramientas necesarias para instalar un CentOS ó una distribución Red Hat Linux Enterprise dentro de una zona en un sistema Solaris.

La marca de fábrica lx funcionará en sistemas x86/x64 arrancados bajo un kernel de 32-bit ó 64-bit. Sin importar el núcleo subyacente, sólamente funcionaran las aplicaciones Linux de 32-bit.

BrandZ y lx están todavía en una intesa fase de desarrollo, lo que significa que pueden haber bloqueos ó caídas del sistema en cualquier momento.

Ejecutar BrandZ requiere un nivel significativo de conocimientos técnicos con los procedimientos de desarrollo de OpenSolaris. Se ha proporcionado cierta documentación para que la curva de aprendizaje no sea elevada, pero si no te sientes confortable haciendo un BFU a tu sistema (ó nunca has oído hablar de éste término), probablemente sería mejor esperar hasta que el proyecto esté bien pulido y sea de fácil manejo.

Por supuesto cualquiera es bienvenido a probar la tecnología y hacer preguntas en los foros, aunque hay que entender que todavía no existe ningún soporte detallado sobre todo ésto.