Publicado por : gon en (Sistema Operativo, Software Libre)
Virtualbox como herramienta para administradores
Etiquetado como : administrador de sistemas, servicio, servicios, virtualbox, virtualización, vrdp
Además de la redirección de puertos, hay otra característica de Virtualbox muy útil para administradores: correr una máquina virtual SIN interfaz gráfica.
Supongamos esta situación: Tenemos un servidor virtualizado (da lo mismo si es linux, windows, solaris, …), debemos ejecutarlo cada vez que parta el sistema y además debe consumir los menos recursos que sea posible.
La solución pareciera ser muy sencilla. Virtualbox trae los comandos: vboxsdl y vboxheadless. Ambos permiten correr una máquina virtual sin abrir el administrador de máquinas virtuales.
vboxsdl ejecuta el sistema virtualizado en una ventana de interfaz gráfica, de hecho es lo mismo que correr el sistema desde el administrador de máquinas virtuales, pero si lo llamamos directamente, nos evitamos tener que recurrir a este.
vboxsdl -startvm "NOMBRE_DE_LA_MAQUINA_VIRTUAL"
vboxheadless ejecuta el sistema virtualizado, pero sin levantar interfaz gráfica alguna, por lo cual es posible arrancar una máquina virtual solo con la consola. Esto es especialmente útil para servidores que prescinden del Xserver.
vboxheadless -startvm "NOMBRE_DE_LA_MAQUINA_VIRTUAL"
Ahora, hay un pequeño problema. Si no podemos ver la máquina virtual ¿cómo la controlamos?
Tengo acá un par de consejos que he aplicado en windows xp virtualizando windows 2000 server, pero debiera poder aplicarse lo mismo en un host con Linux u otros sistemas.
Configurar la máquina virtual con escritorio remoto
Si alguien ha ocupado las guest additions, usar un escritorio remoto es algo similar. Primero, debemos habilitar el escritorio remoto para la VM, en el administrador de máquinas virtuales de Virtualbox:

Consejo: cambiarle el puerto predeterminado, en windows sobre todo, debido a que el servicio de escritorio remoto reserva el uso del puerto por defecto. Si tenemos más de una máquina virtual, entonces también debería tener cada una su propio puerto. En mi caso, lo deje con el puerto 1000.
Luego, con el mismo cliente de escritorio remoto de windows ( Inicio -> todos los programas -> Accesorios-> Conexión a escritorio remoto ), podemos conectarnos al servidor de virtualbox, usando como host localhost:1000.
En Kubuntu, viene el cliente krdc, que debería permitir hacer lo mismo (no he probado aún).
Ajuste para host Windows: arrancar la VM sin mostrar la consola de cmd
Solo hay una pequeña gran incomodidad. Justamente, me quería ahorrar una ventana en la barra de tareas corriendo la VM en el fondo, pero igual me quedó visible la consola de cmd.
Hay varias formas para ejecutar un comando en windows, pero la más compleja consiste en usar unos parámetros de la WINAPI a nivel de código fuente. Por lo tanto no es una solución viable.
La única solución satisfactoria que he encontrado hasta el minuto, es usar una combinación de un archivo por lotes (.bat) con un vbscript (.vbs) que se pueda ejecutar desde el escritorio:
vboxsart.bat:
"C:\Archivos de programa\Sun\xVM VirtualBox\VBoxHeadless.exe" -startvm "NOMBRE_DE_MAQUINA_VIRTUAL"
(modificar la ruta a vboxheadless si es necesario)
En el mismo directorio, creamos vboxstart.vbs:
Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "vboxstart.bat" & Chr(34), 0 Set WshShell = Nothing
Finalmente, con crear un acceso directo y moverlo a Inicio->Todos los programas -> Inicio, o cualquier otra forma de arrancar comandos al bootear windows, quedaría listo.
Afortunadamente en linux es mucho más fácil arrancar estos comandos, sobre todo porque podemos crear scripts de inicio como servicio, o por último cuando lo hacemos desde X, no se levanta ninguna ventana de consola (por defecto).
Otro consejo
Windows 2000 Server tiene una maña. Para hacer iniciar la sesión hay que presionar ctrl+alt+supr. Si lo hacemos, responderá la combinación de teclas del sistema Host. Para evitar eso, se puede configurar a mano un inicio de sesión automático en el sistema Guest. En general, se aconseja evitar el uso de atajos de teclado en las máquinas virtuales.
Tan solo falta…
Bueno, algo que no he investigado aún, es como crear y configurar la máquina virtual por consola, sin necesitar el asistente gráfico de virtualbox. Seguramente es muy sencillo, así que se deja como ejercicio para el lector. Hint: RTFM.
Otro detalles que sí me falta, y podría ser serio, es como mandarle una señal de apagado a la máquina virtual, para poder bajarla en forma segura. Por el momento, solo puedo apagar la máquina matando el proceso de la máquina virtual (inseguro) o apagando el sistema invitado a través del escritorio remoto.
Me acaban de mandar un enlace de un script de servicio, para arrancar y detener una máquina virtual en Archlinux.
Finalmente, quedo en deuda con algunas pruebas en Kubuntu hasta nuevo aviso.

Bueno creo que el codigo que indicas aqui tiene error
porque no me funciona.Si me puedes ayudar.
Set WshShell = CreateObject(“WScript.Shell”)
WshShell.Run chr(34) & “vboxstart.bat” & Chr(34), 0
Set WshShell = Nothing
Esta muy bueno el texto.muchas gracias
A mi me ha funcionado poniendo esto:
Set WshShell = CreateObject(“WScript.Shell”)
WshShell.Run “vboxstart.bat”,0,1
Set WshShell = Nothing
Perfecta la explicacion, me funciona barbaro.
Para detener la maquina virtual desde la consola podemos usar:
$ VBoxManage controlvm “SnMiguel” poweroff