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

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

ノートブックに接続すると、物理フラッシュドライブとして表示されます。

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

答え1

驚くべきことに、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デバイスでもこれを行うことができます。

関連情報