Boxes里的虚拟机能够方便的识别各种USB设备,比如USB转串口、STM32仿真器等等,只需要在Boxes的Properties里,选择对应的Device即可。但是U盘就没有那么容易识别了,Win虚拟机会提示无法安装驱动程序。
由于Libvirt只能识别2.0以下的USB设备,所以还需要确认协议版本:
==> # cat /sys/kernel/debug/usb/devices | grep 0781 -B 1
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=0781 ProdID=5567 Rev= 1.27
再查看libvirt的配置文件:
$ cd ~
$ find . -name '*.xml' | grep 'libvirt'
$ cat ./.config/libvirt/qemu/boxes-unknown.xml
这个网页是Libvirt的官方主页,里面有关于XML文件,以及Vrish命令的说明:
https://libvirt.org/docs.html
了解Libvire和Virsh命令之后,就可以进行以下操作了:
保证Linux主机上U盘及其文件系统的正确加载:
如果U盘的设备文件是/dev/sdb,那么要保证/dev/sdb1文件的存在。因为前者是设备,后者是分区。没有分区文件的话,虚拟机会要求格式化U盘,原有的文件会丢掉。
增加设备文件的权限,以及更改设备文件的所有者(这两步最好都执行):
==> # chown xxx /dev/sdb
==> # chgrp xxx /dev/sdb
==> # chown 777 /dev/sdb*
执行virsh命令,进入Virsh环境:
$ virsh
在Virsh环境下,执行list命令,找到对应虚拟机的domain:
virsh # list
查看U盘设备的XML文件:
virsh # attach-disk 2 /dev/sdb sdb --targetbus usb --print-xml
加载U盘设备:
virsh # attach-disk 2 /dev/sdb sdb --targetbus usb
Disk attached successfully
此时在虚拟机里面,就能看到新加入的U盘了,此时可以对它进行读写操作。操作结束之后,需要移除设备(在虚拟机先弹出):
virsh # detach-disk 2 sdb
Disk detached successfully
如果不执行detach-disk操作,可能导致虚拟机无法启动!(可以伪造设备文件再删除^_^)
在Linux主机里重新加载设备,就能看到Windows虚拟机里修改的文件。
文章评论(0条评论)
登录后参与讨论