doc:appunti:linux:sa:qemu_usb_passthrough
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
doc:appunti:linux:sa:qemu_usb_passthrough [2022/11/03 10:37] – [Esempio: lettore di flash card USB] niccolo | doc:appunti:linux:sa:qemu_usb_passthrough [2022/11/03 11:49] – [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** | + | Il programma |
* Identificazione con **vendorid** e **productid**. Ogni periferica USB ha un identificativo produttore/ | * Identificazione con **vendorid** e **productid**. Ogni periferica USB ha un identificativo produttore/ | ||
Line 10: | Line 10: | ||
- | ====== Esempio: lettore di flash card USB ====== | + | ===== Esempio: lettore di flash card USB ===== |
+ | |||
+ | ==== Identificare la periferica | ||
Consideriamo come esempio un **lettore di flash card**. Inserendo il dispositivo in una porta USB, il sistema ospitante GNU/Linux lo identifica come segue (output del comando **lsusb**): | Consideriamo come esempio un **lettore di flash card**. Inserendo il dispositivo in una porta USB, il sistema ospitante GNU/Linux lo identifica come segue (output del comando **lsusb**): | ||
Line 37: | Line 39: | ||
* **Port 1.1** - La porta ha un identificativo gerarchico con il punto utilzzato come separatore: abbiamo l'hub numero **1** seguito dal numero della porta **1**. | * **Port 1.1** - La porta ha un identificativo gerarchico con il punto utilzzato come separatore: abbiamo l'hub numero **1** seguito dal numero della porta **1**. | ||
- | Qui di seguito | + | ==== Assegnare i permessi ==== |
+ | |||
+ | È possibile eseguire il programma '' | ||
+ | |||
+ | < | ||
+ | chmod 0666 / | ||
+ | </ | ||
+ | |||
+ | È possibile configurare il sistema in modo tale che una determinata periferica riceva gli opportuni permessi ad ogni connessione. Ad esempio si potrebbe volere che la periferica sia in lettura/ | ||
+ | |||
+ | < | ||
+ | SUBSYSTEM==" | ||
+ | </ | ||
+ | |||
+ | Per forzare il sistema **udev** a rileggere i file di configurazione si esegue: | ||
+ | |||
+ | < | ||
+ | udevadm control --reload-rules && udevadm trigger | ||
+ | </ | ||
+ | |||
+ | Alla successiva connessione della periferica si può verificare che abbia ricevuto i giusti permessi. | ||
+ | |||
+ | ==== Aggiungere la periferica all' | ||
+ | |||
+ | Se la periferica è già collegata all' | ||
< | < | ||
Line 50: | Line 76: | ||
-usb -device usb-host, | -usb -device usb-host, | ||
</ | </ | ||
+ | |||
+ | Ecco una riga di comando minimale, ma completa per avviare l' | ||
+ | |||
+ | <code bash> | ||
+ | qemu-system-x86_64 -m 4096 -machine accel=kvm \ | ||
+ | -device qemu-xhci \ | ||
+ | -usb -device ' | ||
+ | -drive ' | ||
+ | </ | ||
+ | |||
+ | Notare la presenza del device **qemu-xhci**; | ||
+ | |||
+ | ==== Aggiungere la periferica dalla console QEMU ==== | ||
+ | |||
+ | Se la periferica USB viene collegata **dopo che QEMU è stato avviato**, è possibile utilzzare la console di QEMU per aggiungere la periferica al sistema Windows guest. | ||
+ | |||
+ | Attivando **Show Tabs** dal menu **View** di QEMU sarà possibile accedere alla console **compat_monitor0**, | ||
+ | |||
+ | < | ||
+ | (qemu) info usbhost | ||
+ | Bus 1, Addr 26, Port 1.1, Speed 480 Mb/s | ||
+ | Class 00: USB device 05e3:0723, USB Storage | ||
+ | </ | ||
+ | |||
+ | **ATTENZIONE**! Se QEMU non ha identificato correttamente il tipo della periferica (//USB Storage// in questo caso), è possibile che manchino i permessi di lettura/ | ||
+ | |||
+ | A questo punto la periferica può essere aggiunta con un comando del tipo: | ||
+ | |||
+ | < | ||
+ | (qemu) device_add usb-host, | ||
+ | </ | ||
+ | |||
+ | Immediatamente il **Gestione dispositivi** di Windows dovrebbe riconoscere la nuova periferica. | ||
+ | |||
+ | ===== Web References ===== | ||
+ | |||
+ | * **[[https:// | ||
+ | * **[[https:// | ||
doc/appunti/linux/sa/qemu_usb_passthrough.txt · Last modified: 2022/11/03 11:49 by niccolo