domingo, marzo 16, 2008

coLinux bajo Windows

En el post anterior explicamos en qué consiste esta tecnología,‭ ‬y vimos cómo un software puede emular el hardware completo de la PC,‭ ‬permitiéndonos ejecutar distintos SO en el mismo equipo simultáneamente.‭ ‬Las ventajas que esto ofrece tienen un costo:‭ ‬los recursos del equipo se utilizan en forma intensiva.‭ ‬Pero si lo que necesitamos es ejecutar Linux bajo Windows,‭ ‬existe una interesante alternativa:‭ ‬CoLinux es un Kernel Linux que se ejecuta como un proceso más,‭ ‬sin emular el hardware.

Logo CoLinuxCooperative Linux‭ (‬conocido como CoLinux‭)‬,‭ ‬en lugar de emular hardware,‭ ‬comparte los recursos que ya existen en el SO anfitrión.‭ ‬Otros software de virtualización,‭ ‬como VMWare o Xen,‭ ‬ejecutan sus máquinas virtuales en el‭ “‬espacio de usuario‭”‬,‭ ‬mientras que CoLinux tiene casi el mismo acceso a los recursos del equipo que el Kernel anfitrión.‭ ‬El Kernel Linux trabajará‭ “‬en equipo‭” ‬con el de Windows,‭ ‬logrando un rendimiento insuperable al ejecutar aplicaciones de Linux bajo los SO de Microsoft.

LA UNIÓN HACE LA FUERZA
Si bien el hard de nuestra PC no está diseñado para ser controlado por más de un Kernel‭ (‬es decir,‭ ‬más de un SO‭) ‬al mismo tiempo,‭ ‬esta‭ “‬cooperación‭” ‬entre Kernels se logra con una serie de drivers especiales desarrollados por el equipo de CoLinux,‭ ‬que permiten al Kernel Linux acceder al hardware de forma mucho más directa y veloz que a través de una capa de emulación.‭ ‬Y su excelente rendimiento no es su único punto fuerte:‭ ‬es libre y de código abierto,‭ ‬y tiene detrás una importante comunidad de desarrolladores y usuarios que le dan soporte y ayudan a mejorarlo versión tras versión.‭ ‬En concordancia con la tendencia principal de la mayoría de las distribuciones Linux,‭ ‬actualmente el Kernel de CoLinux es un derivado de la rama‭ ‬2.6.x que permite ejecutar diversas distribuciones Linux sobre Windows.‭ ‬Algunas distribuciones se llevan especialmente bien con el CoLinux,‭ ‬como Debian,‭ ‬su descendiente Knoppix,‭ ‬o Gentoo,‭ ‬ideal para quienes requieran niveles extremos de optimización en la ejecución de binarios Linux.‭ ‬También se puede‭ “‬convertir‭” ‬cualquier distribución que tengamos instalada a CoLinux,‭ ‬con ayuda de las instrucciones que podemos encontrar en la wiki de la comunidad:‭ ‬http://wiki.colinux.org/wiki/Main_Page‭

