Avviare le VM di VirtualBox in background da shell

Creato il 29 aprile 2012 da Alexiovk @archlinuxitalia

Molte volte si ha la necessità di avviare le macchine virtuali create con VirtualBox in modalità background direttamente da shell. Questo metodo risulta eccezionalmente utile se si ha una piccolo Server Casalingo accessibile solo tramite protocollo ssh e si vuole startare alcune macchine virtuali. Io personalmente lo utilizzo sopratutto quando devo fare dei test e ho bisogno di startare da remoto (in ssh sul mio server) una macchina virtuale! Vediamo come fare.

Il primo passo da fare è sicuramente creare la VM attraverso l’interfaccia grafica, oppure per i più smanettoni crearla usando il comando:

$ vboxmanage createvm --name <nomevm> --ostype <tipoOs> --basefolder <path>
$ vboxmanage registervm <path-vm>/namvm.vbox

Non ci prolungheremo sulla spiegazione della creazione attraverso shell ma per chi volesse sperimentarsi potete benissimo visionare il man o l’helper di vboxmanage.

Per avviare la VirtualMachine in background da shell, la sintassi del comando da utilizzare è la seguente:

$ vboxheadless --startvm <nomevm> &

Se si vuole ridiriggere l’output in un file la sintassi è:

$ nohup vboxheadless --startvm <nomevm> &

il quale creerà un file nella nostra home “nohup.out

Il nome delle VM è possibile reperirlo semplicemente lanciando il comando:

$ ls /home/$USER/VirtualBox\ VMs

Vi riporto ad esempio le mie VirtualMachine:

alessio@pluto ~ $ ls /home/$USER/VirtualBox\ VMs
ArchLinux  CentOS  RedHat  Squid  Test_Win
alessio@pluto ~ $

Supponiamo di voler startare la VM di ArchLinux il comando sarà:

$ nohup vboxheadless --startvm "ArchLinux" &

Ho creato per voi un piccolo script in bash scaricabile che vi da attraverso due comandi la possibilità di:

  • vedere la lista delle vostre VirtualMachine controllando quali sono startate e quali no
  • la possibilità di startare la VM

Vediamo come funziona. Per prima cosa scarichiamolo con il coamando:

$ wget http://www.archlinuxitalia.com/wp-content/uploads/2012/04/start_vm.sh_.tar.gz

Una volta scaricato estraetelo con il comando:

$ tar xvfz start_vm.sh_.tar.gz

rendiamolo eseguibile con il comando:

$ chmod +x start_vm.sh

lanciamolo senza opzioni per visualizzare l’help:

$ ./start_vm.sh

verrà visualizzato un output come questo:

alessio@pluto ~ $ ./start_vm.sh
start_vm ver: 0.2.1 stable
usage: start_vm <options> <vm>
options:
   {-s --startvm}   start a vm <name vm>
   {-l --listvm}   show list avaiable vm

Per visualizzare la lista delle vostre vm lanciate il comando:

$ ./start_vm.sh -l

ed avrete la lista delle vostre vm come nell’esempio sotto:

alessio@pluto ~ $ ./start_vm.sh -l
==> Name: ArchLinux Status: stopped
==> Name: CentOS Status: stopped
==> Name: RedHat Status: stopped
==> Name: Squid Status: stopped
==> Name: Test_Win Status: stopped

Per Startare ad esempio la VirtualMachine ArchLinux lanciate:

$ ./start_vm.sh -s ArchLinux

NOTA se avete modificato il path delle vostre virtualmachine ricordate di cambiarlo nello script.