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:32] – [Assegnare i permessi] 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 ====
  
-È 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:+È 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> <code>
 chmod 0666 /dev/bus/usb/001/026 chmod 0666 /dev/bus/usb/001/026
 </code> </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 ====
doc/appunti/linux/sa/qemu_usb_passthrough.1667475138.txt.gz · Last modified: 2022/11/03 12:32 by niccolo