INSTALANDO COLINUX
CoLinux,‭ ‬como muchos otros desarrollos de código abierto,‭ ‬se encuentra‭ “‬hosteado‭” ‬en el popular sitio de proyectos open source‭ ‬SourceForge.net,‭ ‬que provee de distintos servicios a la comunidad de desarrolladores OSS:‭ ‬hosting de fuentes y ejecutables,‭ ‬control de versiones,‭ ‬administración de documentación,‭ ‬etc.‭ ‬SourceForge además cuenta con numerosos mirrors en distintos lugares del mundo para facilitar las descargas.‭ ‬En nuestro caso,‭ ‬nos conviene utilizar el mirror de Brasil por ser el más cercano geográficamente.‭ ‬Procedemos,‭ ‬entonces,‭ ‬a descargar CoLinux desde‭ ‬aquí.
Una de las ventajas de CoLinux se pone de manifiesto ya desde el principio:‭ ‬el instalador pesa menos de‭ ‬5‭ ‬MB.‭ ‬Al ejecutarlo,‭ ‬luego de preguntarnos en qué carpeta deseamos‭ ‬instalar‭ (‬aconsejamos utilizar‭ ‬C:‭\‬CoLinux,‭ ‬ya que es la que viene por defecto en los archivos de configuración‭) ‬se‭ ‬instalará el Kernel CoLinux,‭ ‬los archivos de configuración y herramientas necesarias para‭ ‬ejecutarlo y los drivers para las redes virtuales.‭ ‬Finalmente,‭ ‬nos permitirá descargar una imagen del sistema de archivos raíz‭ (‬root filesystem‭)‬,‭ ‬indispensable para que el Kernel Linux pueda‭ ‬correr.‭ ‬En este caso aconsejamos utilizar la imagen del root filesystem Debian,‭ ‬que también nos guarda una pequeña sorpresa,‭ ‬ya que descargaremos apenas‭ ‬28‭ ‬MB‭; ‬sin embargo,‭ ‬al descomprimirla,‭ ‬será creado un archivo de‭ ¡‬1‭ ‬GB‭! ‬que contendrá un filesystem con una distribución Debian básica.‭ ‬Es importante destacar que,‭ ‬a diferencia de los discos virtuales‭ ‬utilizados por la tecnología VMWare,‭ ‬los de CoLinux‭ ‬ocupan todo el espacio máximo que se les asigna desde el principio,‭ ‬pero tienen una ventaja sobre estos:‭ ‬la herramienta necesaria para crearlos ya viene con el propio Windows:‭ ‬fsutil‭ (‬más información en‭ ‬http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/fsutil.mspx‭‬).

