Virtualizzazione: QEMU opzioni avanzate
Dopo aver visto come impiegare senza tante pretese il software per la creazione di virtual machine QEMU nel precedente articolo, 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 (anche se tasteria e mouse usb vanno). Il supporto per i dispositivi che sfruttano il bus USB, come chiavette, 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 sul sistema 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. Per esempio con:
$ 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”
I commenti sono chiusi.
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
Credo che sia nella cartella dalla quale hai lanciato QEMU