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-storage 和 usb-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
-rw-r--r-- 1 cjz cjz 33554432 Oct 6 21:18 disk_01.img
格式化设备:
$ mkfs.vfat disk_01.img
mkfs.fat 3.0.26 (2014-03-07)