VirtualBox: amministrazione da terminale
Introduzione
Virtualbox è un software di virtualizzazione sviluppato da Sun; normalmente viene utilizzato come un normale programma dotato di interfaccia grafica, ma con qualche accorgimento è possibile installarlo e utilizzarlo anche su una macchina server dove non sia stato installato il server grafico X.org.
La configurazione della macchina host presa in esame per la guida prevede come indirizzo IP di eth0 il seguente: 192.168.0.100.
Installazione
VirtualBox è rilasciato in due versioni e con due licenze diverse: la versione opensource ha alcune limitazioni (non gestisce l'USB, ad esempio); la versione completa non è opensource, ma è liberamente scaricabile per utilizzi non commerciali.
Per installare VirtualBox nella sua versione completa (quella opensource, chiamata virtualbox-ose è già presente nei repository di Debian) occorre aggiungere il repository di VirtualBox. Aprite il vostro sources.list:
nano /etc/apt/sources.list
e aggiungete una di queste righe:
- Lenny
deb http://download.virtualbox.org/virtualbox/debian lenny non-free
- Etch
deb http://download.virtualbox.org/virtualbox/debian etch non-free
- Sarge
deb http://download.virtualbox.org/virtualbox/debian sarge non-free
Quindi importate la chiave del repository:
wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | sudo apt-key add -
aggiornate la lista dei pacchetti e infine installate VirtualBox:
apt-get update apt-get install linux-headers-$(uname -r) build-essential virtualbox-3.0
Sostituite virtualbox-3.0
- con virtualbox per installare VirtualBox 1.6.6
- con virtualbox-2.0 per installare VirtualBox 2.0.12
- con virtualbox-2.1 per installare VirtualBox 2.1.4
- con virtualbox-2.2 per installare VirtualBox 2.2.4
Durante l'installazione, che purtroppo comprende come dipendenze circa 160 MB di librerie di KDE, di Gnome e di varia natura, vi verranno poste alcune domande:
Creating group 'vboxusers' Users of VirtualBox must be member of that group in order to have write permissions to /dev/vboxdrv. Otherwise starting of VMs will not be possible. <---- Ok Unable to find a precompiled module for the current kernel! [...] Should the vboxdrv kernel module be compiled now? <---- Yes
Probabilmente alla fine della compilazione vi sarete trovati questo messaggio d'avvertimento:
W: Possible missing firmware /lib/firmware/tigon/tg3_tso5.bin for module tg3 W: Possible missing firmware /lib/firmware/tigon/tg3_tso.bin for module tg3 W: Possible missing firmware /lib/firmware/tigon/tg3.bin for module tg3
Se, come me, siete persone che non dormono all'idea di avere un sistema con un'incompletezza, aprite di nuovo il vostro sources.list e, poichè il firmware in oggetto si trova in un pacchetto disponibile solo per Sid, modificatelo aggiungendo questa riga:
deb http://ftp.de.debian.org/debian sid main non-free
Quindi installate il pacchetto:
apt-get update apt-get install firmware-linux-nonfree
che non porta con sè alcuna dipendenza.
Come è intuibile dal nome, siate consapevoli che state installando un pacchetto contenente firmware non liberi.
Una volta completata l'operazione, modificate nuovamente il vostro sources.list ed eliminate ogni traccia di Sid!! (Siamo pur sempre su un server e vogliamo stabilità innanzitutto...).
Verificate infine che siano presenti i seguenti files:
/lib/firmware/tigon/tg3_tso5.bin /lib/firmware/tigon/tg3_tso.bin /lib/firmware/tigon/tg3.bin
Per poter utilizzare VirtualBox come normale utente, occorre infine aggiungere quest'ultimo al gruppo vboxusers:
adduser nome_utente vboxusers
Utilizzare VirtualBox da linea di comando
VirtualBox mette a disposizione lo strumento VBoxManage per creare e amministrare le macchine virtuali da terminale. E' uno strumento molto potente e complesso e permette di gestire le proprie macchine virtuali in maniera molto dettagliata; ciononostante in questa guida vedremo solo i comandi e le opzioni principali.
Per una spiegazione dettagliata del tool consiglio di far riferimento alla User Guide di VirtualBox: http://www.virtualbox.org/manual/UserManual.html#vboxmanage
Creazione di una Virtual Machine
Creiamo innanzitutto una directory dove conservare tutte le nostre macchine virtuali. Io la creerò sotto /opt, ma siete liberi di metterla dove meglio credete (ricordatevi di modificare il percorso nei comandi seguenti!):
mkdir /opt/vm
Procediamo quindi a creare la nostra virtual machine di prova:
VBoxManage createvm --name prova --basefolder /opt/vm/ --register
Analizziamo il comando seguente:
- createvm indica a VBoxManage di creare una nuova virtual machine
- --name consente di specificare il nome della nuova virtual machine. Consiglio di usare nomi senza spazi o caratteri strani
- --basefolder permette di specificare la directory dove sarà creata la virtual machine. All'interno di questa directory sarà automaticamente creata una directory avente il nome che abbiamo assegnato alla virtual machine
- --register permette di importare in VirtualBox il file XML contenente le specifiche della virtual machine
Ora modifichiamo la configurazione della nostra nuova virtual machine:
VBoxManage modifyvm prova --memory 1024MB --acpi on --boot1 dvd --boot2 disk --nic1 bridged --bridgeadapter1 eth0 --ostype Windows2003 --usb on
Le modifiche che abbiamo introdotto nella nostra virtual machine sono le seguenti:
- --memory specifica in MB la dimensione della RAM da assegnare
- --acpi abilita o disabilita la modalità ACPI
- --boot1 specifica che il primo dispositivo di boot è nel nostro caso un DVD
- --boot2 specifica che il secondo dispositivo di boot è nel nostro caso l'hard disk virtuale
- --nic1 indica che la prima interfaccia di rete virtuale utilizzerà la modalità bridge
- --bridgeadapter1 indica l'interfaccia di rete del nostro server Debian che verrà usata dalla virtual machine
- --ostype permette di specificare il tipo di sistema virtuale che installeremo. Per un elenco si dia il comando VBoxManage list ostypes
- --usb abilita o disabilita le porte USB
Ogni volta che, attraverso il parametro modifyvm apportate delle modifiche alla configurazione della vostra virtual machine, queste vengono registrate nel file XML creato in precedenza.
Ora preoccupiamoci di creare un hard disk virtuale per la nostra virtual machine:
VBoxManage createhd --filename /opt/vm/prova/prova.vdi --size 10000 --register
Piccola spiegazione:
- --filename specifica la directory dove creare il disco virtuale
- --size indica la dimensione del disco in MB
Ora modifichiamo la virtual machine collegandole il disco virtuale che abbiamo appena creato:
VBoxManage modifyvm prova -hda /opt/vm/prova/prova.vdi
Possiamo collegare alla nostra macchina un massimo di 3 hard disk virtuali (hda, hdb, hdd). hdc è riservato per il CD/DVD.
Arrivati a questo punto dobbiamo montare un'immagine ISO o un CD/DVD nel nostro lettore CD/DVD virtuale, in modo di poter installare il nostro sistema operativo virtuale. In questo esempio monterò un'immagine ISO:
VBoxManage openmedium dvd /home/ferdy/w2003.iso VBoxManage modifyvm "prova" -dvd /home/ferdy/w2003.iso
Importazione di una Virtual Machine
Se abbiamo già una virtual machine creata in precedenza, possiamo importarla all'interno della nostra installazione di VirtualBox per poi avviarla. Per importare una virtual machine esistente si utilizzi il comando:
VBoxManage registervm /opt/vm/prova2/prova2.xml
Avvio e gestione di una Virtual Machine
Arrivati a questo punto possiamo avviare la nostra virtual machine con il comando:
VBoxHeadless --startvm prova
Il comando VBoxHeadless avvia la virtual machine indicata e nel contempo inizializza una sessione VRDP Server (Virtual Remote Desktop Protocol).
Collegamento alla VM da Windows XP
Aprite "Connessione Desktop Remoto" e digitate l'indirizzo IP del vostro server Debian: si aprirà la console della macchina virtuale che avete avviato.
Comandi utili di "Connessione Desktop Remoto"
- ALT+PGSU: Passa da un programma all'altro da sinistra verso destra.
- <tt<ALT+PGGIÙ: Passa da un programma all'altro da destra verso sinistra.
- ALT+INS: Passa da un programma all'altro nell'ordine in cui sono stati aperti.
- ALT+HOME: Visualizza il menu Start.
- CTRL+ALT+INTERR: Passa da una finestra alla modalità schermo intero e viceversa.
- CTRL+ALT+FINE: Visualizza la finestra di dialogo Protezione di Windows.
- ALT+CANC: Visualizza il menu Windows.
- CTRL+ALT+SEGNO MENO (-) del tastierino numerico: Copia negli Appunti del computer remoto la finestra attiva del computer client (esegue la stessa funzione della combinazione di tasti ALT+STAMP in un computer locale).
- CTRL+ALT+SEGNO PIÙ (+) del tastierino numerico: Copia negli Appunti del computer remoto l'intera schermata del computer client (esegue la stessa funzione del tasto STAMP in un computer locale).
- CTRL+ALT+freccia DESTRA: Consente di spostarsi al di fuori dei controlli di Desktop remoto su un controllo nel programma host, ad esempio un pulsante o una casella di testo. Utile quando i controlli di Desktop remoto sono incorporati in un altro programma (host).
- CTRL+ALT+freccia SINISTRA: Consente di spostarsi al di fuori dei controlli di Desktop remoto su un controllo nel programma host, ad esempio un pulsante o una casella di testo. Utile quando i controlli di Desktop remoto sono incorporati in un altro programma (host).
- La combinazione CTRL+ALT+CANC ha sempre effetto sul desktop del computer locale. Per inviare la combinazione CTRL+ALT+CANC al computer remoto, è necessario premere CTRL+ALT+FINE.
Collegamento alla VM da Linux
Aprite un terminale e digitate:
rdesktop -a 16 192.168.0.100
Si aprirà la console della macchina virtuale che avete avviato.
Per arrestare la virtual machine si usi il comando:
VBoxManage controlvm prova savestate
Avvio automatico di una Virtual Machine
Per avviare una virtual machine come demone al boot di Debian sono sufficienti pochi passi.
Inannzitutto creiamo un file per il nostro script di boot:
nano /etc/init.d/provavm
e inseriamoci questo codice:
#!/bin/sh # # Avvio automatico della VM prova # case "$1" in start) echo "Starting Virtual Machine prova" /usr/bin/VBoxHeadless --startvm prova >&2 ;; stop) echo "Stopping Virtual Machine prova" VBoxManage controlvm prova savestate >&2 ;; *) echo "Usage: $0 {start|stop}" >&2 exit 1 ;; esac
ANCORA DA COMPLETARE