Avançar para o conteúdo

CentOS 7 Libvirt Passagem Directa USB (Passthrough)

  • por

Num cenário de máquinas virtuais, em ambiente Linux CentOS 7, pode ser necessário utilizar ligações directas à(s) porta(s) USB, por exemplo, pen drives ou chaves do tipo hardlock.

Para poder ligar dispositivos USB directamente a uma máquina virtual é necessário instruir o hipervisor de quais as portas a ligar. O comando lsusb, do Linux, mostra os dispositivos:

 # lsusb
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 0951:1505 Kingston Technology 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 

A negrito, está o dispositivo que queremos ligar. O ID, composto por dois hexadecimais, identifica o fabricante (0951) e o produto (1505). De seguida, é necessário compor o XML que vamos integrar na definição da máquina:

 <hostdev mode='subsystem' type='usb' managed='yes'>
  <source>
    <vendor id='0x0951'/>
    <product id='0x1505'/>
  </source>
</hostdev> 

Finalmente, fazemos a agregação do dispositivo à nossa máquina virtual, com o comando virsh:

 # virsh attach-device <domain> <file> [--persistent] 

Onde, <domain> é o nome da máquina virtual e <file> será o nome do ficheiro XML criado. Podemos optar por uma ligação permanente, utilizando a opção –persistent. Da mesma forma, podemos “desligar” o dispositivo com o comando virsh detach-device.

O artigo original, completo e mais detalhado em:

https://virtuozzosupport.force.com/s/article/000017379