Mantenere l’attivazione di una macchina virtuale Windows in VirtualBox

L’attivazione di Windows è una delle cose che più mi infastidisce lavorando con la virtualizzazione, la comodità nel virtualizzare è proprio quella di non preoccuparsi di tutto quello che passa al livello inferiore, hardware o sistema operativo host, ma questa è una cosa che Windows non gradisce, o almeno non gradisce se si lasciano le impostazioni di default su Virtualbox.

Un piccolo passo di teoria per capire cosa andremo a fare; Virtualbox assegna un [tooltip content=”identificativo univoco universale”]UUID[/tooltip] (http://it.wikipedia.org/wiki/UUID) a ogni macchina virtuale, questo id è assegnato in maniera automatica ogni volta che si crea o importa una macchina virtuale, questo è anche l’UUID che verrà passato al sistema Guest come proprio id hardware.

Il problema è proprio questo, la stessa macchina virtuale importata (anche sullo stesso pc/server su cui si è fatta l’esportazione) si vedrà assegnato un UUID diverso dall’originale. Questo per Windows è un problema perché l’attivazione controlla anche questo valore per confermarne la genuinità, e pesa più delle altre modifiche (insieme all’indirizzo MAC della scheda di rete)

Nota: Controllate, prima di seguire questa guida, che la vostra licenza Microsoft consenta ciò che volete fare in caso vogliate “spostare” la macchina virtuale da un PC/Server ad un’altro.

Su Linux/Mac OS X

Lanciate una finestra Terminale


Su Windows

Lanciate un Prompt dei comandi, dovrete probabilmente portarvi nella cartella di installazione di Virtualbox, ad es. C:\Program Files\Oracle\VirtualBox, e lanciate il comando

N.B. se ricevete l’errore seguente
VBoxManage.exe: error: Failed to create the VirtualBox object!
VBoxManage.exe: error: Code CO_E_SERVER_EXEC_FAILURE (0x80080005) - Server execution failed (extended info not available)
VBoxManage.exe: error: Most likely, the VirtualBox COM server is not running or failed to start.

Significa che probabilmente avete avviato il prompt come amministratore, in questo caso VBoxManage non funziona, aprite un nuovo prompt come utente non privilegiato.


L’output sarà del tipo

UUID: fd55ef80-2a19-487b-b273-6e07ff7446b6
Hardware UUID: fd55ef80-2a19-487b-b273-6e07ff7446b6
...

Dove per “UUID” intende l’identificativo unico interno per virtualbox, mentre come “Hardware UUID” intende l’identificativo unico della scheda madre virtuale, cpu e memoria. Come vedete UUID e Hardware UUID hanno lo stesso valore, vedremo ora di “scollegarli” l’uno dall’altro.


Se non avete ancora installato/attivato il sistema operativo guest

Se Windows non è ancora attivato vi basterà scrivere: (N.B. Per generare un UUID potete usare http://www.uuidgenerator.net/ versione 4)

Una volta fatto eseguite nuovamente il primo comando e l’output dovrebbe confermare il nuovo hardware id, ad es
UUID: fd55ef80-2a19-487b-b273-6e07ff7446b6
Hardware UUID: d3f28ceb-bd12-4957-8b64-04adb7a9e267
...

In questo caso avete finito, installate il sistema operativo e ogni volta che cambierete il sistema operativo host, esporterete per poi importare in seguito la macchina virtuale, Windows manterrà la sua attivazione.


Se avete già attivato il sistema operativo guest

Nel caso l’attivazione sia già stata fatta dovrete andare a modificare il file di configurazione della macchina virtuale, se siete incerti su dove siano tali file fate riferimento a http://www.virtualbox.org/manual/ch10.html per localizzarne la cartella, come di consueto in questi casi, fate un backup del file prima di modificarlo.

Aprite il file di configurazione ad esempio nel mio caso “Windows 7.vbox” con un editor di testo (non usate il Blocco note su Windows, ma Wordpad) nel file cercate la stringa ad inizio file del tipo

<Machine uuid="{fd55ef80-2a19-487b-b273-6e07ff7446b6}" name="Windows 7" OSType="Windows7_64" ...

Salvatevi l’uuid da qualche parte, ci servirà più tardi, generate un nuovo uuid e sovrascrivetelo in questo modo

<Machine uuid="{17ef5b5b-3305-4303-ac0a-b1516b1bba77}" name="Windows 7" OSType="Windows7_64" ...

Cercando più in basso incontrerete

<Hardware version="2">

Aggiungeteci l’uuid salvato da sopra, nel mio caso uuid=”{fd55ef80-2a19-487b-b273-6e07ff7446b6}”

<Hardware version="2" uuid="{fd55ef80-2a19-487b-b273-6e07ff7446b6}">

E abbiamo finito anche in questo caso.


Nota: Quando eseguite la procedura di importazione NON dovete spuntare “Inizializza nuovamente l’indirizzo MAC di tutte le schede di rete”, questo provocherebbe l’invalidazione dell’attivazione di Windows e renderà vana la procedura fatta sin qui. Se avete bisogno di utilizzare un altro indirizzo MAC attivate una seconda scheda di rete nelle opzioni e utilizzate quella. Tenete a portata di mano il file .vbox modificato e nel caso servisse sovrascrivetelo subito dopo il completamento dell’importazione, prima di avviare la macchina virtuale importata.