web-dev-qa-db-ja.com

CentOS-USBフラッシュドライブをエミュレートする方法は?

VBoxManage list usbhost

ノートブックに接続した場合の物理フラッシュドライブを示しています。

質問:しかし、物理的なものなしでUSBフラッシュドライブをエミュレートできますか? "VBoxManage list usbhost"出力に表示されるように、実行中のVirtualBoxゲストにUSBデバイスとして接続できるようにします。

5
pepite

驚いたことに、USBデバイスをエミュレートする既製の方法がすでにあります。

1)dummy_hcdモジュール。これは、USBガジェットコントローラードライバー(クライアントエミュレーション)とUSBルートハブ(ホストエミュレーション)の両方として機能するループバックモジュールです。

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

(これは新しいルートハブです)。

2)ストレージデバイスを表す空のファイルを作成します。

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

(これは小さいものです。必要に応じて大きくしてください)

3)ガジェットドライバーモジュールをロードして、USB大容量ストレージデバイス(フラッシュなど)をエミュレートします。

$ 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 

私はある種の賢明な識別を選びました、あなたはこれらのオプションを省くことができます、そしてあなたはランダムなものを手に入れるようです。

4)ガジェットモジュールが利用可能である限り、他のタイプのUSBデバイスでも同じことができます。

7
dirkt