|
Dimensione: 9045
Commento: Revisione
|
Dimensione: 11811
Commento: importato da ivantu/Virtualizzazione/Kvm/GestioneOspiti
|
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
| Linea 1: | Linea 1: |
| ## page was renamed from Emulatori/Kvm/GestioneOspiti ## page was renamed from FabioMarconi/Prove10 |
|
| Linea 4: | Linea 2: |
| ##Page updated 13-06-2011 #language it |
#LANGUAGE it |
| Linea 8: | Linea 5: |
| <<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=371617"; rilasci="10.04")>> |
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=371617"; rilasci="25.10 25.04 24.04 22.04 10.04")>> |
| Linea 13: | Linea 9: |
| In questa pagina viene spiegata la gestione delle macchine virtuali da riga di comando o da interfaccia grafica. | Questa pagina descrive la gestione delle macchine virtuali da [[AmministrazioneSistema/Terminale|riga di comando]] o tramite [[AmbienteGrafico/AmbientiDesktop|interfaccia grafica]]. |
| Linea 17: | Linea 13: |
| Per la gestione delle macchine virtuali da terminale usare [[http://help.ubuntu-it.org/current/ubuntu/serverguide/it/libvirt.html|Virsh]]. * Per ottenere l'elenco dei comandi utilizzabili digitare:{{{ help }}} * Per informazioni aggiuntive su uno specifico comando, digitare:{{{ help commando }}} == Definizione della nuova Macchina Virtuale == Prima di gestire la macchina virtuale con '''virsh''', è necessario definirla:{{{ virsh --connect qemu:///system |
Per la gestione delle macchine virtuali da terminale, utilizzare '''Virsh'''. Per iniziare, è necessario stabilire una connessione all'hypervisor '''[[Virtualizzazione/Kvm|KVM]]'''/'''[[Virtualizzazione/Qemu|QEMU]]''' locale. Questo si fa usando l'opzione --connect:{{{ virsh --connect qemu:///system |
| Linea 36: | Linea 23: |
| virsh # }}}Una volta connessi, si accede al prompt interattivo `virsh #`. == Visualizzare l'elenco dei comandi disponibili == Per visualizzare l'elenco dei comandi disponibili, digitare all'interno del prompt di `virsh`:{{{ help }}}Per informazioni aggiuntive su un comando specifico, digitare: {{{ help <comando> }}}sostituire ''<comando>'' con il comando specifico. == Definizione della nuova Macchina Virtuale == Prima di gestire la macchina virtuale con '''virsh''', è necessario definirla. Questo comando viene eseguito dal prompt di `virsh`:{{{ |
|
| Linea 40: | Linea 42: |
| Per elencare la nuova macchina virtuale, si deve usare '''list --inactive''' oppure '''list --all''', dato che list senza opzioni elenca solo le macchine attualmente in esecuzione. == Come elencare le MV == '''Virsh''' consente di elencare le macchine virtuali presenti sull'host: {{{ yhamon@paris:/etc/libvirt/qemu$ virsh --connect qemu:///system Connecting to uri: qemu:///system Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit |
{{{#!wiki note Ogni macchina virtuale è configurata tramite un file `XML` in `/etc/libvirt/qemu`. }}} == Come elencare le Virtual Machine == '''Virsh''' consente di elencare le macchine virtuali presenti sull'host. Questi comandi sono eseguiti dal prompt `virsh #`:{{{ |
| Linea 67: | Linea 62: |
| }}} {{{#!wiki note Le macchine virtuali visualizzate con '''list --all''' sono definite dal file `XML`.<<BR>>Il comando `list` senza opzioni mostra solo le macchine attualmente in esecuzione. }}} * Senza opzioni:{{{ |
|
| Linea 73: | Linea 74: |
| }}} * Con opzioni:{{{ |
|
| Linea 82: | Linea 84: |
| == Definire, indefinire, avviare, spegnere e distruggere macchine virtuali == Le macchine virtuali visualizzate con '''list --all''' sono definite da un file `XML`. Ogni macchina virtuale è configurata tramite un file `XML` in `/etc/libvirt/qemu`. * Per rimuovere una macchina virtuale dall'elenco occorre indefinirla:{{{ virsh # undefine test5 # WARNING: undefine will delete your XML file! |
== Rimuovere macchine virtuali == * Per rimuovere una macchina virtuale dall'elenco, è necessario indefinirla:{{{ virsh # undefine test5 |
| Linea 89: | Linea 89: |
virsh # list --all Id Name State ---------------------------------- 15 mirror running 16 vm2 running }}} per indefinire una macchina virtuale bisogna innanzitutto spegnerla:{{{ |
}}} == Indefinire macchine virtuali == {{{#!wiki important Indefinire macchina virtuale può cancellare il file XML. }}} * Per indefinire una macchina virtuale, è necessario innanzitutto spegnerla:{{{ |
| Linea 100: | Linea 100: |
| }}} questo comando avvia lo spegnimento dolce della macchina virtuale (simile all'esecuzione dello shutdown da linea di comando), ma è anche possibile usare '''destroy'''. Il modo più brutale per spegnere una macchina virtuale, equivalente a un'interruzione dell'alimentazione sul sistema è:{{{ |
}}}Questo comando avvia lo spegnimento "dolce" della macchina virtuale (simile all'esecuzione dello shutdown da linea di comando). == Spegnere macchine virtuali == Il modo più "brutale" per spegnere una macchina virtuale, equivalente a un'interruzione dell'alimentazione sul sistema, è: {{{ |
| Linea 109: | Linea 110: |
| * Se vengono eseguiti cambiamenti al file di configurazione `XML` è necessario che '''KVM''' lo ricarichi prima di riavviare la macchina virtuale:{{{ | == Riavviare macchine virtuali == * Se vengono eseguiti cambiamenti al file di configurazione `XML`, è necessario che '''KVM''' lo ricarichi prima di riavviare la macchina virtuale:{{{ |
| Linea 113: | Linea 116: |
| Linea 121: | Linea 123: |
| '''Virsh''' consente di sospendere e riavviare facilmente una macchina virtuale:{{{ | '''Virsh''' consente di * Sospendere facilmente una macchina virtuale:{{{ |
| Linea 124: | Linea 128: |
| }}} * Riavviare:{{{ |
|
| Linea 131: | Linea 136: |
| '''Libvirt''' memorizza la sua configurazione come `.xml` in `/etc/libvirt/qemu`. Il file `.xml` è facilmente comprensibile, ed è simile ai file `*.vmx` di '''VMware''', quindi è possibile editare questi file sul posto e riavviare '''libvirt''' di modo che i cambiamenti abbiano effetto. Il metodo raccomandato per la modifica degli attributi di una macchina virtuale è tramite '''virsh''' oppure '''virt-manager''' (sempre che supporti i cambiamenti hardware che volete effettuare): 0. Esportare il file `xml` della macchina virtuale da editare (aka 'dump') 0. Editare il file `xml`. 0. Importare il file `xml`. (aka 'define') Per esempio, per editare la macchina chiamata '''foo''' (per avere l'elenco delle macchine usare '''virsh list --all'''), eseguire:{{{ virsh dumpxml foo > /tmp/foo.xml (editare /tmp/foo.xml come necessario) virsh define /tmp/foo.xml |
'''Libvirt''' memorizza la sua configurazione come `.xml` in `/etc/libvirt/qemu`. Il file `.xml` è facilmente comprensibile e simile ai file `*.vmx` di '''VMware'''. È possibile modificare questi file direttamente e riavviare '''libvirt''' affinché i cambiamenti abbiano effetto. Il metodo raccomandato per la modifica degli attributi di una macchina virtuale è tramite '''virsh''' o '''virt-manager''' (se supporta i cambiamenti hardware desiderati): 0. Esportare il file `xml` della macchina virtuale da modificare (dump). 0. Modificare il file `xml`. 0. Importare il file `xml` (define). Ad esempio, per modificare la macchina chiamata '''foo''' (per l'elenco delle macchine, usare '''virsh list --all'''), eseguire:{{{ virsh dumpxml foo > /tmp/foo.xml }}}modificare /tmp/foo.xml come necessario:{{{ virsh define /tmp/foo.xml |
| Linea 147: | Linea 152: |
| '''KVM''' permette di creare ospiti SMP. Per allocare due CPU in una macchina virtuale, fare il dump del file `xml` come sopra, quindi editarlo per avere:{{{ |
'''KVM''' consente di creare ospiti '''S'''ymmetric '''M'''ulti'''P'''rocessing. Per allocare due CPU a una macchina virtuale, effettuare il dump del file `xml` come descritto sopra, quindi modificarlo per includere:{{{ |
| Linea 155: | Linea 160: |
| }}} Definire la macchina virtuale come sopra. |
}}}Definire la macchina virtuale come descritto sopra. |
| Linea 161: | Linea 164: |
| Per cambiare l'allolocazione di memoria in una macchina virtuale, fare il dump del file `xml` come sopra, quindi editarlo per avere:{{{ | Per modificare l'allocazione di memoria in una macchina virtuale, effettuare il dump del file `xml` come descritto sopra, quindi modificarlo per includere:{{{ |
| Linea 168: | Linea 171: |
| }}} Definire la macchina virtuale come sopra. Tenere a mente che l'allocazione di memoria è in kilobytes, quindi per allocare 512 MB di memoria, usare 512 * 1024, oppure 524288. |
}}}Definire la macchina virtuale come descritto sopra. {{{#!wiki note Tenere presente che l'allocazione di memoria è in kilobyte. Quindi, per allocare 512 MB di memoria, utilizzare 512 * 1024, ovvero 524288. }}} |
| Linea 176: | Linea 179: |
| '''kvm''' e '''qemu''' attualmente e in maniera prestabilita usano il NIC «rtl8139». I NIC supportati in '''Ubuntu 8.04''' sono «i82551», «i82557b», «i82559er», «ne2k_pci», «pcnet», «rtl8139», «e1000», e «virtio». Per usare un NIC alternativo, fare il dump del file `xml` come sopra, quindi editarlo per avere:{{{ |
'''[[Virtualizzazione/Kvm|KVM]]''' e '''[[Virtualizzazione/Qemu|QEMU]]''' possono emulare diversi modelli di schede di rete. Il modello di NIC '''raccomandato''' per le massime prestazioni in una macchina virtuale KVM è `virtio`, che sfrutta le ottimizzazioni paravirtualizzate. Altri modelli, come `e1000` o `rtl8139`, sono disponibili per compatibilità con sistemi operativi guest meno recenti o in casi specifici, ma offrono prestazioni inferiori. Per utilizzare un NIC alternativo, effettuare il dump del file `xml` come descritto sopra, quindi modificarlo per avere (ad esempio, per `virtio`):{{{ |
| Linea 185: | Linea 188: |
| <model type='e1000'/> | <model type='virtio'/> |
| Linea 189: | Linea 192: |
| }}} Ridefinire la macchina virtuale come sopra. |
}}}Ridefinire la macchina virtuale come descritto sopra. |
| Linea 197: | Linea 198: |
| * Solamente il protocollo USB 1.1 * Il dispositivo deve essere collegato prima dell'avvio di '''KVM'''. * È necessario modificare Apparmor == Modifica di Apparmor == Per consentire a un programma software di accedere correttamente a un dispositivo usb è necessario modificare Apparmor. * Per fare ciò [[Ufficio/EditorDiTesto|editare]] il file `/etc/apparmor.d/abstractions/libvirt-qemu` e decommentare alcune linee:{{{ |
* Il dispositivo deve essere collegato all'host prima dell'avvio della macchina virtuale. * Potrebbe essere necessario configurare opportunamente il controller USB emulato nella VM (es. USB 2.0/3.0) per la massima compatibilità e prestazioni. * È necessario modificare le policy di sicurezza come [[Sicurezza/AppArmor|Apparmor]] sull'host per consentire a [[Virtualizzazione/Qemu|QEMU]] l'accesso diretto all'hardware USB. === Modifica di Apparmor === Per consentire a un programma software di accedere correttamente a un dispositivo USB, è necessario modificare [[Sicurezza/AppArmor|Apparmor]]. * Per fare ciò, aprire con un [[Ufficio/EditorDiTesto|editor]] il file `/etc/apparmor.d/abstractions/libvirt-qemu` e decommentare alcune righe:{{{ |
| Linea 213: | Linea 214: |
* Dopo le variazioni apparmor deve essere riavviato digitando in una finestra di terminale:{{{ sudo /etc/init.d/apparmor restart |
* Dopo le variazioni, [[Sicurezza/AppArmor|Apparmor]] deve essere riavviato digitando nel [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{ sudo systemctl restart apparmor |
| Linea 220: | Linea 220: |
| Cercare, relativamente all'USB il codice del costruttore (Vendor ID) e del prodotto (Product ID). Per fare ciò digitare il seguente comando in una finestra di terminale:{{{ |
Per aggiungere un dispositivo USB alla macchina virtuale, è fondamentale prima di tutto identificare il Vendor ID e il Product ID del dispositivo. Successivamente, è necessario configurare correttamente la macchina virtuale per emulare un controller USB adeguato al dispositivo e aggiungere il passthrough nel file XML. 0. '''Identificazione del dispositivo USB''': [[Hardware/Periferiche/IdentificarePeriferiche|Cercare]], relativamente all'USB, il codice del costruttore (Vendor ID) e del prodotto (Product ID). Digitare il seguente comando nel [[AmministrazioneSistema/Terminale|terminale]]:{{{ |
| Linea 224: | Linea 224: |
| }}} il risultato sarà simile al seguente:{{{ |
}}}Il risultato sarà simile al seguente:{{{ |
| Linea 233: | Linea 232: |
| }}} Se per esempio bisogna aggiungere «Broadcom Corp. Bluetooth Controller» i codici identificativi (ID) del costruttore e del prodotto sono rispettivamente «0a5c» e «2110». Questi valori vanno inseriti nel profilo `xml`. Ciò può essere fatto tramite '''virsh''' con il comando '''edit <domain>''':{{{ |
}}}Se, ad esempio, è necessario aggiungere «Broadcom Corp. Bluetooth Controller», i codici identificativi (ID) del costruttore e del prodotto sono rispettivamente «0a5c» e «2110». 0. '''Configurazione del Controller USB della VM''': Per supportare dispositivi USB 2.0 o 3.0, è cruciale che la macchina virtuale abbia un controller USB emulato del tipo corretto (es. `usb2` per EHCI, `usb3` per XHCI). Questo può essere aggiunto nella sezione `<devices>` del file XML della VM. Ad esempio, per un controller USB 3.0:{{{ |
| Linea 251: | Linea 247: |
| }}} |
}}}Se si utilizza `virt-manager`, questo può essere aggiunto graficamente nelle impostazioni hardware della VM. 0. '''Aggiunta del dispositivo USB al profilo XML''': Con il controller USB appropriato configurato, è possibile aggiungere il dispositivo USB specifico utilizzando i Vendor ID e Product ID ottenuti. Ciò può essere fatto tramite '''virsh''' con il comando '''edit <domain>''', inserendo la seguente configurazione nella sezione `<devices>`:{{{ <domain type='kvm'> <name>windowsxp</name> … <devices> … <hostdev mode='subsystem' type='usb'> <source> <vendor id='0x0a5c'/> <product id='0x2110'/> </source> </hostdev> </devices> </domain> }}}È importante assicurarsi che i valori `id` siano preceduti da `0x` per indicare che sono in formato esadecimale. |
| Linea 255: | Linea 266: |
| * Per avere nuovi indirizzi macchina da copiare nel file `xml`, usare questo comando:{{{ | Quando si crea una nuova macchina virtuale o si desidera modificarne una esistente, potrebbe essere necessario assegnarle un nuovo indirizzo MAC o un UUID (Universally Unique Identifier) univoco. Questo aiuta a evitare conflitti di rete o a garantire l'unicità dell'identificatore della VM. * Per ottenere un nuovo indirizzo MAC (Media Access Control) da inserire nel file `xml` di configurazione della macchina virtuale, utilizzare il seguente comando. Il prefisso `52:54:` è lo standard utilizzato da [[Virtualizzazione/Qemu|QEMU]] per gli indirizzi MAC virtuali:{{{ |
| Linea 258: | Linea 271: |
| * Per ottenere un nuovo uuid per il file `xml`, usare:{{{ | * Per ottenere un nuovo UUID (Universally Unique Identifier) per il file `xml`, utilizzare il comando standard `uuidgen`:{{{ |
| Linea 262: | Linea 275: |
| = Ulteriori risorse = * [[https://help.ubuntu.com/community/KVM/Managing|Documento originale]] |
|
| Linea 266: | Linea 276: |
| CategoryVirtualizzazione CategoryDaRevisionare | CategoryVirtualizzazione |
Guida verificata con Ubuntu: 22.04 24.04 25.10
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Questa pagina descrive la gestione delle macchine virtuali da riga di comando o tramite interfaccia grafica.
Gestione da terminale
Per la gestione delle macchine virtuali da terminale, utilizzare Virsh.
Per iniziare, è necessario stabilire una connessione all'hypervisor KVM/QEMU locale. Questo si fa usando l'opzione --connect:
virsh --connect qemu:///system
Connecting to uri: qemu:///system
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh #Una volta connessi, si accede al prompt interattivo virsh #.
Visualizzare l'elenco dei comandi disponibili
Per visualizzare l'elenco dei comandi disponibili, digitare all'interno del prompt di virsh:
help
Per informazioni aggiuntive su un comando specifico, digitare:
help <comando>
sostituire <comando> con il comando specifico.
Definizione della nuova Macchina Virtuale
Prima di gestire la macchina virtuale con virsh, è necessario definirla. Questo comando viene eseguito dal prompt di virsh:
virsh # define /etc/libvirt/qemu/newvm.xml Domain newvm defined from /etc/libvirt/qemu/newvm.xml
Ogni macchina virtuale è configurata tramite un file XML in /etc/libvirt/qemu.
Come elencare le Virtual Machine
Virsh consente di elencare le macchine virtuali presenti sull'host. Questi comandi sono eseguiti dal prompt virsh #:
virsh # help list
NAME
list - list domains
SYNOPSIS
list [--inactive | --all]
DESCRIPTION
Returns list of domains.
OPTIONS
--inactive list inactive domains
--all list inactive & active domainsLe macchine virtuali visualizzate con list --all sono definite dal file XML.
Il comando list senza opzioni mostra solo le macchine attualmente in esecuzione.
Senza opzioni:
virsh # list Id Name State ---------------------------------- 15 mirror running 16 vm2 running
Con opzioni:
virsh # list --all Id Name State ---------------------------------- 15 mirror running 16 vm2 running - test5 shut off
Rimuovere macchine virtuali
Per rimuovere una macchina virtuale dall'elenco, è necessario indefinirla:
virsh # undefine test5 Domain test5 has been undefined
Indefinire macchine virtuali
Indefinire macchina virtuale può cancellare il file XML.
Per indefinire una macchina virtuale, è necessario innanzitutto spegnerla:
virsh # shutdown mirror Domain mirror is being shutdown
Questo comando avvia lo spegnimento "dolce" della macchina virtuale (simile all'esecuzione dello shutdown da linea di comando).
Spegnere macchine virtuali
Il modo più "brutale" per spegnere una macchina virtuale, equivalente a un'interruzione dell'alimentazione sul sistema, è:
virsh # destroy mirror Domain mirror destroyed
Riavviare macchine virtuali
Se vengono eseguiti cambiamenti al file di configurazione XML, è necessario che KVM lo ricarichi prima di riavviare la macchina virtuale:
virsh # define /etc/libvirt/qemu/mirror.xml Domain mirror defined from /etc/libvirt/qemu/mirror.xml
Quindi per riavviare la macchina virtuale:
virsh # start mirror Domain mirror started
Sospensione e ripristino di una macchina virtuale
Virsh consente di
Sospendere facilmente una macchina virtuale:
virsh # suspend mirror Domain mirror suspended
Riavviare:
virsh # resume mirror Domain mirror resumed
Modifica degli attributi di una macchina virtuale
Libvirt memorizza la sua configurazione come .xml in /etc/libvirt/qemu. Il file .xml è facilmente comprensibile e simile ai file *.vmx di VMware. È possibile modificare questi file direttamente e riavviare libvirt affinché i cambiamenti abbiano effetto.
Il metodo raccomandato per la modifica degli attributi di una macchina virtuale è tramite virsh o virt-manager (se supporta i cambiamenti hardware desiderati):
Esportare il file xml della macchina virtuale da modificare (dump).
Modificare il file xml.
Importare il file xml (define).
Ad esempio, per modificare la macchina chiamata foo (per l'elenco delle macchine, usare virsh list --all), eseguire:
virsh dumpxml foo > /tmp/foo.xml
modificare /tmp/foo.xml come necessario:
virsh define /tmp/foo.xml
Aggiunta di CPU
KVM consente di creare ospiti Symmetric MultiProcessing.
Per allocare due CPU a una macchina virtuale, effettuare il dump del file xml come descritto sopra, quindi modificarlo per includere:
<domain type='kvm'> ... <vcpu>2</vcpu> ... </domain>
Definire la macchina virtuale come descritto sopra.
Aggiunta di memoria
Per modificare l'allocazione di memoria in una macchina virtuale, effettuare il dump del file xml come descritto sopra, quindi modificarlo per includere:
<domain type='kvm'> ... <memory>262144</memory> <currentMemory>262144</currentMemory> ... </domain>
Definire la macchina virtuale come descritto sopra.
Tenere presente che l'allocazione di memoria è in kilobyte. Quindi, per allocare 512 MB di memoria, utilizzare 512 * 1024, ovvero 524288.
Cambiare il modello di scheda di rete
KVM e QEMU possono emulare diversi modelli di schede di rete.
Il modello di NIC raccomandato per le massime prestazioni in una macchina virtuale KVM è virtio, che sfrutta le ottimizzazioni paravirtualizzate. Altri modelli, come e1000 o rtl8139, sono disponibili per compatibilità con sistemi operativi guest meno recenti o in casi specifici, ma offrono prestazioni inferiori.
Per utilizzare un NIC alternativo, effettuare il dump del file xml come descritto sopra, quindi modificarlo per avere (ad esempio, per virtio):
<domain type='kvm'>
...
<interface type='network'>
...
<model type='virtio'/>
</interface>
...
</domain>Ridefinire la macchina virtuale come descritto sopra.
Aggiunta di dispositivi USB passanti
Limitazioni
- Il dispositivo deve essere collegato all'host prima dell'avvio della macchina virtuale.
- Potrebbe essere necessario configurare opportunamente il controller USB emulato nella VM (es. USB 2.0/3.0) per la massima compatibilità e prestazioni.
È necessario modificare le policy di sicurezza come Apparmor sull'host per consentire a QEMU l'accesso diretto all'hardware USB.
Modifica di Apparmor
Per consentire a un programma software di accedere correttamente a un dispositivo USB, è necessario modificare Apparmor.
Per fare ciò, aprire con un editor il file /etc/apparmor.d/abstractions/libvirt-qemu e decommentare alcune righe:
# WARNING: uncommenting these gives the guest direct access to host hardware. # This is required for USB pass through but is a security risk. You have been # warned. /sys/bus/usb/devices/ r, /sys/devices/*/*/usb[0-9]*/** r, /dev/bus/usb/*/[0-9]* rw,
Dopo le variazioni, Apparmor deve essere riavviato digitando nel terminale il comando:
sudo systemctl restart apparmor
Aggiunta di dispositivi USB
Per aggiungere un dispositivo USB alla macchina virtuale, è fondamentale prima di tutto identificare il Vendor ID e il Product ID del dispositivo. Successivamente, è necessario configurare correttamente la macchina virtuale per emulare un controller USB adeguato al dispositivo e aggiungere il passthrough nel file XML.
Identificazione del dispositivo USB: Cercare, relativamente all'USB, il codice del costruttore (Vendor ID) e del prodotto (Product ID). Digitare il seguente comando nel terminale:
lsusb
Il risultato sarà simile al seguente:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 005 Device 012: ID 0a5c:2110 Broadcom Corp. Bluetooth Controller Bus 005 Device 003: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Se, ad esempio, è necessario aggiungere «Broadcom Corp. Bluetooth Controller», i codici identificativi (ID) del costruttore e del prodotto sono rispettivamente «0a5c» e «2110».Configurazione del Controller USB della VM: Per supportare dispositivi USB 2.0 o 3.0, è cruciale che la macchina virtuale abbia un controller USB emulato del tipo corretto (es. usb2 per EHCI, usb3 per XHCI). Questo può essere aggiunto nella sezione <devices> del file XML della VM. Ad esempio, per un controller USB 3.0:
<domain type='kvm'> <name>windowsxp</name> … <devices> … <hostdev mode='subsystem' type='usb'> <source> <vendor id='0x0a5c'/> <product id='0x2110'/> </source> </hostdev> </devices> </domain>Se si utilizza virt-manager, questo può essere aggiunto graficamente nelle impostazioni hardware della VM.
Aggiunta del dispositivo USB al profilo XML: Con il controller USB appropriato configurato, è possibile aggiungere il dispositivo USB specifico utilizzando i Vendor ID e Product ID ottenuti. Ciò può essere fatto tramite virsh con il comando edit <domain>, inserendo la seguente configurazione nella sezione <devices>:
<domain type='kvm'> <name>windowsxp</name> … <devices> … <hostdev mode='subsystem' type='usb'> <source> <vendor id='0x0a5c'/> <product id='0x2110'/> </source> </hostdev> </devices> </domain>È importante assicurarsi che i valori id siano preceduti da 0x per indicare che sono in formato esadecimale.
Ottenere nuovi ID
Quando si crea una nuova macchina virtuale o si desidera modificarne una esistente, potrebbe essere necessario assegnarle un nuovo indirizzo MAC o un UUID (Universally Unique Identifier) univoco. Questo aiuta a evitare conflitti di rete o a garantire l'unicità dell'identificatore della VM.
Per ottenere un nuovo indirizzo MAC (Media Access Control) da inserire nel file xml di configurazione della macchina virtuale, utilizzare il seguente comando. Il prefisso 52:54: è lo standard utilizzato da QEMU per gli indirizzi MAC virtuali:
MACADDR="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"; echo $MACADDR
Per ottenere un nuovo UUID (Universally Unique Identifier) per il file xml, utilizzare il comando standard uuidgen:
uuidgen
