Guida verificata con Ubuntu: 22.04 24.04 25.10

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Questa pagina raccoglie risposte a domande frequenti relative a KVM in ambienti Ubuntu moderni (22.04 e successivi). Alcune sezioni potrebbero trattare argomenti di interesse storico o specifico per sistemi operativi guest meno recenti.

Gestione conflitti con altri hypervisor

KVM, come altri hypervisor quali VirtualBox, richiede l'accesso esclusivo alle estensioni di virtualizzazione hardware (Intel VT-x/AMD-V) del processore. Questo significa che solo un hypervisor può utilizzare queste estensioni in un dato momento. Se i moduli KVM sono caricati e in uso, anche senza VM attive, altri hypervisor potrebbero non riuscire ad avviarsi in modalità virtualizzazione hardware.

Prevenire conflitti con altri hypervisor

  1. Assicurarsi che tutte le macchine virtuali KVM siano spente. È consigliabile farlo tramite virt-manager oppure comando:

    virsh shutdown NOME_VM`
  2. Fermare il servizio libvirtd. Questo è il demone che gestisce le macchine virtuali KVM e che spesso mantiene i relativi moduli caricati.

    sudo systemctl stop libvirtd
  3. Rimuovere i moduli KVM del kernel. Dopo aver fermato libvirtd e assicurandosi che nessuna macchina virtuale KVM sia in esecuzione (anche avviata direttamente con qemu-system-x86_64), è possibile tentare di rimuovere i moduli per liberare le estensioni hardware di virtualizzazione.

    sudo modprobe -r kvm_intel kvm_amd kvm

    Una volta che i moduli KVM sono stati rimossi con successo è possibile avviare VirtualBox o altro hypervisor.

    Questo comando potrebbe restituire un errore come modprobe: FATAL: Module kvm is in use se i moduli sono ancora in uso da qualche processo residuo. In tal caso potrebbe essere necessario identificare e terminare il processo oppure come ultima risorsa riavviare il sistema.

Ripristinare KVM

Avvio VM con accesso al BIOS o GRUB

Una macchina virtuale ha un BIOS/UEFI completo e può eseguire GRUB. Talvolta la finestra della VM appare dopo che il BIOS o il menù di GRUB sono già scomparsi. Per assicurarsi di avere il tempo sufficiente per interagire con il BIOS o GRUB :

  1. spegnere la macchina virtuale.
  2. Eseguire virt-viewer con l'argomento --wait:

    virt-viewer --wait NOME_VM

    In questo modo virt-viewer attenderà l'avvio della macchina virtuale e la sua finestra apparirà non appena la VM inizia il boot.

  3. Avviare la macchina virtuale. Dovrebbe esserci il tempo sufficiente per poter interagire con il BIOS/UEFI, (premendo Canc o F2 all'avvio) o con GRUB.

Se si sta utilizzando una macchina virtuale creata con strumenti specifici o configurazioni meno recenti e si riscontrano problemi di autenticazione o avvio, un metodo generico per accedere a una shell di ripristino è:

  1. selezionare nel menù GRUB la linea per il ripristino recovery mode e premere e per modificare.

  2. Selezionare la linea che inizia con linux o kernel e premere ancora e.

  3. Aggiungere alla fine della linea init=/bin/sh

  4. Confermare con Invio e premere b (o F10 a seconda della versione di GRUB) per avviare il kernel con queste impostazioni. Questo fornisce una shell root senza autenticazione per la risoluzione dei problemi.

Sincronizzazione ora

Le macchine virtuali KVM moderne possono e dovrebbero utilizzare protocolli standard come NTP (Network Time Protocol) o systemd-timesyncd (nei guest Linux) per mantenere l'ora sincronizzata, esattamente come farebbe una macchina fisica.

Non è necessario rimuovere o disabilitare ntpd o servizi simili nel guest. L'hypervisor fornisce un orologio hardware virtuale (RTC) che il sistema guest usa come base e il software di sincronizzazione dell'ora nel guest si occuperà di eventuali derive. Per una migliore precisione è consigliato che il guest esegua il suo servizio NTP.

Driver video per Xorg nei sistemi guest Linux

Per le massime prestazioni e funzionalità moderne (come il supporto 3D e la risoluzione dinamica) nei sistemi guest Linux su KVM, si raccomanda caldamente l'utilizzo del driver virtio-gpu con virglrenderer.

Driver legacy

Durante la prima installazione di un ospite Linux, o per la massima compatibilità, si possono utilizzare driver video generici:

In generale, i sistemi Linux moderni configurano automaticamente i driver Xorg e non richiedono un file xorg.conf manuale. Tuttavia se si necessita di forzare una configurazione specifica o si usano driver non autodetect, un file xorg.conf potrebbe essere creato. Quindi per poter utilizzare i driver standard procedere come segue:

Un esempio di xorg.conf per i driver vesa (o std) in un guest KVM, che permette risoluzioni superiori a 800x600.

  1. Aprire con i privilegi di amministrazione e un editor di testo il file /etc/X11/xorg.conf:

    Section "ServerLayout"
    Identifier "KVM xorg.conf"
    Screen 0 "Screen0" 0 0
    InputDevice "Mouse0" "CorePointer"
    InputDevice "Keyboard0" "CoreKeyboard"
    EndSection
    
    Section "Module"
    Load "record"
    Load "dri"
    Load "extmod"
    Load "glx"
    Load "dbe"
    Load "dri2"
    EndSection
    
    Section "InputDevice"
    Identifier "Keyboard0"
    Driver "kbd"
    EndSection
    
    Section "InputDevice"
    Identifier "Mouse0"
    # Per mouse PS/2 emulato, usare 'vmmouse'. Per virtio-input, non è necessario un driver specifico xorg.
    Driver "vmmouse"
    Option "Protocol" "SysMouse"
    Option "Device" "/dev/sysmouse"
    Option "ZAxisMapping" "4 5 6 7"
    EndSection
    
    Section "Monitor"
    Identifier "Monitor0"
    VendorName "Virtual Monitor"
    ModelName "KVM Monitor"
    HorizSync 20.0 - 50.0
    VertRefresh 40.0 - 80.0
    Option "DPMS"
    EndSection
    
    Section "Device"
    Identifier "Card0"
    Driver "vesa"
    VendorName "QEMU/KVM"
    BoardName "Standard VGA"
    BusID "PCI:0:2:0"
    EndSection
    
    Section "Screen"
    Identifier "Screen0"
    Device "Card0"
    Monitor "Monitor0"
    SubSection "Display"
    Viewport 0 0
    Modes "1600x1200" "1024x768" "800x600"
    EndSubSection
    EndSection
  2. Per modificare la risoluzione è possibile cambiare i valori alla voce Modes.

Configurazione driver video VM

La configurazione del driver video per un guest KVM varia a seconda dello strumento utilizzato per gestire la VM:

Linea di comando (qemu-system-x86_64)

Virt-manager

A ospite spento accedere alle impostazioni hardware della VM.

  1. Nella sezione 'Video' selezionare il modello desiderato (es. QXL o virtio).

  2. Per virtio-gpu è spesso necessario assicurarsi che sia presente anche il supporto 3D, selezionando la casella appropriata se disponibile nell'interfaccia.

Libvirt (file XML)

Modificare il file XML dell'ospite per impostare il modello video.

Impostazione risoluzione guest con driver legacy

Nell'eventualità che si stiano utilizzando driver video legacy (es. vesa) in un guest Linux e un xorg.conf manuale, per variare la risoluzione è sufficiente editare il file xorg.conf modificando i valori del parametro Modes.

In alternativa, in modalità grafica, le impostazioni di risoluzione sono gestite dal desktop environment:

Con il driver virtio-gpu (raccomandato), la risoluzione è solitamente gestita in modo dinamico e automatico dal desktop environment del guest, rendendo le modifiche manuali a xorg.conf superflue.

Impostazioni raccomandate per specifici sistemi guest

Windows XP/Vista (e precedenti)

Per alcune versioni di Windows più vecchie (pre-Windows 7), la configurazione ACPI predefinita di KVM/QEMU potrebbe causare problemi. Se si riscontrano instabilità provare a modificare la sezione <features> nel file .xml della VM.

OpenBSD (versioni legacy)

Questa sezione è obsoleta per le versioni moderne di OpenBSD. I problemi con driver di rete rtl8139 e watchdog timeout (per OpenBSD 4.1) o blocchi al boot (per OpenBSD 4.5) sono specifici di versioni molto vecchie.

Per le versioni moderne di OpenBSD su KVM, è fortemente raccomandato l'uso dei driver virtio (NIC, disco, ecc.) per prestazioni e stabilità ottimali.

Ulteriori risorse


CategoryVirtualizzazione

Virtualizzazione/Kvm/DomandeFrequenti (l'ultima modifica è del 25/10/2025 11.16.54, fatta da jeremie2)