jueves, 28 de febrero de 2013

Sistemas Virtuales #1: Instalación básica de sistemas con VirtualBox



Como venía avisando desde hace unas semanas, las "viejas" series van a ir dejando paso a otros contenidos, por supuesto en el marco en el que nos movemos de los tutoriales sobre GNU-Linux. Y como la semana pasada despedimos temporalmente a la serie sobre el terminal, toca encontrarle un sustituto. Así que con este artículo os presento el primer capítulo del nuevo fichaje: la virtualización de sistemas operativos.


¿Virtualización? ¿Eso qué es? ¿Acaso me obligas a abandonar mi querido blog de Linux para novatos?

En absoluto, querido lector; Aunque esto de la virtualización, efectivamente, es un asunto complejo, sobre el que podríamos meternos a debatir de una manera sesuda, teórica y profunda, mis escasos conocimientos y mi poca capacidad de concentración me impiden, creo que afortunadamente para todos, adentrarme en honduras inextricables sobre el tema. De modo que nos quedaremos en una cómoda superficie, la virtualización de sistemas operativos mediante software accesible y amigable.
Partiendo de esta premisa, definir qué es esto de la virtualización tampoco resulta tan complicado: virtualizar un sistema consiste en utilizar un software para "hacer creer" a un sistema operativo (Linux, Windows, OS-X, Solaris, lo que os dé la gana) que está comunicándose con el hardware de nuestro PC. Dicho de otra manera, el software virtualizador permite a un sistema operativo comunicarse indirectamente con el hardware de nuestras máquinas (procesador, memoria RAM, dispositivos de almacenamiento) a través de lo que se denomina una "capa de virtualización". En realidad no tengo muy claro qué implica todo esto, pero estas expresiones y palabrejas suenan muy sofisticadas y quedan la mar de bien. El caso, y lo importante, es que si conocemos el software de virtualización podremos hacer funcionar un Sistema Operativo invitado (en inglés, "guest") dentro de nuestro Sistema Operativo anfitrión (en inglés, "host").
Evidentemente, esta es una explicación absolutamente simplista, así que si queréis más datos podéis pasaros por el artículo sobre el tema que tiene la Wikipedia. 

Ahm... ¿Y eso me interesa realmente? Estoy a un paso de borrarte de los favoritos del Firefox

Por supuesto que es interesante. Por varias razones. La más romántica es el simple placer de trastear con los Sistemas Operativos, hacer experimentos con ellos para ver lo que pueden dar de si o comprobar si son mejores o más bonitos o más cómodos que el que tengamos como anfitrión. Podemos entender la virtualización de sistemas como un entretenimiento (muy, pero que muy friki, eso sí), una especie de videojuego que consiste en descubrir cómo es un sistema. Otra razón, un poco más convincente, es la del propio aprendizaje que proporciona la posibilidad de experimentar con cualquier sistema cómodamente, sin necesidad de instalaciones nativas. En un mundo de fragmentación como es el de GNU-Linux, donde hay opciones para aburrir, es conveniente tener la capacidad de conocer de manera inmediata qué características ofrece un sistema frente a otros, para poder elegir libremente. En este sentido, trato de echar una mano con las Vídeo-Distros, pero no hay nada como comprobar uno mismo las cosas.

CrunchBang y Voyager corriendo dentro de Linux, todo a la vez y sin problemas de rendimiento. ¡Magia!

La tercera razón es la más práctica de todas: un sistema virtualizado es la mejor manera de experimentar con software de una forma absolutamente inocua. Es muy complicado cargarse nada de nuestro sistema anfitrión hagamos lo que hagamos con el sistema invitado. De modo que es una forma muy adecuada de comprobar qué tal es esta versión inestable de mi software favorito, si merece la pena que actualice la versión de mi sistema, o experimente cosas complejas como la compilación, experimentos de programación, etc.
Como en el punto anterior, las formas de aprovechar la virtualización van mucho más allá de lo que indico en este artículo, aunque también superan con mucho nuestra "línea editorial"; la virtualización es una técnica que se utiliza a menudo en el ámbito de los servidores, de la programación avanzada, y este es un artículo dirigido a usuario básicos que están movidos por su curiosidad y no por fines profesionales. 

Vale, me has convencido. ¿Entonces, cómo se hace eso de virtualizar?

Es relativamente sencillo. En primer lugar necesitamos un equipo medianamente potente si queremos resultados "usables". Aunque es difícil establecer requisitos mínimos, en principio podemos hacer un cálculo básico: Para virtualizar un sistema necesitamos tanta potencia (RAM, procesador, disco duro) como la que necesitan los dos sistemas, el anfitrión y el invitado, sumados. De este modo, si estamos corriendo una copia de Ubuntu, y queremos virtualizar otro Ubuntu, tendremos que sumar los requisitos mínimos de ambos. Lógicamente, un sistema ligero se va a virtualizar mucho mejor que uno pesado, y desde luego un Linux se virtualiza muchísimo mejor que un Windows. Y desde Linux se virtualiza mucho mejor que desde Windows. Y Windows es malo, y apesta. Ejem.
Lógicamente, lo que sí vamos a notar es que el rendimiento de nuestra máquina virtual siempre va a ser inferior al de nuestro sistema anfitrión. Esto es normal si entendemos que todos los procesos de comunicación entre el sistema invitado y el hardware están mediados por una capa de software que actúa como intermediaria. 
Por lo demás, una arquitectura X86 es recomendable, y dependiendo del Hardware contaremos con apoyos de nuestro propio ordenador para virtualizar de una manera más eficiente.
A continuación, tendremos que hacernos con un programa que nos permita virtualizar máquinas. En este caso me decanto por VirtualBox, que es una solución medianamente libre (todo lo que proviene de Oracle es "medianamente" libre) y que funciona bastante bien en la mayoría de los casos. Por supuesto, hay más programas que cumplen las mismas funciones, aunque de momento voy a centrarme en este. Lo que sí os recomiendo es tener la última versión que haya disponible del programa, pues evoluciona bastante rápido y probablemente en vuestros repositorios no esté disponible la iteración más moderna. Por suerte, en la página de descarga del programa hay abundantes paquetes adecuados para casi todas las distribuciones.

Versión actual de VirtualBox disponible para Ubuntu.

Sobre la configuración del programa no me voy a meter, porque para eso están los vídeos. Tan sólo os tengo que indicar, para completar lo que digo en Youtube, que conviene no agobiarse con la multitud de opciones que ofrece este programa. No hay que olvidar que VirtualBox es una solución global de virtualización, así que para el usuario normal la mayoría de botones y menús no tienen utilidad inmediata. Básicamente con los pasos que os indico en este primer capítulo sería extraño que no consiguieseis hacer arrancar vuestra primera máquina virtual.
Para concluir este artículo introductorio, tengo que hacer una advertencia: este no va a ser un vídeo-manual al uso, como el que dediqué a Darktable; es decir, no va a ser un repaso exhaustivo, opción por opción, de todas y cada una de las funcionalidades de VirtualBox. Mis conocimientos no dan para tanto, y el potencial de este programa excede con mucho las necesidades del usuario promedio. De modo que iré repasando los detalles que me parecen fundamentales para que podamos disfrutar de la virtualización básica. El objetivo será tener funcionando "un sistema dentro de otro sistema" sin quebraderos de cabeza y de una manera eficiente. Espero que lo disfrutéis, y como de costumbre, invito a los expertos a que aporten ideas, sugerencias o correcciones a los contenidos que en lo sucesivo irán apareciendo en este blog. ¡Espero que os guste!