Virtualizzazione: QEMU opzioni avanzate

Dopo aver visto come impiegare senza tante pretese il software per la creazione di virtual machine QEMU, si può procedere ad usare opzioni più avanzate.

Riassumendo i comandi descritti nel primo articolo:

$ qemu-img create -f qcow2 /home/user/imm.img 3000M

Crea un minidisc, ovvero un hard disc virtuale, in formato qcow2 (molto performante) che potrà avere dimensione massima di 3000 megabyte.

$ qemu -hda /home/user/imm.img -cdrom /dev/cdrom -boot d

Fa partire nella virtual machine un dispositivo ottico dal quale verrà effettuato il boot e che potrà usare il file immagine come hard disc virtuale. Il dispositivo ottico risulterà , inoltre, visibile nel sistema operativo virtualizzato.

$ qemu -m 256 /home/user/imm.img

QEMU lancerà il file imm.img e mostrerà 256 megabyte di ram al sistema ospitato.

Parametri passati a riga di comando

Modalità snapshot: L’immagine usata non verrà modificata ma le eventuali variazioni saranno salvate in un file temporaneo. Quindi se si avvia QEMU in modalità snapshot qualunque operazione che cambi qualcosa nell’immagine non verrà salvata.

$ qemu -snapshot -localtime /home/user/imm.img

Avviando QEMU usando i comandi elencati nel precedente articolo, si nota che ci sono dei piccoli problemi: l’orologio del sistema virtualizzato segna un’ora sbagliata.

Si risolve aggiungendo -localtime tra i parametri di lancio del programma:

$ qemu -m 256 -localtime /home/user/imm.img

Uno dei problemi più evidenti è l’impossibilità di accedere all’unità cdrom, per questo bisogna ricordare di inserire i parametri riportati sotto per poter usufruirne.

$ qemu -cdrom /dev/cdrom /home/user/imm.img

La stessa cosa accade alle periferiche usb che non funzionano (i mouse usb ciononostante vanno). Il supporto per i dispositivi che sfruttano il bus USB può essere attivato aggiungendo il parametro -usb.

$ qemu -usb /home/user/imm.img

Per attivare l’audio è necessario inserire il parametro -soundhw e scegliere una o più schede audio supportate dal programma:

$ qemu -soundhw ?

Per scegliere una sound blaster 16 e avviare QEMU:

$ qemu -soundhw sb16 -localtime /home/user/imm.img

E’ possibile avviare il programma anche visualizzando la virtual machine a pieno schermo, utilizzando l’opzione -full-screen

$ qemu -full-screen /home/user/imm.img

Niente vieta di adoperare i parametri appena elencati insieme ad altri, es:

$ qemu -m 256 -localtime -soundhw all -cdrom /dev/cdrom /home/user/imm.img

L’unica eccezione è l’uso di -cdrom e -hdc (simile a -hda ma che fa uso della terza periferica ide) che non può essere fatto contemporaneamente sullo stesso device.

Es: -cdrom /dev/cdrom – hdc /dev/cdrom

 

Parametri per le reti

Come visto nelle ultime righe dell’articolo antecedente la virtual machine si collega a Internet sfruttando la connessione attiva sull’ospitante.

E’ possibile accedere a una macchina virtuale dal sistema ospitante (quello “fisico”) usando una connessione di rete, magari adoperando ssh e scp.

Per avere evitare di fare confusione è possibile fare un redirect di una porta verso un’altra.

$ qemu -m 256 -redir tcp:5000::22 imm.img

La porta 22 della macchina virtuale sarà associata alla porta 5000 su sistema operativo che la ospita. Per cui per collegarsi via ssh da quest’ultimo alla virtual machine assumendo l’identità dei utentevirtuale, si usa:

$ ssh -p 5000 utentevirtuale@localhost

Allo stesso modo si possono inviare delle copie dei file dal sistema operativo reale a quello virtuale usando scp.

$ scp -P 5000 hello.txt utentevirtuale@localhost:/home/utentevirtuale/

Così il file hello.txt è stato copiato nella home di utentevirtuale sulla virtual machine.

Più virtual machine possono comunicare fra loro creando un rete vlan.

Per abilitare una macchina virtuale ad una vlan è necessario lanciare QEMU con il parametro -net nic

$ qemu -net nic /home/user/imm.img

Questa virtual machine fa parte della lan virtuale numero zero, per specificare un altro numero (per esempio la due) si può aggiungere:

$ qemu -net nic, vlan=2 /home/user/imm.img

Per collegare due macchine virtuali tramite un socket tcp in una vlan condivisa è necessario lanciare una prima virtual machine così:

$ qemu -net nic -net socket, connect=localhost:6000

La seconda virtual machine dovrà essere avviata con i seguenti parametri:

$ qemu -net nic -net socket, listen=6000

La prima istanza di QEMU, usando la vlan 0, si connette alla macchina con IP address 127.0.0.1 (localhost) alla porta 6000. La seconda macchina attende una connessione in entrata alla porta 6000.

Usando la riga di comando sulla prima macchina, si possono inviare dei file sull’altra.

$ scp -P 6000 -pr miacartella utente2@localhost:/home/utente2/

 

Monitor

 

Si possono fare delle operazioni di controllo su una macchina virtuale accedendo al suo monitor.

Per accedere al monitor, bisogna avviare la virtual machine e premere CTRL+ALT+2.

Le opzioni del monitor si possono vedere digitando help alla riga di comando del monitor.

Attenzione perché durante la visualizzazione del monitor la macchina continuerà le sue operazioni.

Per catturare un’istantanea dello schermo della macchina virtuale si può digitare:

(qemu) screendump image01

L’immagine verrà salvata nella cartella dalla quale è stato lanciato QEMU in formato .ppm (parecchio ingombrante!).

E’ possibile fare uno snapshot col nome di primoSS della macchina virtuale (stato della cpu, memoria…).

(qemu) savevm primoSS

Per vedere tutti i VM snapshot:

(qemu) info snapshots

Dopo aver scelto uno snaps. (in questo caso primoSS) lo si può caricare usando il comando:

(qemu) loadvm primoSS

Il monitor è molto utile per riprendere il controllo del sistema virtualizzato in caso di problemi oppure per svolgere attività di debugging (è disponibile il gdbserver impostato sulla porta 1234)

Per ritornare alla virtual machine basta premere i tasti CTRL+ALT+1.

2 pensieri riguardo “Virtualizzazione: QEMU opzioni avanzate

  1. sacarde ha detto:

    ciao,
    dopo aver usato il parametro \-snapshot\ e dentro la vm aver dato il comando: \savevm pippo\ …
    non trovo dove e’ stata memorizzato questo file della memoria

    mi puoi aiutare?

    grazie

  2. Big ha detto:

    Credo che sia nella cartella dalla quale hai lanciato QEMU

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *