"Después del juego es antes del juego"
Sepp Herberger

miércoles, 1 de febrero de 2017

VirtualBoxing Windows (Parte III)

Tras unos meses funcionando con los Windows virtualizados y bien ataditos en corto, he tenido que hacer al igual que en la anterior parte unos cambios en el script de arranque de la máquina virtual.

La causa de ello es que al cerrar la máquina virtual ofrece 3 opciones: Apagar, Enviar Señal de Apagado y Guardar Estado. Si el usuario daba a "Guardar Estado" luego la máquina no podía volver a abrirse a no ser que se descartase ese snapshot creado al Guardar el Estado. Pienso que la causa podría ser que la misma máquina es compartida entre varios usuarios de ldap y puede que el que uno la guarde y otro la abra no está bien visto por VirtualBox.

Da igual. Mis instrucciones son claras: las máquinas se deben apagar, no guardar. Si alguien las guarda, descartaremos lo guardado. Y para ello nada mejor que modificar el script de arranque para que lo haga el solito:
# cat /opt/VirtualBox VMs/run_vbox 
#!/bin/bash

#Poniendo esto  /etc/environment
#export VBOX_USER_HOME="/mnt/VirtualBox VMs/VirtualBox"
#en el arranque lo tendremos para todos los usuarios. Maquinas virtuales en local.

#Si cierran la ventana a lo bruto se hace un shutdown de la máquina. Esto al .vbox de 
#la máquina
#    ExtraDataItem name="GUI/LastCloseAction" value="Shutdown"

machine="Win10"

running=$(VBoxManage list runningvms | grep $machine)
if  [ -n "$running" ]
then
   zenity --error --text "La máquina $machine ya está funcionando"  
else

  #Verificamos si está en estado "saved" y si es asi, lo descartamos. No se puede arrancar desde aqui si está en dicho estado.
  (VBoxManage showvminfo $machine | grep -e '^State.*saved.*'  2>&1 > /dev/null) &&  VBoxManage discardstate $machine
  #Si cierran la ventana a lo bruto se hace un shutdown de la máquina. Esto al .vbox de la máquina
  #    ExtraDataItem name="GUI/LastCloseAction" value="Shutdown"
  #o bien VBoxManage...
  VBoxManage setextradata $machine "GUI/LastCloseAction" "Shutdown"
  VBoxManage sharedfolder remove "$machine" --name "compartido"
  VBoxManage sharedfolder add "$machine" --name "compartido" --hostpath "$HOME" --automount
  VirtualBox --startvm $machine
fi
En negrita está la parte divertida, con:
(VBoxManage showvminfo $machine | grep -e '^State.*saved.*'  2>&1 > /dev/null)
Miramos el estado de la máquina y vemos si corresponde a "Saved". Si es así, con:
VBoxManage discardstate $machine
descartamos el guardado previo y ya se puede arrancar a continuación la máquina.

Y con esto ya tenemos otro obstáculo saltado. Sigo teniendo problemas con la distribución a toda pastilla de imágenes VDI con udpcast, pero todo se andará y podré contar como va.

No hay comentarios:

Publicar un comentario