domingo, 20 de enero de 2008

Virtualización de linux 2.4 y 2.6 con Brandz en OpenSolaris

Procedimiento rápido para la generación de una Brand Linux 2.4 y 2.6 con OpenSolaris (SXDE, SXCE y OpenSolaris)

Éste es un procedimiento para generar una zona de linux 2.4 ó 2.6, usando el esquema de virtualización BrandZ de OpenSolaris.
Como habrán podido notar, no se soporta aún la implementación de una Brand desde el CD de instalación de la misma distro de GNU/Linux, por lo que se deberá generar, previamente, usando un sistema operativo ya instalado, mediante los comandos:
# cd /
# tar jcf distro24.tar.bz --exclude distro24.tar.bz --exclude dev --exclude proc --exclude sys --exclude boot *
Sencillamente, para generar una brand de linux 2.4, que por omisión posee sus archivos xml de configuración en el sistema operativo inmediatamente después de haber sido implementado, se deberán seguir estos pasos:


# mkdir /zones (éste será el directorio donde se depositarán los archivos correspondientes a la zona que vamos a crear)
# zonecfg -z linux24 (éste será el nombre que le daremos a esta zona)
linux24: No such zone configured (lógicamente, como aún no existe, aparecerá este mensaje)
Use 'create' to begin configuring a new zone.
zonecfg:linux24> create -t SUNWlx (aquí creamos la nueva zona, basándonos en el template SUNWlx)

Si el brand a generar fuera del tipo de kernel 2.6, habría que ejecutar, en lugar del anterior, el siguiente comando:
zonecfg:linux24> create -t SUNWlx26 (aquí creamos la nueva zona, basándonos en el template SUNWlx26, similar al anterior)

zonecfg:linux24> set zonepath=/zones/linux24 (aquí anunciamos cuál será el path donde se ubicarán los archivos de esta zona)
zonecfg:linux24
> set autoboot=true (esto sólo lo agregamos si queremos que cuando bootee el equipo, es decir, la zona global, también bootee la zona linux24)
zonecfg:linux24> add capped-memory (al principio no hacía esto, pero luego de ver cómo una zona podía comerse toda mi RAM, lo tomé como buena práctica)
zonecfg:linux24:capped-memory> set physical=128m (sólo le doy 128 Mbytes. Soy tacaño)
zonecfg:linux24:capped-memory> set swap=256m (el doble de RAM para el swap, también limitado, y también una buena práctica para evitar que los recursos sean comidos por esta zona)
zonecfg:linux24:capped-memory> end (finalización de la configuración de la memoria limitada)
zonecfg:linux24> add net (aquí agregamos una interface de red a la zona)
zonecfg:linux24:net> set address=192.9.200.105/24 (aquí configuramos la dirección de red de esta interface de red, nótese cómo el prompt cambió, y ahora tiene como último elemento la palabra "net")
zonecfg:linux24:net> set physical=bge0 (le decimos que la tarjeta de red por la cual se deberá salir es la bge0)
zonecfg:linux24:net> end (finalizamos la configuración de la tarjeta de red)
zonecfg:linux24> add attr
zonecfg:linux24:attr> set name="audio" (agregamos un atributo, que será la utilización de una interface de audio)
zonecfg:linux24:attr> set type=boolean
zonecfg:linux24:attr> set value=true
zonecfg:linux24:attr> end
zonecfg:linux24> commit (hacemos efectivos los cambios)
zonecfg:linux24> exit (salimos de la configuración de la zona linux24)
# zoneadm -z linux24 install -d /Documents/distro24.tar.bz2 (atención, antes de poder instalar la zona, debemos poseer un archivo con el árbol de archivos de una distro basada en el kernel 2.4, tareada y bzipeada)

- Aquí veremos aparecer mensajes como éstos:
Installing zone 'linux24' at root directory '/zones/linux24'
from archive '/Documents/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 'linux24' completed successfully.
Details saved to log file:
"/zones/linux24/root/var/log/linux24.install.2453.log"

# zoneadm -z linux24 boot (booteamos la zona linux24)
# zlogin -C linux24 (le decimos -C para que arranque la consola, y podamos ejecutar los pasos de configuración que faltan)

- Aquí finalizará la instalación de la zona linux. Salir de la
consola con ~.

# zlogin linux24 (ahora sí, con el sentimiento del deber cumplido, nos logueamos a esta zona)

Luego, algo importante a realizar, si es que vas a realizar instalaciones de productos que tienen grandes dependencias con los nombres de los servidores, es cambiar el archivo /etc/hosts de forma tal que contenga entradas como las siguientes:

127.0.0.1 localhost.localdomain localhost
192.9.200.105 linux24.hecsa.com.ar linux24

Ahora bien, para bajar esta zona linux 2.4, sólo tendremos que ejecutar:

# zoneadm -z linux24 halt

Nada más para una zona linux con kernel 2.4 (medio viejo al día de la fecha, pero sirve para unas cuantas cosas, como en mi caso, que pruebo si me funcionan viejos programas).

Esto que has visto en las notas de más arriba, lo reproduje bajándome el archivo SUNWlx26.xml, e instalando un CentOS 4 update 5, es decir, una distro basada en RPM's, y con kernel 2.6.x, y me anduvo perfectamente.

UN DETALLE INTERESANTE es que hay diferencias notables de espacio cuando la máquina virtualizada está en funcionamiento, y cuando se baja:

a) Funcionando:

-bash-3.2# du -ks ./*
5817 ./bin
1 ./boot
3 ./dev
42021 ./etc
12 ./home
1 ./initrd
86294 ./lib
1 ./lost+found
4 ./media
1 ./misc
1 ./mnt
3128241 ./native
1 ./opt
21 ./proc
289 ./root
17527 ./sbin
1 ./selinux
1 ./srv
28 ./tftpboot
44 ./tmp
1759444 ./usr
47876 ./var

b) Sin funcionar:

-bash-3.2# du -ks ./*
5817 ./bin
1 ./boot
1 ./dev
42021 ./etc
12 ./home
1 ./initrd
86294 ./lib
1 ./lost+found
4 ./media
1 ./misc
1 ./mnt
21 ./native
1 ./opt
1 ./proc
290 ./root
17527 ./sbin
1 ./selinux
1 ./srv
28 ./tftpboot
43 ./tmp
1759444 ./usr
47876 ./var

Dónde es que está la diferencia? Fíjense en el directorio /native. Ahí tienen unos 3 GB.
Eso se debe a que cuando no está funcionando todos sus directorios, que son dev, etc, lib, proc, tmp, usr y var, están vacíos, pero cuando arranca la máquina virtualizada, se llena con contenidos típicos del GNU/Linux que está en ejecución.

Ahora bien, si la prueba salió bien, y queremos eliminar esa zona, qué comandos utilizaríamos? Eso es bien sencillo, sólo hay que ejecutar dos comandos (atención, no hay undo de estos comandos, así que a ejecutarlos con bastante cuidado!):

# zoneadm -z linux24 uninstall
# zonecfg -z linux24 delete

Así de sencillo!

Apéndice: Diferencias entre el archivo SUNWlx.xml y el SUNWlx26.xml

A simple vista (con perdón de la palabra), las diferencias que existen entre el archivo SUNWlx.xml y el SUNWlx26.xml es sólo la línea, por lo que la sección que la contiene quedaría:



Eso es todo, y con esta línea extra se podrá generar el archivo en cuestión.

Suerte con las pruebas!!!


HeCSa.

No hay comentarios: