Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

VirtualBox Headless, per server senza interfaccia grafica

VBoxHeadless: creare e gestire una macchina virtuale su server utilizzando la riga di comando e il protocollo RDP
VBoxHeadless: creare e gestire una macchina virtuale su server utilizzando la riga di comando e il protocollo RDP
Link copiato negli appunti

Eccoci di nuovo a parlare di virtualizzazione utilizzando il software Oracle VM VirtualBox. Nel precedente articolo avevamo visto come installare e configurare una macchina virtuale (VM) Windows XP su sistema operativo host Linux Fedora 14 a 64 bit, in lingua italiana, con desktop Gnome. Avevamo largamente sfruttato la comoda interfaccia grafica messa a disposizione dal programma.

Spesso però i server Linux non hanno un ambiente desktop e sono gestiti da remoto sfruttando il protocollo SSH. Per fortuna VirtualBox rende disponibile un front-end alternativo, denominato VBoxHeadless, che non produce alcun output visibile sul sistema host, ma consente di connettersi alle macchine virtuali attraverso il protocollo RDP (Remote Desktop Protocol). Prima di procedere potrebbe esservi utile la lettura di Utilizzare il Desktop Remoto di Microsoft con Linux.

Di seguito ripercorreremo le tappe del precedente articolo: installazione del software VirtualBox, creazione di una macchina virtuale Windows XP (poco cambierebbe se fosse Windows 7 o Windows Server 2008) ed infine installazione del sistema operativo guest. Non approfondiremo aspetti già trattati in dettaglio, quindi, se non l'avete fatto, consiglio per lo meno una lettura veloce di Windows dentro Linux: la virtualizzazione con VirtualBox.

Installiamo VirtualBox

Immaginiamo di accedere da remoto al nostro server Fedora 14 tramite SSH con un account utente non privilegiato. Naturalmente per l'installazione dovremo poter assumere i privilegi di root. Tra i prerequisiti ricordo brevemente l'aggiornamento, consigliato, del kernel e la necessaria presenza degli header del kernel medesimo per l'installazione dei moduli vboxdrv, vboxnetflt, vboxnetadp. Per facilitare futuri aggiornamenti, inoltre, risulterà utile il pacchetto dkms, mentre in questo caso non sono necessarie le librerie grafiche Qt e SDL.

Dovremo sicuramente installare, se assenti dal sistema, i pacchetti GNU compiler e GNU Make:

$ yum install gcc make

A questo punto posizioniamoci in una directory di lavoro e preleviamo dal sito del produttore l'rpm corrispondente alla nostra distribuzione: Fedora 14 64 bit.

$ cd /home/ermanno/vbox
$ wget http://download.virtualbox.org/virtualbox/4.0.4/VirtualBox-4.0-4.0.4_70112_fedora14-1.x86_64.rpm

Calcoliamo il checksum SHA256 del file appena scaricato:

$ sha256sum VirtualBox-4.0-4.0.4_70112_fedora14-1.x86_64.rpm

e confrontiamolo con quello fornito dal sito

Virtualbox Extension Pack

Sin qui non ci sono sostanziali differenze con la procedura già analizzata, ma ora dobbiamo discostarcene per occuparci dell'Extension Pack. Infatti dalla versione 4.0 il software è stato scomposto in un pacchetto base, rilasciato con licenza GNU General Public License V2, ed un Extension Pack di cui sono disponibili solo i binari, rilasciato con licenza VirtualBox Personal Use and Evaluation License (PUEL). Lo scopo delle estensioni è introdurre alcune funzionalità aggiuntive, tra queste prenderemo in considerazione solo il VirtualBox Remote Desktop Protocol (VRDP). Altro non è che l'implementazione di Oracle all'interno del proprio prodotto del protocollo RDP di Microsoft. Preleviamo, dunque, il corrispondente file:

ed installiamolo:

$ VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.0.4-70112.vbox-extpack 

Abbiamo fatto ricorso al comando VBoxManage

$ VBoxManage --help