EDITANDO LA CONFIGURACIÓN
Una vez descargada la imagen del root filesystem,‭ ‬la descomprimimos en la misma carpeta donde instalamos CoLinux.‭ ‬La imagen viene comprimida con el‭ ‬bzip2‭ (‬podemos‭ ‬descargar la versión para Windows desde‭ [‬http://gnuwin32.sourceforge.net/packages/bzip2.htm‭]‬) aunque si contamos con el‭ ‬7-zip o el WinRAR,‭ ‬también podemos utilizarlos para extraer la‭ ‬imagen.‭ ‬Luego,‭ ‬debemos editar el archivo de configuración de CoLinux,‭ ‬que reside en la carpeta que hayamos seleccionado para instalar.‭ ‬Dicho archivo se llama‭ ‬default.colinux.xml y,‭ ‬como su extensión lo indica,‭ ‬es un archivo de formato XML,‭ ‬por lo cual aconsejamos utilizar algún editor preparado para trabajar con este tipo de formato,‭ ‬por ejemplo,‭ ‬el excelente Notepad++,‭ ‬que se puede descargar en‭ ‬[http://notepad-plus.sourceforge.net/es/site.htm‭]‬.‭ ‬Por supuesto que podemos utilizar un editor tradicional como el bloc de notas si así lo deseamos,‭ ‬pero no dispondremos de ventajas como colorizado de la sintaxis o demarcación de la estructura del XML.
Si bien el formato del archivo de configuración difiere sustancialmente del formato utilizado por VMWare que hemos visto en la nota anterior,‭ ‬podemos observar que los ítems a configurar son similares:‭ ‬cantidad de memoria física asignada a CoLinux,‭ ‬configuración de los dispositivos virtuales de almacenamiento y de interfaz de red,‭ ‬etc.‭ ‬Además,‭ ‬el archivo viene acompañado de comentarios‭ (‬en inglés‭) ‬que proporcionan una valiosa ayuda sobre el uso y características de cada uno de los parámetros de configuración.‭ ‬En este caso,‭ ‬si hemos instalado en la carpeta recomendada‭ (‬C:‭\‬CoLinux‭), ‬el único cambio que debemos realizar antes de poder arrancar el Kernel CoLinux es indicar la ruta a nuestra imagen de root filesystem,‭ ‬editando el elemento siguiente:

‭<‬block_device index‭="‬0‭" ‬path‭="\‬DosDevices\c:‭\‬coLinux\root_fs‭" ‬enabled‭="‬true‭" ‬/‭>

En dicha línea reemplazaremos‭ “‬c:‭\‬coLinux\root_fs‭” ‬con la ruta completa a nuestra imagen root.‭ ‬En nuestro caso, quedó así:

‭<‬block_device index‭="‬0‭" ‬path‭="\‬DosDevices\c:‭\‬coLinux\Debian-3.0r2.ext3-mit-backports.1gb‭" ‬enabled‭="‬true‭" ‬/‭>

Por supuesto,‭ ‬otra posibilidad es,‭ ‬en lugar de modificar el archivo de configuración,‭ ‬renombrar el archivo de imagen a‭ “‬root_fs‭”‬.

La única otra opción que modificaremos inicialmente se encuentra en la configuración de la red virtual.‭ ‬En la siguiente línea reemplazamos la palabra‭ “‬tap‭” ‬que viene en la configuración default por‭ “‬slirp‭” ‬y debe quedar así:

‭<‬network index‭="‬0‭" ‬type‭="‬slirp‭" ‬/‭>

MODALIDAD DE EJECUCIÓN
Cumplidos estos pasos,‭ ‬ya estamos en condiciones de arrancar el Kernel CoLinux,‭ ‬pero antes debemos tomar una última decisión:‭ ‬si vamos a ejecutar el Kernel en forma‭ “‬stand alone‭” ‬o como servicio de Windows. La primera opción será más recomendable cuando sólo necesitemos ejecutar aplicaciones Linux en forma ocasional,‭ ‬mientras que ejecutar como servicio será una opción más adecuada si hacemos uso intensivo del mismo,‭ ‬pudiendo incluso configurar el servicio para que se inicie solo al bootear el Windows.‭ ‬Otra diferencia destacable es que la ejecución en modo‭ “‬stand alone‭” ‬requiere tener siempre abierta una‭ “‬consola‭” ‬virtual‭ (utilizaremos‬ para ello una ventana en modo texto,‭ ‬similar a la que utiliza la línea de comandos estándar de Windows‭), ‬mientras que la ejecución como servicio posibilita que el Kernel CoLinux se ejecute en forma‭ “‬invisible‭” ‬para el usuario,‭ ‬pudiendo invocarse si se desea una‭ “‬consola‭” ‬y cerrarla al terminar su uso,‭ ‬sin que el servicio CoLinux deje de ejecutarse.‭ ‬También podemos acceder a una‭ “‬consola‭” ‬CoLinux conectándonos a través de telnet o ssh,‭ ‬como si se tratara de un equipo Linux‭ “‬real‭” ‬accesible vía red.‭ ‬Una vez que decidimos cuál es la modalidad más adecuada para nuestro caso,‭ ‬realizamos los pasos indicados en el cuadro‭ ‬1‭ ‬según nuestra elección.

PRIMEROS PASOS
Llegó el momento de ejecutar el Kernel.‭ ‬Al arrancarlo observaremos los clásicos mensajes de booteo de Linux,‭ ‬y ,a los pocos segundos, nos encontraremos con el prompt de‭ “‬login‭”‬.‭ ‬En la versión actual de CoLinux‭ (‬0.6.4‭) ‬tanto el usuario como la password son‭ “‬root‭”‬.‭ ‬Nos logueamos,‭ ‬y lo primero que haremos será editar la configuración de red.‭ ‬Para ello ejecutamos:

nano‭ ‬/etc/apt/network/interfaces

Hacia el final del archivo observamos las siguientes líneas:

iface eth0‭ ‬inet static
address‭ ‬192.168.0.40
‭ ‬netmask‭ ‬255.255.255.0
‭ ‬gateway‭ ‬192.168.0.1

Debemos reemplazarlas por la siguiente:

iface eth0‭ ‬inet dhcp

Salimos grabando,‭ ‬y hacemos shutdown de la sesión CoLinux con el siguiente comando:

shutdown‭ ‬-rf now

ACTUALIZANDO LA IMAGEN DEBIAN
Arrancamos nuevamente el CoLinux y comprobamos que la red está funcionando:

ping‭ ‬10.0.2.2

Si todo marcha bien,‭ ‬actualizamos la lista de paquetes desde los repositorios de Debian:

apt-get update

Al actualizar,‭ ‬el repositorio de Backports da un error,‭ ‬pero no lo vamos a utilizar, así que lo ignoramos.‭ ‬Finalmente, actualizamos Debian a la última versión:

apt-get dist-upgrade

Para quienes no estén familiarizados con Debian o sus distribuciones‭ “‬herederas‭” ‬como Knoppix o Ubuntu,‭ ‬este comando actualizará todos los paquetes presentes en el sistema a su última versión,‭ ‬descargando e instalando todo en forma automática.‭ ‬Durante este paso se nos harán algunas preguntas respecto a la configuración del sistema:‭ ‬simplemente responderemos, en cada caso, la opción que se nos presenta por defecto.

INSTALANDO APLICACIONES
Una vez terminado el proceso de actualización, podemos comenzar a instalar aplicaciones.‭ ‬Si necesitamos ejecutar en CoLinux solamente servidores‭ (‬apache,‭ ‬mysql‭) ‬podemos quedarnos con la interfaz de consola,‭ ‬ya que se interactuará poco con el CoLinux,‭ ‬simplemente utilizaremos los servicios deseados conectando a ellos desde aplicaciones Windows‭ (‬como por ejemplo una IDE o un soft de diseño de sitios Web‭)‬.‭ ‬En este caso, convendrá correr CoLinux como servicio y acceder a consola por ssh utilizando un cliente como el PuTTY,‭ ‬el cual‭ (‬bromas sobre el nombre aparte‭) ‬podremos descargar desde‭ ‬http://www.putty.nl/download.html‭

Antes que nada,‭ ‬recordemos que, luego de cada actualización o instalación, podemos recuperar parte del espacio utilizado borrando los paquetes de instalación:

apt-get clean

En el caso de la imagen Debian que viene‭ “‬de fábrica‭” ‬esto es muy importante,‭ ‬ya que, de lo contrario, en sólo‭ ‬1‭ ‬Gb tendremos problemas para instalar varios servidores y el entorno gráfico simultáneamente.‭

Instalemos algunos servidores útiles:

apt-get install ssh proftpd ‬Servidores de SSH y FTP
apt-get install apache libapache-mod-php4‭ ‬php4‭ ‬php4-mysql mysql-common mysql-server ‬Servidores Web y de Base de Datos,‭ ‬PHP
apt-get install samba ‬Servidor SAMBA‭ (‬acceso a recursos de redes Windows‭)

En cambio, si queremos utilizar aplicaciones de entorno gráfico,‭ ‬entonces tenemos que instalar las librerías y aplicaciones de XWindows:

apt-get install xterm xutils xbase-clients xfonts-base xfonts-75dpi

Noten que no instalamos ningún servidor X.‭ ‬Esto es porque utilizaremos al propio Windows como motor gráfico.‭ ‬Si tenemos instalado el Cygwin‭ (‬ver Power‭ ‬#37‭), ‬podemos utilizar el Server que nos provee Cygwin.‭ ‬De lo contrario,‭ ‬descargaremos e instalaremos el Xming,‭ ‬que es un Servidor X para Windows,‭ ‬desde‭ ‬[http://sourceforge.net/projects/xming‭]‬.‭ ‬Luego, le indicamos a CoLinux que el Servidor X se encuentra en una máquina‭ “‬remota‭”‬:

DISPLAY‭=‬10.0.2.2:0.0
export DISPLAY

Para evitar tener que correr estos dos comandos en cada sesión,‭ ‬podemos agregarlos al final de‭ ‬/etc/profile.‭ ‬Finalmente, invocamos a la aplicación X deseada,‭ ‬por ejemplo, un terminal:

xterm‭ &

Podemos dejar que el Servidor X de Windows abra una nueva ventana para cada aplicación X,‭ y‬, de esta forma, el propio Windows administrará tanto las ventanas de aplicaciones Windows como las de aplicaciones X.‭ ‬O, si preferimos,‭ ‬podemos correr el Servidor X en‭ “‬pantalla completa‭” ‬y utilizar un administrador de ventanas de Linux.‭ ‬Probemos instalar un WM‭ (‬Window Manager‭) ‬liviano para ver su desempeño:

apt-get install icewm icewm-themes icepref

Luego de arrancar el Servidor X en pantalla completa‭ (‬en el caso del Xming lo hacemos utilizando XLaunch‭), ‬ejecutamos el administrador de ventanas:

icewm‭ &

Ya tenemos un entorno gráfico de Linux corriendo en una ventana de Windows.‭ ‬Ahora podemos, por ejemplo, instalar un Firefox y tener un entorno‭ “‬seguro‭” ‬de navegación web‭ (‬sandbox‭)‬,‭ ‬aislado de los peligros de los virus y el spyware:

apt-get install mozilla-firefox

Finalmente, pongámosle la frutilla al postre.‭ ‬Salimos de la sesión X y, desde la consola, instalamos un entorno de escritorio Linux completo con todas las de la ley,‭ ‬en este caso, KDE:

apt-get install kde

Una vez terminada la descarga e instalación‭ (‬en este caso será bastante más larga y habrá que tener algo de paciencia‭) ‬y con el Servidor X de Windows ejecutándose en pantalla completa,‭ ‬corremos en la consola de CoLinux:

startkde‭ &

Y si todo marcha bien,‭ ‬tendremos a nuestra disposición la gran cantidad de aplicaciones que ofrece KDE…‭ ¡‬en una ventana de Windows‭!

Y LA COSA RECIÉN EMPIEZA
Como habrán podido apreciar,‭ ‬estamos en presencia de una herramienta muy poderosa,‭ ‬que presenta numerosas posibilidades y cuyo punto fuerte es su excelente performance comparada con otros productos similares.‭ ‬Además de ser de código abierto,‭ ‬gratuito y relativamente fácil de instalar y configurar,‭ ‬es muy importante mencionar que, detrás de CoLinux, hay una comunidad de desarrolladores y usuarios que constantemente está trabajando para mejorarlo y colaborando con los nuevos usuarios.‭ ‬Por ejemplo, existe una Wiki donde podremos encontrar muchísima información técnica de CoLinux,‭ ‬incluso tópicos muy importantes que lamentablemente escapan al alcance de esta nota:‭ ‬configuración del sonido para aplicaciones Linux,‭ ‬acceso desde CoLinux al sistema de archivos del Windows‭ “‬anfitrión‭” ‬y viceversa,‭ ‬utilización con CoLinux de distribuciones‭ “‬no virtuales‭” ‬ya instaladas en nuestro equipo,‭ ‬y mucho más.‭ ‬Así que ya saben:‭ ‬si bien en esto‭ (‬aunque parezca‭) ‬no hay magia,‭ ‬al igual que en aquel programa televisivo de nuestra juventud,‭ ‬el resto depende de ustedes.‭ ‬Feliz hacking.

Ejecución‭ “‬Stand Alone‭” ‬vs Servicio‭

Ejecución Stand Alone:
Crear un acceso directo con los siguientes valores
Destino:‭ ‬C:‭\‬coLinux\colinux-daemon.exe‭ ‬-c default.colinux.xml
Iniciar en:‭ ‬C:‭\‬coLinux

Ejecución como servicio:
Para instalar el servicio,‭ ‬ejecutar desde la línea de comandos:
C:
cd‭ \‬colinux
colinux-daemon.exe‭ ‬-c default.colinux.xml‭ ‬–install-service‭ “‬Cooperative Linux‭”

Para eliminar el servicio,‭ ‬ejecutar desde la línea de comandos:
C:
cd‭ \‬colinux
colinux-daemon.exe‭ ‬–remove-service‭ “‬Cooperative Linux‭”

Para ejecutar el servicio tanto en forma automática como manual,‭ ‬se lo puede hacer desde el administrador de servicios‭ (‬Panel de control/Herramientas Administrativas/Servicios‭)‬.‭ ‬También podemos iniciar el servicio en forma manual desde la línea de comandos de la siguiente manera:

net start‭ “‬Cooperative Linux‭”

Las ramas de Debian‭
Debian GNU/Linux cuenta con una rama‭ “‬estable‭” ‬y otra de‭ “‬pruebas‭”. L‬a diferencia entre ambas es que la última incorpora las últimas versiones de los paquetes de software y las tecnologías más recientes surgidas en el mundo Linux,‭ ‬mientras que la primera no está tan actualizada,‭ ‬pero su fiabilidad es superior,‭ ‬haciéndola preferible para un entorno de producción.
La imagen Debian que viene con CoLinux es versión‭ “‬stable‭”‬.‭ ‬Para actualizar a‭ “‬testing‭”, ‬ingresamos en la línea de comandos:

nano‭ ‬/etc/apt/sources.list

En este archivo veremos varias líneas similares,‭ ‬siendo la primera la siguiente:

deb http://ftp.us.debian.org/debian/‭ ‬stable main

Comentamos‭ ‬con‭ ‬#‭ ‬o borramos todas las líneas menos la primera,‭ ‬en la cual reemplazaremos la palabra‭ “‬stable‭” ‬por‭ “‬testing‭”‬.‭ ‬También podemos cambiar de repositorio si así lo deseamos‭; ‬si, por ejemplo, tenemos problemas para conectarnos con el que está configurado,‭ ‬o deseamos cambiar por un mirror más cercano geográficamente,‭ ‬reemplazamos la URL del repositorio original por la que deseemos.‭ ‬En nuestro caso,‭ ‬usando un repositorio de Argentina y la versión testing el archivo sources.list quedó así:

deb http://debian.logiclinux.com/debian testing main

Tipo de Redes Virtuales en CoLinux‭
Además de soportar los tipos de red que explicamos en el post anterior,‭ ‬es decir Bridged y NAT,‭ ‬CoLinux cuenta, también, con la posibilidad de utilizar un tipo de conexión de red basada en un demonio llamado SLIRP.‭ ‬Este demonio funciona de forma similar a NAT,‭ ‬manteniendo una conexión privada entre CoLinux y su anfitrión,‭ ‬con la diferencia de que funciona en una sola vía:‭ ‬se puede acceder desde CoLinux a otras interfaces de red conectadas al host,‭ ‬pero no a la inversa.‭ ‬Si bien es el tipo de conexión de red virtual más lenta,‭ ‬también es la más sencilla de configurar y mantener,‭ ‬y la más adecuada para trabajar en modo‭ “‬prueba de fallos‭”‬.

En esta imagen vemos un escritorio KDE corriendo bajo Windows XP.‭ ‬Firefox‭ (‬bajo KDE‭) ‬muestra la página del proyecto CoLinux. Clickeando la imagen se la puede ver ampliada.

kde_bajo_winxp

Aclaración: Este post fue publicado originalmente en la revista POWERUSR #39. TODOS LOS DERECHOS RESERVADOS. PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL SIN EL CONSENTIMIENTO EXPRESO DEL AUTOR. SE PERMITE EL ENLACE O LINKEO A ESTE POST SIN NINGÚN TIPO DE RESTRICCIONES.


http://www.radioexilio.com.ar/estaciondetransito/?p=15 (por la libertad de informacion libre en internet)

No hay comentarios: