User Tools

Site Tools


doc:appunti:linux:sa:qemu_usb_passthrough

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:qemu_usb_passthrough [2022/11/03 12:27] – [Aggiungere la periferica all'avvio di QEMU] niccolodoc:appunti:linux:sa:qemu_usb_passthrough [2022/11/03 12:49] (current) – [Assegnare i permessi] niccolo
Line 3: Line 3:
 Come passare completamente la gestione di una periferica USB da un sistema virtualizzante (host) **QEMU** (GNU/Linux con KVM) ad un sistema virtualizzato (guest) **Windows 10**. Procedura sperimentata su Debian GNU/Linux 11 Bullseye. Come passare completamente la gestione di una periferica USB da un sistema virtualizzante (host) **QEMU** (GNU/Linux con KVM) ad un sistema virtualizzato (guest) **Windows 10**. Procedura sperimentata su Debian GNU/Linux 11 Bullseye.
  
-Quando si avvia l'emulatore **qemu-system-x86_64** si deve specificare quale periferica USB verrà gestita all'emulatore stesso. È possibile identificare la periferica in tre modi diversi:+Il programma emulatore **qemu-system-x86_64** deve sapere quale periferica USB deve essere collegata alla macchina guest. È possibile identificare la periferica in tre modi diversi:
  
   * Identificazione con **vendorid** e **productid**. Ogni periferica USB ha un identificativo produttore/prodotto che dovrebbe essere univoco. Il sistema operativo GNU/Linux mostra tali codici con il comando **lsusb**.   * Identificazione con **vendorid** e **productid**. Ogni periferica USB ha un identificativo produttore/prodotto che dovrebbe essere univoco. Il sistema operativo GNU/Linux mostra tali codici con il comando **lsusb**.
Line 41: Line 41:
 ==== Assegnare i permessi ==== ==== Assegnare i permessi ====
  
-FIXME+È possibile eseguire il programma ''qemu-system-x86_64'' da utente non privilegiato, ma l'emulatore dovrà avere pieno accesso alla periferica USB di cui si desidera il passthrough a Windows. Dopo aver identificato **hostbus** e **hostaddr** assegnati dal kernel alla periferica, l'utente root potrà assegnare i permessi necessari. Ad esempio con: 
 + 
 +<code> 
 +chmod 0666 /dev/bus/usb/001/026 
 +</code> 
 + 
 +È possibile configurare il sistema in modo tale che una determinata periferica riceva automaticamente gli opportuni permessi ad ogni connessione. Ad esempio si potrebbe volere che la periferica sia in lettura/scrittura per gli utenti che appartengono al gruppo **plugdev** (in Debian è il gruppo degli utenti autorizzati a montare e smontare i dispostivi rimuovibili). Per ottenere questo risultato si crea un file ad esempio **/etc/udev/rules.d/99-flash-card-reader.rules** con il seguente contenuto: 
 + 
 +<file> 
 +SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="05e3", ATTR{idProduct}=="0723", GROUP="plugdev", MODE="0660" 
 +</file> 
 + 
 +Per forzare il sistema **udev** a rileggere i file di configurazione si esegue: 
 + 
 +<code> 
 +udevadm control --reload-rules && udevadm trigger 
 +</code> 
 + 
 +Alla successiva connessione della periferica si può verificare che abbia ricevuto i giusti permessi.
  
 ==== Aggiungere la periferica all'avvio di QEMU ==== ==== Aggiungere la periferica all'avvio di QEMU ====
Line 83: Line 101:
  
 **ATTENZIONE**! Se QEMU non ha identificato correttamente il tipo della periferica (//USB Storage// in questo caso), è possibile che manchino i permessi di lettura/scrittura sulla periferica stessa. **ATTENZIONE**! Se QEMU non ha identificato correttamente il tipo della periferica (//USB Storage// in questo caso), è possibile che manchino i permessi di lettura/scrittura sulla periferica stessa.
 +
 +A questo punto la periferica può essere aggiunta con un comando del tipo:
 +
 +<code>
 +(qemu) device_add usb-host,vendorid=0x05e3,productid=0x0723
 +</code>
 +
 +Immediatamente il **Gestione dispositivi** di Windows dovrebbe riconoscere la nuova periferica.
  
 ===== Web References ===== ===== Web References =====
doc/appunti/linux/sa/qemu_usb_passthrough.1667474849.txt.gz · Last modified: 2022/11/03 12:27 by niccolo