首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[linux][virt]USB passthrough技术分析

[linux][virt]USB passthrough技术分析

作者头像
皮振伟
发布2018-04-09 11:22:36
发布2018-04-09 11:22:36
2.1K0
举报
文章被收录于专栏:皮振伟的专栏皮振伟的专栏

前言: USB passthrough让作者疑惑了一番~ 分析: 1,xml 根据libvirt的官方文档:http://libvirt.org/formatdomain.html#elementsHostDevSubsys 或者libvirt的docs:libvirt-3.0.0/docs

xml配置如上,在source中使用vendor id和product id。 2,qemu libvirt通过xml运算,计算出来qemu的参数,即“usb-host”类型设备。qemu-2.8.0-rc4/hw/usb/host-libusb.c中实现。作者选择的是 qemu-2.8.0-rc4的代码,依然不支持host的usb使用bus,port的方式。 3,libusb qemu中操作host的usb设备,通过libusb代码(https://sourceforge.net/projects/libusb/?source=typ_redirect)实现。libusb的代码,作者简单翻了一下,跑了一下测试代码,看了一下trace,大概意思就是分析/sys/bus/usb/devices目录下的文件/文件夹,进而可以打开usb设备,或者获取usb设备的attr;在用户态实现usb协议,则可以直接操作硬件。 usb的设备虚拟化,则和其他usb设备一样,guest中对usb设备进行操作,则qemu把对应的操作通过libusb透传给host的usb设备。 可见,usb的passthrough,并不是直接让guest直接访问host的usb设备。

4,lsusb

相关命令lsusb是一个不错的命令。

后记: 作者对usb协议并不熟悉,关于libusb的解释也未必完全准确。 请教过一个kernel高手的朋友,见我不会usb,还鄙视了我一下~囧

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AlwaysGeek 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档