如何模拟USB插头?

我有一个应用程序,当插入USB密钥时实现一些自动化。

在开发过程中,我必须在特定的环境中测试它(从Debian Squeeze衍生出来)。
该应用程序通过DBUS订阅HAL事件。
问题是:我的桌子在三楼,而我的测试机器在地下室。

我真的想要一种模拟USB插头的方法。

  • usbip 不适用于Ubuntu。
  • 我无法在Ubuntu(我缺少dummy_hcd模块)和Debian中使用g_mass_storage模块。

也许有可能模拟一个dbus呼叫?

我的工作站在Ubuntu 12.04上。

我找到了另一种适合我的解决方案。 实际上我意识到我并不是真的需要模拟USB驱动器,而是任何类型的存储设备(我的应用程序为“DeviceAdded”事件监视HAL或UDisks)。

所以我做了以下事情:

  • 创建一个filesytem映像,例如使用“virt-make-fs”命令
    sudo virt-make-fs --type=ntfs -- fs.tar.gz fs-test.img

  • 在测试机上上传img文件

  • 将图像设置为循环设备: sudo losetup /dev/loop0 fs-test.img

就是这样,UDisks刚刚触发了“DeviceAdded”DBus事件!
(但是,HAL在这种情况下不会触发任何内容,因此它是一个很好的机会,因为它已被弃用

如果需要,可以使用sudo mount /dev/loop0 /mnt/fs等手动安装映像。

如果您需要使用pmount,请不要忘记将/dev/loop0添加到/etc/pmount.allow

要取消设置循环设备,只需使用sudo losetup -d /dev/loop0