CentOS - como emular um flashdrive USB?

3
VBoxManage list usbhost

mostra o flash drive físico se eu ligá-lo no meu notebook.

Pergunta : Mas posso emular uma unidade flash USB sem uma física? Para que ele apareça na saída "VBoxManage list usbhost", para que eu possa anexá-lo como dispositivo USB em um convidado do VirtualBox em execução.

    
por pepite 17.01.2017 / 13:13

1 resposta

4

Para minha surpresa, já existe uma maneira pronta para emular dispositivos USB:

1) Carregue o módulo dummy_hcd . Este é um módulo de loopback que atua como um driver de controlador de dispositivo USB (emulação de cliente) e um hub raiz USB (emulação de host):

$ sudo modprobe dummy_hcd
$ lsusb
...
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

(Este é um novo hub raiz).

2) Crie um arquivo vazio que represente seu dispositivo de armazenamento:

$ dd bs=1024 count=128 if=/dev/zero of=/tmp/backing_file

(Este é pequeno, aumente conforme apropriado)

3) Carregue um módulo de driver de dispositivo para emular o dispositivo de armazenamento em massa USB (flash, etc.):

$ sudo modprobe g_mass_storage file=/tmp/backing_file idVendor=0x1d6b idProduct=0x0104 iManufacturer=Myself iProduct=VirtualBlockDevice iSerialNumber=123
$ lsusb
...
Bus 005 Device 004: ID 1d6b:0104 Linux Foundation Multifunction Composite Gadget
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ lsscsi
...
[7:0:0:0]    disk    Linux    File-Stor Gadget 0408  /dev/sdh 

Eu escolhi algum tipo de idendificação sensata, você pode deixar essas opções fora, e então você parece ter aleatórias.

4) Você também pode fazer isso com outros tipos de dispositivos USB, desde que haja módulos de gadgets disponíveis para eles.

    
por 18.01.2017 / 12:52