ubuntu kvm+qemu 加载USB

本文介绍了如何在KVM虚拟环境中通过QEMU支持并操作USB设备。包括获取USB设备信息的方法、解决常见错误以及如何在启动时及运行时添加USB设备。

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

首先参考了:http://forum.ubuntu.org.cn/viewtopic.php?f=65&t=130210&sid=592708d954990bdd11e60bb7d115ed3a

5. USB设备 
KVM是通过qemu来支持USB设备的,可以在启动的时候就指定需要连接的USB设备,也可以系统启动后动态的添加删除.通过qemu的help可知,使用qemu的usb_add host:xxx:xxx来添加usb设备,那么如何知道对应的host:xxx:xxx呢,有2种方法: 
1)在host主机ubuntu中执行lsusb得到这些信息 
比如在我机器上ipod的信息如下: 
Bus 006 Device 002: ID 05ac:1204 Apple Computer, Inc. iPod [Photo] 
Bus 006 Device 001: ID 1d6b:0002 
Bus 001 Device 001: ID 1d6b:0002 
.... 
05ac:1204就是我们需要的了。 
2)进入虚拟机后,通过ctrl+alt+2调出qemu控制台,输入info usb来列出相关的信息,在我的机器上
Device 4.2, speed 12 Mb/s 
Class e0: USB device 044e:300d, UGX 
Device 2.11, speed 480 Mb/s 
Class 00: USB device 05ac:1204, iPod 
... 
很有可能你在执行上述命令的时候会遇到这样的错误: 
Could not open /dev/bus/usb/devices 
可以参考:https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/156085去解决,主要就是把 
/etc/init.d/mountdevsubfs.sh脚本中的以下几行打开(默认被注释掉了) 
#
# Magic to make /proc/bus/usb work
#
mkdir -p /dev/bus/usb/.usbfs
domount usbfs "" /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
ln -s .usbfs/devices /dev/bus/usb/devices
mount --rbind /dev/bus/usb /proc/bus/usb
 
然后手工执行: 
$ sudo /etc/init.d/mountdevsubfs.sh start 
或者重启机器就ok了。 
取得了上述USB设备的信息后,可以在kvm启动的时候就连接指定的USB设备,通过启动参数-usbdevice host:xxx:xxx 来添加相应设备。也可以在kvm的客户系统启动后添加,在客户系统中按ctrl+alt+2(ctrl+alt+1回到客户系统)调出qemu控制台,通过usb_add host:xxx:xxx来添加设备,通过info usb可以查看已经添加的usb设备信息,通过usb_del来删除连接的usb设备。 

 

 

我在本机测试后lsusb:

 

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub

Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub

Bus 001 Device 003: ID 0402:7675 ALi Corp. 

Bus 002 Device 003: ID 04f3:0210 Elan Microelectronics Corp. AM-400 Hama Optical Mouse

Bus 001 Device 008: ID ffee:0100 

最后的ffee:0100就是我的U盘!

 

用qemu-system-x86_64命令时,通过man,查到了-usbdevice host:xxx:xxx参数

启动虚拟机时可以用:

sudo qemu-system-x86_64 -hda kvm/winxp.img -m 1024 -usbdevice tablet -soundhw all -usbdevice host:ffee:0100

### 在 Ubuntu 上通过 QEMU 安装 Windows 在 Ubuntu 上使用 QEMU 安装 Windows 涉及多个步骤,包括安装必要的软件包、创建虚拟硬盘、准备 ISO 文件以及运行 QEMU 命令。以下是详细的说明: #### 1. 安装 QEMU 和相关工具 在开始之前,确保系统已经更新并安装了必要的软件包。对于 x86_64 架构的系统,可以运行以下命令来安装 QEMU 和其他依赖项: ```bash sudo apt update sudo apt install qemu-system-x86 qemu-utils ovmf ``` 如果目标是安装 Windows on ARM,则需要安装 `qemu-system-arm` 和 `qemu-system-aarch64` 等额外的工具[^2]。 #### 2. 创建虚拟硬盘 使用 `qemu-img` 工具创建一个虚拟硬盘文件。例如,创建一个大小为 100GB 的 qcow2 格式硬盘: ```bash qemu-img create -f qcow2 windows.qcow2 100G ``` 这一步将生成一个名为 `windows.qcow2` 的文件,用于存储 Windows 的操作系统和数据[^2]。 #### 3. 准备 Windows 安装介质 下载 Windows 的 ISO 文件,并将其放置在一个易于访问的位置。例如,假设 ISO 文件位于 `/path/to/windows.iso`。 #### 4. 配置 QEMU 启动命令 根据目标架构(x86_64 或 ARM),配置不同的 QEMU 启动命令。 ##### 对于 x86_64 架构 使用以下命令启动 QEMU加载 Windows 安装介质: ```bash qemu-system-x86_64 \ -machine type=q35,accel=kvm \ -cpu host \ -smp 4 \ -m 8G \ -bios /usr/share/ovmf/OVMF.fd \ -drive file=windows.qcow2,format=qcow2 \ -cdrom /path/to/windows.iso \ -netdev user,id=net0 \ -device virtio-net-pci,netdev=net0 \ -usb -device usb-tablet ``` ##### 对于 ARM 架构 对于 ARM 虚拟机,需要额外的 BIOS 文件(如 `QEMU_EFI.fd`)和 VirtIO 驱动 ISO 文件。以下是一个示例命令: ```bash qemu-system-aarch64 \ -M virt,virtualization=true -m 8G -cpu max,pauth-impdef=on -smp 8 \ -bios ./QEMU_EFI.fd \ --accel tcg,thread=multi \ -device ramfb \ -device qemu-xhci -device usb-kbd -device usb-tablet \ -device usb-storage,drive=install \ -drive if=none,id=install,format=raw,media=cdrom,file=/path/to/windows.iso \ -device usb-storage,drive=virtio-drivers \ -drive if=none,id=virtio-drivers,format=raw,media=cdrom,file=./virtio-win-0.1.262.iso \ -drive if=virtio,id=system,format=raw,file=./windows-arm64.qcow2 ``` 注意:需要提前下载 `QEMU_EFI.fd` 和 `virtio-win.iso` 文件。 #### 5. 开始安装 运行上述命令后,QEMU 将启动虚拟机并进入 Windows 安装界面。按照提示完成操作系统的安装过程。 #### 6. 验证安装 安装完成后,可以通过运行以下命令验证 QEMU 是否正常工作: ```bash qemu-system-x86_64 -version ``` 这应该会显示 QEMU 的版本信息[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值