PreguntasLinux

Versión Completa: [howto]Virtualizando en Linux: vmplayer+solaris
Actualmente estas viendo una versión simplificada de nuestro contenido. Para ver la versión completa en el formato correcto, dale click aquí
Probando la virtualización con vmplayer,qemu, virtualbox y xen.
Esta es la primera entrega de una serie de artículos en los cuales daremos una mirada a las diferentes alternativas que existen para tener nuestra propia PC virtual.

1. ¿Qué es virtualizar?
Según Wikipedia, el término virtualización, nacido en 1960, es el de la creación de una máquina virtual utilizando una combinación de hardware y software.
Si bien hay varios tipos de virtualización, nos quedaremos con el que nos interesa que es la virtualización de plataforma nativa.

Vmware es la empresa creadora de la ya famosa línea de virtualización para servers y desktops.
Si bien VMware workstation es un producto de código cerrado/pago, existe una aplicación open source gratuita denominada VMPlayer, que no es más que un reproductor de máquinas virtuales, pero no podemos crearlas.

Ahora bien, uno se preguntaría: ¿debo adquirir vmware workstation para "crear" mi máquina virtual?
La respuesta es no. Ahora veremos por qué.

2. Primeros Pasos
Primero vamos a conseguirnos los materiales necesarios.

Como estoy trabajando sobre Kubuntu 7.04, voy a la consola y escribo:

Código:
dragonauta@herbie:~$ sudo apt-get install vmware-player


Para aquellos que deseen intentar desde otra distro y no tengan el vmplayer en sus repositorios, podrán bajar desde la web de vmware el dichoso player.

Si bien existe la posibilidad de crear una nueva máquina virtual con qemu (un virtualizador opensource) vamos a bajar una 'plantilla' de máquina ya creada. Bien, ahora bajemos una máquina virtual existente, la cual podremos modificar más tarde.
Mirror 1
Mirror 2
Mirror 3

También, y demás está decirlo, deberíamos contar con un CD, DVD o una imagen iso del sistema operativo que queremos instalar.
Por mi parte voy a instalar Solaris 10 11/06.

Requerimientos: repasemos los requerimientos mínimos para instalar Solaris 10.

  • Minimum of 256 MB of physical RAM
  • For x64- or x86-based processors, 120-MHz minimum
  • DVD or CD-ROM drive
3. Poniendo a punto
Vamos a crear una carpeta (donde querramos), yo voy a elegir tenerla en mi carpeta personal:

Código:
dragonauta@herbie:~$ mkdir vmware


[info]Podría haber ejecutado pwd para ver en que carpeta estoy parado, aunque simplemente me di cuenta porque en el 'prompt' figura el símbolo ~ que identifica la carpeta personal del usuario con el que estamos logueado.
Es decir, ejecutar cd, cd ~ y cd /home/usuario resultan en lo mismo.

Dentro de la carpeta vmware recién creada, descomprimimos el archivo os.zip. Nos vamos a encontrar con dos archivos OS.vmdk (disco virtual) y OS.vmx (definición de la máquina)

Creamos otra carpeta (como para tener todo ordenado) y copiamos allí estos dos archivos:

Código:
dragonauta@herbie:~/vmware$ pwd
/home/dragonauta/vmware
dragonauta@herbie:~/vmware$ mkdir solaris
dragonauta@herbie:~/vmware$ cp OS.* ./solaris/
dragonauta@herbie:~/vmware$ cd solaris
dragonauta@herbie:~/vmware/solaris$ mv OS.vmdk solaris.vmdk
dragonauta@herbie:~/vmware/solaris$ mv OS.vmx solaris.vmx

Como elección personal, quise renombrar los archivos OS por otro que identificara el sistema operativo que voy a instalar.

4. Editando la máquina virtual
Usando un editor de texto gráfico o por consola (vi, vim, nano, kedit, gedit, kate) vamos a modificar nuestro archivo solaris.vmx para definir que tipo de máquina virtual tendremos.

Vamos a ver algo como sigue

Código:
#!/usr/bin/vmware
config.version = "8"
virtualHW.version = "3"
memsize = "512"
ide0:0.present = "TRUE"
ide0:0.fileName = "OS.vmdk"

ide1:0.present = "TRUE"
ide1:0.fileName = "c:\image.iso"
ide1:0.deviceType = "cdrom-image"

floppy0.fileName = "/dev/fd0"
ethernet0.present = "TRUE"
ethernet0.connectionType = "nat"
usb.present = "TRUE"
sound.present = "TRUE"
sound.virtualDev = "es1371"
displayName = "Test OS"
guestOS = "other24xlinux"
nvram = "testos.nvram"
scsi0:0.redo = ""
ethernet0.addressType = "generated"
uuid.location = "56 4d 58 9f 24 b5 bb 31-27 56 0b 67 ec ec 62 c5"
uuid.bios = "56 4d f3 a5 03 8c cb b9-ed bb 8f 10 a3 de b0 10"
ide1:0.autodetect = "TRUE"
ethernet0.generatedAddress = "00:0c:29:de:b0:10"
ethernet0.generatedAddressOffset = "0"
checkpoint.vmState = "OS.vmss"
tools.remindInstall = "TRUE"
ide0:0.redo = ""

uuid.action = "keep"

Nos interesan varias líneas, entre ellas la memoria (memsize) la cual simplemente editaremos con lo más adecuado. Yo le pondré 384, ya que dispongo de un equipo no muy potente y sólo tengo 512 de ram.

En ide0:0.fileName simplemente le modificaré el nombre de mi disco (recordemos que ahora se llama solaris.vmdk). Notemos que ide0:0 representa a hda e ide1:0 representa a hdb
Por eso ide1:0 será nuestra unidad de cd o dvd.

Hay un caso especial con la unidad de cd, ya que si disponemos del disco de instalación (CD o DVD) simplemente nos queda:

Código:
ide1:0.fileName = ?auto detect?
ide1:0.deviceType = ?cdrom-raw?

pero si tuvieramos una imagen del disco de instalación podríamos 'montarla' con:

Código:
ide1:0.fileName = ?imagen_de_cd.iso?
ide1:0.deviceType = ?cdrom-image?


Por último nos queda ponerle un lindo nombre a la ventana, cambiamos el Test OS por un título más agradable y acorde a lo que vamos a instalar, en mi caso pondré el sistema operativo y el nombre que tendrá el equipo

Código:
displayName = "Solaris 10 11/06 ? thelonious.jazz.org"


[info]Nota: hay muchas otras opciones para investigar como ethernet0, usb, sound ya que podríamos agregar más de una placa de red (ethernet1), habilitar/deshabilitar los usb y el sonido, etc. incluso agregar un segundo disco al conjunto.

5. Instalando
Hechas las modificaciones al archivo, lo guardamos y corremos la aplicación

Código:
dragonauta@herbie:~/vmware/solaris$ vmplayer solaris.vmx

También podemos correr la aplicación ejecutando el ícono que queda instalado en Utilidades, pero al no tener una máquina virtual para iniciar, mostrará el cuadro de diálogo para elegir la que deseemos.

[warning]Tengan cuidado al crear la partición para instalar el sistema operativo, ya que por omisión, toma todo el tamaño libre de disco físico.
Aquí simplemente hay que crear una partición del tamaño que deseemos, por ejemplo 6Gb resultarán más que suficientes para instalar Solaris

[info]Recuerden que para los sistemas de la familia *nix es necesario tener en cuenta el espacio de memoria de intercambio (swap), por lo que si la instalación completa de Solaris utiliza casi 5 Gb de disco, más el swap (384Mb x 2 = 768Mb) y un poco de espacio para 'jugar' con archivos, es fácil definir el espacio total.
Una vez definido el disco, el archivo solaris.vmdk irá creciendo como máximo hasta el tamaño que hayamos definido.

Si por alguna razón no iniciara la instalación, pulsamos sobre el botón player y seleccionamos reiniciar, cuando la máquina virtual esté reiniciando pulsamos Esc para elegir el menú de booteo y luego la unidad de CD.

Realizamos la instalación normalmente y...

listo! Nuestro Solaris virtualizado corriendo en linux.
[info]Al hacer clic en la ventana de vmplayer, se captura automáticamente teclado y mouse, por lo que para liberarlos, sólo hay que pulsar la combinación Ctrl+Alt

6. ¿¿Cuatro interfaces de red??
Si ahora corriésemos ifconfig en nuestro linux, veríamos 4 interfaces

Código:
dragonauta@herbie:~$ /sbin/ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:01:03:32:06:B6  
          inet addr:192.168.0.69  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::201:3ff:fe32:6b6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1524 errors:0 dropped:0 overruns:1 frame:0
          TX packets:1034 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:600030 (585.9 KiB)  TX bytes:184529 (180.2 KiB)
          Interrupt:7 Base address:0xe000

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:932 errors:0 dropped:0 overruns:0 frame:0
          TX packets:932 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:76296 (74.5 KiB)  TX bytes:76296 (74.5 KiB)

