Qemu – emulatore virtuale di sistemi operativi

  • Categoria dell'articolo:Linux / Tutorial

Qemu è l’acronimo di Quick EMUlator, un software che crea delle virtual machine ( ovvero macchine virtuali da questo momento indicate con “VM”) che consentono di far “girare” (emulare) un sistema operativo all’interno di una macchina ospite purché con architettura x86, AMD64, PowerPC, MIPS e ARM. Supporta Linux, Windows e Mac.
Disponibile per Linux, Windows e Mac.
Sito ufficiale https://www.qemu.org

Installazione su Linux Mint
  1. da terminale digita il comando:
    apt install bridge-utils virt-manager
  2. Dal menu lancia il programma [Virtual Machine Manager].
  3. Se ricevi l'errore "Unable to connect to libvirt qemu:///system" prova a riavviare il computer.

Installazione su Windows
  1. Scarica i seguenti file:
  2. installa qemu
  3. crea una cartella dove risiederanno le vitual machine, es. d:\Programmi\QemuVM\
  4. avvia il portable di qtemu
    • compila i seguenti campi:
    • qemu binary path: ( percorso di qemu, es. c:\Program Files\qemu\)
    • qemu machine path: ( percorso della cartella contenente le vm, es. d:\Programmi\QemuVM\)

Crea una macchina virtuale
  1. click [Menu/File/New virtual machine].
  2. scegli [local install].
  3. seleziona la ISO contenente il sistema operativo da installare.
    nel caso Qemu non abbia i permessi per accedere alla ISO, esegui la correzione come proposto dal programma.
    tuttavia è possibile che la ISO risieda in uno spazio non accessibile e che dia errore al momento dell'installazione.
    copia la ISO in un hardisk locale.
  4. imposta la memoria ram e il numero di processori da associare alla VM.
  5. gestisti lo spazio destinato alla VM.
    • spunta [v] enable storage...
    • digita la dimensione in GiB.
    • spunta (o) select or create... + click [Manage...].
    • se già non esiste, crea un Pool dove allocare la tua VM.
      • click [+ Add Pool].
      • dai un nome al Pool.
      • seleziona il tipo di Pool, se locale: dir:Filesystem Dir.
      • click [Browse] e seleziona la dir che conterrà il Pool.
    • crea il volume.
      • click [+ Create new volume].
      • dai un nome al volume, solitamente il nome del sistema operativo.
      • format: raw
      • digita la capacità della VM.
      • spunta [v] Allocate entire volume now.
    • attendi la creazione del volume.
    • seleziona il volume appena creato e click [Choose volume].
    • nella finestra "New VM step 4/5" click [Forward].
    • nella finestra "New VM step 5/5" scegli iltipo di network:
      • NAT : la VM sarà isolata dal resto della intranet, ma potrà comunque accedere ad internet.
      • Bridge : la VM farà parte della intranet e riceverà un IP dal modem/router DHCP.
        la scelta Bridge non viene ben supportata das Qemu.
      • Macvtap : funziona per OS Linux Debian, ma potrebbe non funzionare con altri OS.
        • device name: il nome della scheda di rete delpc host, es. enp0s31f6.
        • device model: e1000e
    • il programma lancia l'installazione del OS dalla ISO selezionata.

Avvia una macchina virtuale

Dalla finestra di [Virtual Machine Manager] seleziona la VM e click su [> Power on].

