qemu: usb存储设备仿真

本文介绍了如何在QEMU中仿真USB存储设备,包括raw和qcow2格式的虚拟设备,以及如何连接和挂载实际的USB设备。通过qemu命令参数,如`-usb`, `usb-storage`和`usb-host`,实现设备的仿真和使用。同时,文章还提到了实际设备挂载的两种方法,并强调了权限和udev规则设置的重要性。" 83722494,7418926,Kaggle房价预测实战指南,"['机器学习', '数据竞赛', '预测模型', '数据预处理', '特征工程']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

qemu既支持仿真虚拟的usb存储设备,也支持连接实际的设备(如U盘)。相关的命令参数为:

-usb
-device usb-storage,drive=drive_id
-device usb-uas
-device usb-bot
-device usb-host,hostbus=bus,hostaddr=addr
-device usb-host,vendorid=vendor,productid=product
  • “-usb” 使能usb总线,如果系统已添加usb总线,则不需要这个参数
  • “usb-storage” 仿真使用bulk-only传输协议的虚拟设备(绝大部分u盘采用的传输方式),只支持单一逻辑单元
  • “usb-uas” 仿真使用UAS(USB attached SCSI)传输协议的虚拟设备,支持多逻辑单元(MLUN)
  • “usb-bot” 也是仿真使用bulk-only传输协议的虚拟设备,支持多逻辑单元
  • “usb-host” 连接实际的usb存储设备

下面介绍常用的 usb-storageusb-host 方式。

使用虚拟设备

首先创建设备文件,可以选择固定大小的raw格式或者大小动态增长的qcow2等格式。
使用raw格式的好处是可以直接在PC上对设备文件进行分区及格式化等操作,只是占用较多的存储空间。
而使用qcow2格式则只需占用很小的存储空间,适合仿真大容量设备,只是得挂载后才能分区或格式化。

raw格式

创建设备:

$ qemu-img create -f raw disk_01.img 32M
Formatting 'disk_01.img', fmt=raw size=33554432 
$
$ ls -l disk_01.img
### 配置和管理系统总线设备 在QEMU中配置和管理系统总线设备涉及到多个方面,包括但不限于网络适配器、存储控制器和其他PCI/USB设备。为了实现高效且安全的操作,通常采用特定的方法和技术。 #### 使用EPT映射提高性能 当涉及内存访问时,通过扩展页表(EPT)机制可以显著提升访存效率。Guest-phy-addr经过EPT-page-structure映射后得到的phy-addr不需要再次经由VMM的目录表转换即可直接送往地址总线[^1]。这种方式减少了额外的翻译层,从而提高了数据读写的速率。 #### 创建与管理虚拟局域网(VLAN) 针对网络连接需求,在QEMU内部可以通过定义VLAN来模拟真实的网络环境。具体来说,创建一个编号为n的VLAN,并利用UDP多播套接字让不同实例间的QEMU能够相互通信。这种设置特别适用于那些在同一广播域内运行的应用程序,确保它们能有效地交换信息而不受物理位置限制[^2]。 #### 自定义块设备驱动函数 对于磁盘或其他类型的持久化存储介质而言,则需编写相应的打开逻辑以支持特定格式的数据读写操作。例如下面展示了一个简单的`myblockdev_open()`方法用于初始化指定路径下的文件作为块级资源: ```c static int myblockdev_open(BlockDriverState *bs, QDict *options, int flags, Error **errp) { // 实现具体的打开逻辑... } ``` 此段代码片段展示了如何注册一个新的块设备处理程序,它允许用户自定义加载过程中的行为模式以及错误报告机制[^3]。 #### 利用命令行参数简化部署流程 最后值得一提的是,借助丰富的CLI选项也可以快速完成大部分常规任务而无需修改源码本身。比如使用 `-drive`, `-cdrom`, 或者其他相关标记来自定义启动顺序、挂载光驱镜像等动作;同时还可以结合 `virtio-blk`, `scsi-hd` 这样的子指令进一步细化硬件仿真细节[^4]。 综上所述,以上几种方式共同构成了完整的解决方案框架,使得开发者能够在QEMU环境中灵活地控制各类外设的工作状态及其交互特性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值