vmnet1    Link encap:Ethernet  HWaddr 00:50:56:C0:00:01  
          inet addr:192.168.48.1  Bcast:192.168.48.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fec0:1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

vmnet8    Link encap:Ethernet  HWaddr 00:50:56:C0:00:08  
          inet addr:192.168.197.1  Bcast:192.168.197.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fec0:8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:25 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Las nuevas interfaces vmnet1 y vmnet8 se crean automáticamente al instalar vmplayer.

Cita:
La red vmnet1 que crea Vmware es de máscara de red 255.255.255.0; ejecuta un servidor DHCP automáticamente, y su configuración puede verse en /etc/vmware/vmnet1. Pero nada impide que podamos cambiar esta configuración, ya que se emula a una interfaz ethernet. Por ejemplo un nodo puede cambiar su IP a otra de la red o incluso crear un alias y usar una red distinta, tanto en el host como en las máquinas virtuales.
Si usamos vmnet1 para hacer NAT utilizando iptables, hay que tener en cuenta que habrá que configurar la red de la máquina virtual para añadirle una ruta por defecto y la configuración del DNS y que el firewall deberá permitir que llegue al servidor DNS

La red vmnet8 está preparada para hacer NAT, pero no podremos hacer nada con esta interfaz, por ejemplo usar Iptables para restringir las Ips que se pueden alcanzar desde el sistema que se ejecuta dentro de Vmware. El motivo es que no se usa realmente el NAT del núcleo sino un demonio, vmnet-natd, por lo que los paquetes no pasan realmente por vmnet8. Si se quiere abrir puertos, basta con editar el fichero /etc/vmware/vmnet8/nat.conf.
extraído de TLDP


7. Concluyendo
Si bien no voy a entrar en detalles de cómo configurar Solaris, voy a comentar algunas cosas útiles.
Cómo vmnet8 tiene IP 192.168.197.1, simplemente configuré la IP para Solaris dentro de ese rango (192.168.197.10).
Cómo en mi red local mi gateway es 192.168.0.3, simplemente defino ese también para Solaris. (y tengo navegación!!)
Si hago ping desde el linux:

Código:
dragonauta@herbie:~/vmware$ ping 192.168.197.10
PING 192.168.197.10 (192.168.197.10) 56(84) bytes of data.
64 bytes from 192.168.197.10: icmp_seq=1 ttl=255 time=43.2 ms
64 bytes from 192.168.197.10: icmp_seq=2 ttl=255 time=1.41 ms
64 bytes from 192.168.197.10: icmp_seq=3 ttl=255 time=0.814 ms

--- 192.168.197.10 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.814/15.166/43.274/19.876 ms

y si quisiera levantar una sesión gráfica?

Código:
dragonauta@herbie:~/vmware$ X :1 -query 192.168.197.10

y ya podemos disfrutar de una sesión gráfica como si se tratara de un servidor remoto.
Para volver al linux pulsa Ctrl+Alt+Bksp para terminar la sesión gráfica o bien pulsa Ctrl+Alt+F6 para intercambiar entre sesiones.

Obviamente, al ser Solaris, se pueden configurar todos los servicios necesarios, incluído ssh, apache, webmin, cups, y el extenso etcétera que incluye la instalación por defecto, y así probarlos si miedo a perder información valiosa.
Si gustan, una vez instalado Solaris o el sistema operativo que hubieran elegido, hagan una copia del archivo vmdk a modo de backup por si meten la pata y quieren volver atrás.

[info]Una curiosidad: en mi caso, si pulso Ctrl+Alt+F9 toma la sesión virtual a pantalla completa, y si corro el comando X que di anteriormente, debo pulsar Ctrl+Alt+F10

Espero les haya gustado y ojalá les sirva para 'jugar' con otros sistemas operativos sin tener que reparticionar o usar otro equipo.

Saludos
Muy buen material, cuando tenga un poco mas de tiempo me pondre a jugar . . .

Saludos
muy bueno!

yo virtualizo con xen no tiene contra para mi, mas porque tengo servidores dual y quad, y puedo manejar los cores, aparte tiene Paravirtualization y eso no tiene contra.

Salu2!
URLs de Referencia