Aggiungi una cartella condivisa
  1. aggiungi la cartella da condividere alla VM.
    1. dal programma VMM seleziona la VM e click [open].
    2. click [details].
    3. seleziona il tab [Memory] dall'elenco sulla sx.
      • spunta [Enable shared memory].
    4. click [Add hardware].
    5. seleziona [Filesystem].
    6. seleziona il driver: "virtiofs"
    7. click [Source path/Browse].
    8. click [Browse local], seleziona la cartella da condividere, click [open].
    9. digita il nome con cui la cartella verrà condivisa nella VM, es xxpcnnnnName
    10. click il tab [XML] in alto e verifica se i parametri corrispondono:
      <filesystem type="mount" accessmode="passthrough">
      <driver type="virtiofs"/>
      <source dir="/home/debugpoint/Pictures"/>
      <target dir="linux_pictures"/>
      <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
      </filesystem>
    11. click [finish].
    12. avvia la VM.
  2. per guest LINUX
    1. crea il punto di mount nella VM Linux.
      • crea una cartella nel punto di mount con il nome digitato  al punto 1.h
        se necessario esegui esegui con i privilegi di admin, da terminale digita:
        mkdir /mnt/xxpcnnnnName
      • monta la cartella,da terminale digita:
        sudo mount -t virtiofs xxpcnnnnName /mnt/xxpcnnnnName
    2. modifica il file [/etc/fstab] in modo damontare la cartella ad ogni avvio della VM.
      • apri il file [/etc/fstab] con l'editor, da terminale digita:
        sudo nano /etc/fstab
      • aggiungi la seguente riga:
        xxpcnnnnName /mnt/xxpcnnnnName virtiofs defaults 0 0
  3. per guest Windows
    1. abilita Windows a leggere partizioni UNIX-like,  scarica i driver WinFSP da https://github.com/winfsp/winfsp/releases/
      installa i driver; è necessario il solo pacchetto [Core].
    2. scarica il pacchetto delle guest addiction da https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/
    3. riavvia la VM.
    4. verifica che il driver sia operativo:
      • apri il [Device Manager] di Windows.
      • cerca sotto [System devices] il driver [VirtIO FS Device].
      • se il driver ha un punto esclamativo devi aggiornare manualmente; segui le istruzioni https://virtio-fs.gitlab.io/howto-windows.html.
    5. avvia il Servizio.
      • da pannello di controllo click [Servizi], oppure da terminale (CMD) o da ricerca digita il comando: services.msc
      • trova il servizio [VirtIO-FS Service] e avvialo; impostalo su avvio in automatico per il prossimo reboot.
      • in alternativa puoi usare il terminale (CMD):
        sc create VirtioFsSvc binpath="C:\Program Files\Virtio-Win\VioFS\virtiofs.exe" start=auto depend="WinFsp.Launcher/VirtioFsDrv" DisplayName="Virtio FS Service"
        sc start VirtioFsSvc
    6. apri [Explore] e verifica l'avvenuto montaggio della cartella.

Attivare una connessione Bridge

Potrebbe essere necessario configurare un bridge di rete per facilitare la comunicazione tra sistemi sulla stessa subnet.
Un bridge di rete è uno switch virtuale che incanala i guest virtuali verso la scheda di interfaccia di rete (NIC) fisica dell'host RHEL.
La NIC fisica del server host è collegata a un router vero e proprio con accesso al resto della LAN.

