Sun Virtualbox

Appunti sparsi su Virtualbox versione 2.x.

Installazione su Debian Lenny

Sul sito di Virtualbox (www.virtualbox.org) ci sono le indicazioni su come installare il pacchetto gia` pronto di Virtualbox PUEL (Personal Use and Evaluation License) (ma dico io, vi sembra una sigla decente "PUEL"? A me fa troppo ridere) su Debian Lenny (32 e 64 bit). In pratica si tratta di aggiungere un repository e fare un aptitude install.

Una volta installata, supponendo di usare sempre dei server senza interfaccia grafica, resta il problema di gestire le macchine virtuali senza interfaccia grafica, appunto. Il che non e` una tragedia, comunque.

Innanzitutto, VirtualBox (e le relative VM) possono essere fatti girare da root, o anche da un utente normale, purche` esso appratenga al gruppo "vboxusers", che viene creato automaticamente dal setup di VirtualBox stesso.

In questa configurazione creo un utente "virtualbox" il quale avra` il compito di fare girare la mia VM.

adduser --ingroup vboxusers  virtualbox

A questo punto, posso fare login in ssh da un pc con installato Linux e con X, usando lo username appena creato. Siccome vorrei poter lanciare l'interfaccia grafica di Virtualbox, usando come schermo quello del mio PC con X, dovro` ridirigere opportunamente lo schermo. Facendo ssh al server con il parametro "-X" si ridirige una sessione X11 sul proprio PC, quindi e` sufficiente usare il comando:

ssh  virtualbox@server -X

Seguito dal comando per lanciare l'interfaccia grafica di Virtualbox, che e`

VirtualBox

Ora e` possibile configurare una macchina virtuale usando l'interfaccia grafica, che e` molto comoda. Una volta finito, si potra` lanciare la macchina virtuale da command line.

Configurazione di una VM

Per poter accedere alla console delle VM in assenza dell'interfaccia grafica sul server, la soluzione piu` comoda offerta da Virtualbox e` quella di usare il protocollo RDP. Quando si crea una VM, alla voce della configurazione video, sara` sufficiente abilitare il "Remote Display" scegliendo una porta diversa per ogni VM.

Una volta fatto questo, avviare la VM da console di testo sul server, con il comando:

VBoxManage startvm "nome della VM" -type vrdp

Sara` ora possibile connettersi al suo video usando un client RDP, puntando all' IP del server (e NON quello della VM) sulla porta indicata prima in configurazione.

Comandare una VM da console di testo

Da una console di testo e` facile avviare, fermare o sospendere una VM usando il comando VboxManage.

Per avviare una VM:

VBoxManage startvm "nome della VM" -type vrdp

Per sospendere una VM (salva lo stato sul disco e permette di tornare, usando il comando di avvio indicato sopra, esattamente dove si era quando si e` sospesa la VM)

VBoxManage controlvm "nome della VM" savestate

Per arrestare una VM usando una procedura graceful per fermare il sistema guest anziche` spegnere alla brutta, si puo` simulare la pressione del tasto di accensione. Questo sulle macchina moderne genera una evento ACPI che induce il sistema operativo a fare uno shutdown. Questo sistema funziona con i sistemi che gestiscono tale segnale, ovviamente. Linux (moderno) e Windows XP funzionano.

VBoxManage controlvm "nome della VM" acpipowerbutton

Uno spegnimento secco (non e` carino) si ottiene con

VBoxManage controlvm "nome della VM" poweroff

Lanciare e fermare una VM al boot/shutdown dell' host

Per lanciare una VM e fermarla (sospendendola) durante l'avvio e lo shutdown della macchina host, mi sono accrocchiato questo SCHIFOSO script da mettere in /etc/init.d e linkare opportunamente in /etc/rc2.d e /etc/rc6.d. Lo script si chiama /etc/init.d/virtualbox-vm e contiene:

# start and stop virtualbox virtual machines
# disgusting script by Kurgan

### BEGIN INIT INFO
# Provides:          virtualbox-vm
# Required-Start:    $remote_fs $syslog vboxdrv
# Required-Stop:     $remote_fs $syslog vboxdrv
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and Stop Virtualbox Virtual Machines
# Description:       Debian init script for VirtualBox Virtual Machines
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON="/usr/bin/VBoxManage"
NAME="VboxVM"
DESC="VirtualBox Virtual Machines"


test -x $DAEMON || exit 0

. /lib/lsb/init-functions
set -e

case "$1" in
  start)

        log_daemon_msg "Starting $DESC" "$NAME"
        VBoxManage startvm "nome della VM" -type vrdp
        log_end_msg $?
        ;;
  stop)
        log_daemon_msg "Stopping $DESC" "$NAME"
        VBoxManage controlvm "nome della VM" savestate
        log_end_msg $?
        ;;
  *)
        echo "Usage: $0 {start|stop}" >&2
        exit 1
        ;;
esac

exit 0

Questa porcheria di script, una volta indicato il nome corretto della VM nelle due righe apposite, e una volta linkato dentro a /etc/rc2.d/S99virtualbox-vm e dentro a /etc/rc6.d/K10virtualbox-vm, consente di avviare la VM al boot e fermarla allo shutdown.