Article by Giovanni Tarter

VirtualBox Scripting Tutorial

Questo tutorial andrà a spiegare come costruire, avviare ed eliminare una macchina virtuale per VirtualBox da linea di comando. I vari esempi di comandi si riferiscono alla CLI di un sistema GNU\Linux con Virtualbox 5.1.6 installato. I comandi dovrebbero funzionare anche su versioni meno recenti di Virtualbox. Utilizzare Virtualbox tramite la CLI risulta di vitale importanza nel caso si vogliano eseguire, ad esempio, test automatizzati o deploy automatizzati di macchine virtuali.

Come prerequisito, è necessario disporre di un’immagine in formato raw dell’hard disk della macchina virtuale. Nel caso si voglia lanciare la macchina virtuale per installare il sistema operativo (e quindi con disco non formattato), è sufficiente creare il file che diventerà il nostro hard disk virtuale ed aggiungere alla macchina virtuale creata anche il media di installazione. Per creare il file che ospiterà l’hard disk virtuale in formato raw:

#dd if=/dev/zero of=hdimage.raw bs=1M count=<size in MB>

Ovviamente, il sistema che si andrà ad installare sulla macchina virtuale dovrà essere dotato di tutti i moduli del kernel o drivers necessari al boot sull’harware simulato. Il metodo più semplice per eseguire il boot da VirtualBox di un immagine del disco, è quello di convertirla nel formato .vdi attraverso il comando:

VBoxManage convertdd <image.raw> <image.vdi> –format VDI

Questo comando, però, richiede tempo per essere eseguito perché tutto il contenuto dell’immagine del disco viene copiato (in formato binario) all’interno del file .vdi. Inoltre, alla fine della procedura, si ottengono due file (solitamente con dimensioni consistenti) quando ne potrebbe bastare uno solo.

L’alternativa a “VBoxManage convertdd” è creare un formato di immagine VMDK che al suo interno si appoggia al nostro file di immagine del disco. In questo modo non è necessario copiare il file byte a byte e la procedura di generazione del file di immagine compatibile con Virtualbox è pressoche immediata. Per creare il descrittore vmdk:

#VBoxManage internalcommands createrawvmdk -filename <output.vmdk> -rawdisk <absolute image path>

Lo svantaggio di questa soluzione è che la creazione del file VMDK richiede il path assoluto al file dell’immagine del disco. Quindi, una volta creata l’immagine in formato VMDK, non sarà più possibile spostare il file dell’immagine del disco senza dover creare nuovamente il file VDMK. Questa limitazione nasce dallo scopo primario di questa tecnica: il poter collegare dischi fisici reali a macchine virtuali. Infatti, un disco fisico reale ha un path assoluto all’interno del sistema.


Creazione della macchina virtuale:

Virtualbox mette a disposizione il comando VBoxManage per la gestione via command line delle macchine virtuali. L’utility permette molteplici operazioni per cui si rimanda al manuale nel caso fossero necessarie configurazioni non trattate in questo tutorial.

Per prima cosa creiamo la macchina virtuale:

#VBoxManage createvm –name “Thinox1” –ostype Linux –register

L’output di questo comando sarà del tipo:
Virtual machine ‘Thinox1’ is created.
UUID: 0d4363c0-da24-448c-bda8-ea46981debdd
Settings file: ‘/mnt/thrdhdd/virtualbox/Thinox1/Thinox1.vbox’

Possiamo notare come alla macchina virtuale sia stato assegnato un UUID che potrà essere usato per eseguire i comandi successivi al posto del nome della macchina. Dopo l’esecuzione del comando, la macchina virtuale sarà presente nell’interfaccia grafica di VirtualBox. Nel caso ci dimenticassimo lo switch “–register” è possibile registrare in seguito la macchina virtuale (e quindi poterla vedere nell’interfaccia grafica) con il comando:
VBoxManage registervm /mnt/thrdhdd/virtualbox/Thinox1/Thinox1.vbox

Solo dopo la registrazione della macchina virtuale sarà possibile eseguire i successivi comandi.

Impostiamo la memoria della macchina virtuale e le interfacce di rete:

#VBoxManage modifyvm “Thinox1” –memory 1024 –acpi on –nic1 bridged –nictype1 82540EM –bridgeadapter1 <ethX>

dove <ehtX> è l’interfaccia di rete dell’host fisico in bridge con quella dell’host virtuale.

Creiamo il disco in formato vmdk collegato al nostro file d’immagine del disco:

#VBoxManage internalcommands createrawvmdk -filename thinox1.vmdk -rawdisk <abspath>/thinox.raw

Before adding a virtual hard disk to a machine we need to add a virtual hard disk controller:
#VBoxManage storagectl “Thinox1” –name “IDE Controller” –add ide –controller PIIX4

Aggiungiamo alla macchina un controller per i dischi:
#VBoxManage storagectl “Thinox1” –name “IDE Controller” –add ide –controller PIIX4

Colleghiamo al controller virtuale il nostro disco .vmdk
#VBoxManage storageattach “Thinox1” –storagectl “IDE Controller” –port 0 –device 0 –type hdd –medium thinox1.vmdk

Avviamo la macchina:
#VBoxSDL –startvm Thinox1

Per eliminare la macchina virtuale è necessario per prima cosa de-registrarla da Virtualbox:
#VBoxManage unregistervm Thinox1

Successivamente è possibile eliminare manualmente i file:
#rm -rf /mnt/thrdhdd/virtualbox/Thinox1/

ed eventualmente il disco dell’immagine.

Rispondi

L'unione fa la forza

I nostri rivenditori sono in grado di sfruttare al meglio la nostra tecnologia e lavorano con noi per disegnare le soluzioni ottimali per te.

Clienti

Loro hanno scelto di utilizzare le soluzioni Praim