Internet connection ISP --- router/firewall --- NIC "eno1" [Server] --- Bridge "br0" [KVM Host RHEL] --- VM Guest [Ubuntu/Windows]

  1. Da terminale Host digita: sudo nmtui
  2. seleziona [Edit a connection].
  3. se già non esiste una connessione di tipo "Bridge" usa l'opzione [Add] per crearne una.
  4. oppure seleziona la connessione [Bridge/virbr0] esistente.
    │ ┌────────────────────────┐           │
    │ │ Ethernet             ↑ │ <Add>     │
    │ │ Wired connection 1   ▒ │           │
    │ │ Wi-Fi                ▒ │ <Edit...> │
    │ │ zis-wifi             ▒ │           │
    │ │ Bridge               ▮ │ <Delete>  │
    │ │ lxcbr0               ▒ │           │
    │ │ virbr0               ▒ │           │
    │ │                      ▒ │           │
    │ │                      ↓ │ <Back>    │
    │ └────────────────────────┘           │
  5. Se vedi un dispositivo Bridge elencato, sai che un software (GNOME Boxes, Vagrant, VirtualBox o simili) ha già generato uno switch virtuale per te. Se hai bisogno di un solo switch virtuale, il tuo lavoro è tecnicamente completato; tuttavia, potresti voler creare un bridge aggiuntivo per una rete più complessa o semplicemente per tua comodità.
  6. Inserisci una connessione Ethernet come agente ("slave" nell'interfaccia nmtui) per questa nuova connessione bridge.
    È possibile specificare le impostazioni di rete per questo nuovo Bridge (indirizzo IP, maschera di sottorete, gateway e DNS) se la connessione cablata richiede una configurazione manuale.
    • Device: il nome della scheda di rete dell'Host.
    • IPv4: l'indirizzo ip dell'Host.
    • Gateway, DNS server e Seaarch domain gli stessi dell'Host.
      ┌────────────────┤ Edit Connection ├─────────────────────┐
      │                                                       ↑│
      │ Profile name Wired connection 1______________________ ▮│
      │ Device enp0sf6 (4a:5a:6a:0a:0a:8a)___________       ▒│
      │                                                       ▒│
      │ ═ ETHERNET                             <Show>         ▒│
      │                                                       ▒│
      │ ╤ IPv4 CONFIGURATION <Automatic>       <Hide>         ▒│
      │ │ Addresses 192.168.1.31/24__________ <Remove>        ▒│
      │ │ <Add...>                                            ▒│
      │ │ Gateway 192.168.1.254____________                   ▒│
      │ │ DNS servers 192.168.1.254____________ <Remove>      ▒│
      │ │ <Add...>                                            ▒│
      │ │ Search domains 8.8.8.8_______________ <Remove>      ▒│
      │ │ <Add...>                                            ▒│
      │ │                                                     ▒│
      │ │ Routing (No custom routes) <Edit...>                ▒│
      │ │ [ ] Never use this network for default route        ▒│
      │ │ [ ] Ignore automatically obtained routes            ▒│
      │ │ [ ] Ignore automatically obtained DNS parameters    ▒│
      │ │                                                     ▒│
      │ │ [ ] Require IPv4 addressing for this connection     ▒│
      │ └                                                     ▒│
      │ ═ IPv6 CONFIGURATION <Automatic>      <Show>          ▒│
      │                                                       ▒│
      │ [X] Automatically connect                             ▒│
      │ [X] Available to all users                            ▒│
      │                                                       ▒│
      │                                       <Cancel> <OK>   ▮│
      │                                                       ↓│
      └────────────────────────────────────────────────────────┘
  7. Chiudi il programma e dopo un paio di secondi, la nuova connessione bridge sarà attiva e funzionante; potrebbe essere necessario riavviare il pc Host.
  8. Per verificare se l'indirizzo IP locale è ora assegnato alla nuova connessione bridge (virbr0), da terminale digita: ip a
    ed osserva la risposta:
    4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether fa:3a:9a:3a:ba:6a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.74/24 brd 192.168.1.255 scope global dynamic noprefixroute virbr0
    valid_lft 508sec preferred_lft 508sec
    inet6 fs80::fs31:9sff:fs36:bs6d/64 scope link
    valid_lft forever preferred_lft forever
  9. avvia [Virtual Machine Manager].
    • 2click sulla VM per aprirla.
    • seleziona la vista [Details].
    • seleziona [NIC] dalla lista degli elementi posta sulla sinistra dell'interfaccia.
    • Networ source: Bridge.
    • Device name: virbr0 , ovvero il nome dato precedentemente alla connessione Bridge.
    • Device model: virtio.
  10. avvia la VM e verifica il corretto funzionamento della connessione Bridge.

Convertire una vm *.vdi (VirtualBox)

Non puoi utilizzare una vm di Virtualbox *.vdi, ma puoi convertirla.

  1. posizionati nella cartella dove risiede la vm *.vdi.
  2. da questa cartella apri un terminale.
  3. per linux digita: qemu-img convert -f vdi -O qcow2 virtualmachine.vdi virtualmachine.qcow2
  4. per Windows digita: "c:\Program Files\qemu\qemu-img.exe" convert -f vdi -O qcow2 virtualmachine.vdi virtualmachine.qcow2
  5. se preferisci puoi usare la tipologia raw: qemu-img convert -f vdi -O raw virtualmachine.vdi virtualmachine.img

Condividere la memoria per copia/incolla

Vedi il paragrafo [Aggiungi una cartella condivisa] al punto 3/b.

-

 

 

 

 

 

 

 

 

 

Immagini collegate:

Lascia un commento

tre × uno =