A questo punto, prima di lasciare i panni di root, aggiungiamo l'utente non privilegiato con cui abbiamo fatto il login e con cui presumibilmente vogliamo gestire la macchina virtuale, al gruppo vboxusers

Creiamo la VM

Ora come utente non privilegiato creiamo la nuova macchina virtuale che chiameremo winxp.

Nella creazione, createvm , abbiamo usato due ulteriori opzioni --ostype --register registrare VBoxManage registervm

L'output del comando fornisce alcuni dettagli che è utile analizzare. Innanzitutto possiamo osservare che alla macchina virtuale viene assegnato un identificativo univoco, UUID. Questo può essere utilizzato al posto del nome descrittivo, winxp, anche se risulta alquanto scomodo. Inoltre ci viene segnalato che il file di configurazione, denominato winxp.vbox VirtualBox VMs/winxp

Ora inseriamo qualche opzione di configurazione ad hoc:

VBoxManage modifyvm  "winxp" --memory 256 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0

Abbiamo modificato, modifyvm , la macchina virtuale aggiungendo alcuni parametri di immediata interpretazione. Per completezza però analizziamoli velocemente: --memory --acpi --boot1

Ricordo la possibilità di adottare altri tipi di configurazione, tra cui il predefinito NAT, --nic1 nat

Passiamo ora alla creazione del disco fisso virtuale al quale corrisponderà un file con estensione .vdi

$ VBoxManage createhd --filename "winxp.vdi" --size 10000

Aggiungiamo una controller IDE:

$ VBoxManage storagectl "winxp" --name "IDE Controller" --add ide --controller PIIX4

Impostiamo il disco fisso winxp.vdi

A questo punto creiamo un'immagine ISO del sistema operativo Windows XP che chiameremo winxp.iso, e trasferiamola via scp sul server. Per comodità utilizziamo la medesima directory di lavoro vista il precedenza. Colleghiamo il file winxp.iso in modo che la VM lo veda come un cd inserito nel lettore CD/DVD e possa così effettuare il boot da quest'ultimo:

Avvio della VM

Prima di lanciare la nostra macchina virtuale apportiamo ancora qualche piccolo ritocco. Sappiamo che ci collegheremo da remoto utilizzando il protocollo VRDP e che per impostazione predefinita il server VRDP accetterà connessioni sulla porta TCP 3389. Potrebbe essere utile, per alcune considerazioni successive, utilizzare una porta diversa ad esempio la 5000:

È giunto il momento della verità: dobbiamo avviare la VM. Possiamo farlo in due modi, il primo ricorrendo all'onnipresente VBoxManage e specificando con l'opzione --type

$ VBoxManage startvm "winxp" --type headless

Il secondo metodo, da preferire per un debug degli errori più accurato, prevede l'utilizzo di VBoxHeadless

Supponendo di non aver ricevuto alcun errore all'avvio possiamo procedere con l'installazione del sistema guest.

Una piccola nota a margine: se invece di un sistema Windows volessimo installare Linux potrebbe essere sufficiente una console ssh per gestirlo. In tal caso il server VRDP risulterebbe inutile:

Nella prossima parte dell'articolo vedremo come installare il sistema ospite, come migliorare la sicurezza della nostra installazione e tutti i comandi per gestire la macchina virtuale.

Installiamo il sistema ospite

Il primo problema da affrontare è l'accesso alla macchina virtuale. Per forza di cose ci sarà necessario un programma client RDP. Se il nostro pc è dotato di un sistema Windows (XP o successivo) tra il software di base troviamo già "Connessione desktop remoto" che fa' al caso nostro. Se invece usiamo Linux sarà necessario installare il client open source rdesktop.

Possiamo ora collegarci dal nostro pc utilizzando il numero IP o l'hostname del server e specificando la porta:

$ rdesktop -a 16 -g 1024x768 server.miodominio.it:5000

le opzioni aggiuntive servono solo a specificare una profondità del colore limitata a 16 bit ed una geometria del desktop pari a 1024x768.

Se tutto funziona a dovere ci troveremo di fronte alla schermata blu d'installazione di Windows XP e potremo procedere come di consueto. Per ulteriori approfondimenti relativi alla post-installazione, in particolare Guest Additions, vi rimando al precedente articolo

Penso che qualcuno di voi abbia già storto il naso per il tipo di licenza dell'Extension Pack
Nel caso di Windows XP è possibile attivarlo con tasto destro su Risorse Del Computer Proprietà Connessione Remota Consenti agli utenti di connettersi in modo remoto al computer collegarci al sistema guest

Per disinstallare l'Extension Pack basta il comando:

In alternativa sarebbe possibile creare e configurare una macchina virtuale Windows su un host locale avendo cura di abilitare il servizio RDP. Successivamente trasferirla sull'host remoto effettuandone l'importazione. Purtroppo lo spazio a disposizione non ci permette di approfondire l'argomento.

Alcune considerazioni sulla sicurezza

Nella procedura che abbiamo seguito la connessione al server VRDP non richiede alcuna autenticazione il che, salvo trovarci in ambienti operativi particolarmente sicuri, non è una buona cosa. Oltre al momento dell'installazione, pensate al richio di lasciare per dimenticanza una sessione di Windows aperta. Chiunque collegandosi prima del lock automatico potrebbe avere accesso al nostro sistema.
Meglio ricorrere alla libreria VBoxAuth che, per impostazione predefinita, si appoggia al sistema di gestione delle utenze dell'host. In particolare su Linux opererà tramite PAM. In tal modo, previa comunicazione delle proprie credenziali d'accesso, ciascun utente presente sull'host, anche non corrispondente a quello con cui gira la VM, potrà collegarsi ad essa.
Un'altra utile libreria VBoxAuthSimple consente invece di astrarre l'autenticazione dal particolare sistema operativo, utilizzando credenziali inserite nella sezione "extradata" del file di configurazione. Per abilitarla digitiamo:

successivamente agiamo sulla VM:

le opzioni possibili sono null, external, guest. La prima non prevede autenticazione, la seconda è quella da noi utilizzata, mentre la terza è ancora in fase di test.

Generiamo ora una password criptata mediante l'utility resa disponibile da VirtualBox:

aggiungiamo utente e password alla sezione extradata:

Per la connessione ora saremo obbligati a fornire le nostre credenziali:

Comandi utili per la gestione

Di seguito vediamo i principali comandi che ci permettono di gestire la/le VM installate sul nostro server. Innanzitutto possiamo ottenere l'elenco di quelle registrate:

Se volessimo la lista delle macchine virtuali attive:

$ VBoxManage list runningvms

Per visualizzare le caratteristiche di una specifica macchina:

$ VBoxManage showvminfo "winxp"

Per fermare la VM "staccando il cavo di alimentazione":

$ VBoxManage controlvm "winxp" poweroff

per una chiusura del sistema controllata:

VBoxManage controlvm "winxp" acpipowerbutton

per farlo invece salvando lo stato su disco:

VBoxManage controlvm "winxp" savestate

per resettarla:

$ VBoxManage controlvm "winxp" reset

per metterla in pausa e risvegliarla:

$ VBoxManage controlvm "winxp" pause
$ VBoxManage controlvm "winxp" resume

Ovviamente la lista delle possibili opzioni sarebbe ancora lunga, in caso di necessità potete consultare da console l'help dei comandi stessi oppure, per maggiori approfondimenti, il manuale

In chiusura, come già fatto nel precedente articolo, vi ricordo che abbiamo mosso solo i primi passi nel mondo di VirtualBox ricco di numerose altre caratteristiche come importazione ed esportazione di VM, snapshots, condivisioni host/guest, supporto per dischi virtuali di terzi ad esempio VMware VMDK o Microsoft VHD. Per nostra fortuna la dettagliata documentazione fornita da produttore rappresenta una miniera inesauribile di informazioni.

Ti consigliamo anche