是否可以将 USB DVD 驱动器传递到 Ubuntu 上的 KVM (QEMU) 虚拟机?

是否可以将 USB DVD 驱动器传递到 Ubuntu 上的 KVM (QEMU) 虚拟机?

我在 Ubuntu 15.10 服务器上有一个 KVM 主机。我对此还很陌生,所以我通过在其自身上运行的 Ubuntu 15.10 桌面虚拟机来管理它,并通过虚拟机管理器访问主机。这效果出奇的好。

我不想在服务器本身上安装 GUI,但我确实希望能够使用 Handbrake GUI 从插入主机的 USB 驱动器中翻录 DVD。为此,我希望运行一个 Ubuntu 桌面 VM,并将 DVD 驱动器(作为 USB 设备)传递到该 VM。

但我感觉自己撞墙了。思考udev 给我带来了麻烦,但老实说我不确定。

在主机上,我可以将驱动器视为 USB 设备(其他 USB 设备已被剪掉):

root@bannoth:~# lsusb
...
Bus 001 Device 012: ID 152e:2507 LG (HLDS) PL-2507 IDE Controller
...

我可以观察当它插入主机时会发生什么:

root@bannoth:~# dmesg
[147647.109561] usb 1-2.4.1: new high-speed USB device number 12 using xhci_hcd
[147647.233207] usb 1-2.4.1: New USB device found, idVendor=152e, idProduct=2507
[147647.233211] usb 1-2.4.1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[147647.233214] usb 1-2.4.1: Product: Super Multi Rewriter
[147647.233216] usb 1-2.4.1: Manufacturer: HLDS Inc.
[147647.233218] usb 1-2.4.1: SerialNumber: P01070517213514
[147647.234262] usb-storage 1-2.4.1:1.0: USB Mass Storage device detected
[147647.234329] scsi host16: usb-storage 1-2.4.1:1.0
[147648.270381] scsi 16:0:0:0: CD-ROM            HL-DT-ST DVD-RAM GSA-E60L 1.00 PQ: 0 ANSI: 0
[147648.353087] sr 16:0:0:0: [sr1] scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray
[147648.353223] sr 16:0:0:0: Attached scsi CD-ROM sr1
[147648.353328] sr 16:0:0:0: Attached scsi generic sg21 type 5

在虚拟机虚拟机管理器中,我添加了 152e:2507 作为 USB 设备: 在此输入图像描述

lsusb在客人中没有显示:

在此输入图像描述

根据主机 dmesg 日志显示驱动器自动在主机上以 /dev/sr1 的形式提供,我当前的假设是,这会阻止客户机将其作为 USB 设备而不是更通用的块设备来获取。

我想我可以编写一个 udev 规则来防止这种情况发生,但我不确定如何在不破坏插入主机的另一个 USB 驱动器的情况下做到这一点。

它也可能是 apparmor,因为 dmesg 在来宾 VM 启动时显示了几个相关错误。不过,我以前从未尝试过解决此类问题,而且也不知道从哪里开始。

root@bannoth:~# dmesg
[149839.524093] br0: port 6(vnet4) entered disabled state
[149839.525262] device vnet4 left promiscuous mode
[149839.525263] br0: port 6(vnet4) entered disabled state
[149839.913759] audit_printk_skb: 153 callbacks suppressed
[149839.913761] audit: type=1400 audit(1450187066.578:102): apparmor="STATUS" operation="profile_remove" name="libvirt-0afd0bc5-f77c-4094-bc27-b859a97729c1" pid=13325 comm="apparmor_parser"
[149844.189015] audit: type=1400 audit(1450187070.850:103): apparmor="STATUS" operation="profile_load" name="libvirt-0afd0bc5-f77c-4094-bc27-b859a97729c1" pid=13328 comm="apparmor_parser"
[149844.189071] audit: type=1400 audit(1450187070.850:104): apparmor="STATUS" operation="profile_load" name="qemu_bridge_helper" pid=13328 comm="apparmor_parser"
[149844.243783] device vnet4 entered promiscuous mode
[149844.263809] br0: port 6(vnet4) entered forwarding state
[149844.263817] br0: port 6(vnet4) entered forwarding state
[149844.418828] audit: type=1400 audit(1450187071.078:105): apparmor="STATUS" operation="profile_replace" name="libvirt-0afd0bc5-f77c-4094-bc27-b859a97729c1" pid=13348 comm="apparmor_parser"
[149844.427881] audit: type=1400 audit(1450187071.090:106): apparmor="STATUS" operation="profile_replace" name="qemu_bridge_helper" pid=13348 comm="apparmor_parser"
[149844.516538] audit: type=1400 audit(1450187071.178:107): apparmor="DENIED" operation="open" profile="libvirt-0afd0bc5-f77c-4094-bc27-b859a97729c1" name="/run/udev/data/c189:1" pid=13350 comm="qemu-system-x86" requested_mask="r" denied_mask="r" fsuid=111 ouid=0
[149844.516591] audit: type=1400 audit(1450187071.178:108): apparmor="DENIED" operation="open" profile="libvirt-0afd0bc5-f77c-4094-bc27-b859a97729c1" name="/run/udev/data/c189:2" pid=13350 comm="qemu-system-x86" requested_mask="r" denied_mask="r" fsuid=111 ouid=0
[149844.516637] audit: type=1400 audit(1450187071.178:109): apparmor="DENIED" operation="open" profile="libvirt-0afd0bc5-f77c-4094-bc27-b859a97729c1" name="/run/udev/data/c189:4" pid=13350 comm="qemu-system-x86" requested_mask="r" denied_mask="r" fsuid=111 ouid=0
[149844.516688] audit: type=1400 audit(1450187071.178:110): apparmor="DENIED" operation="open" profile="libvirt-0afd0bc5-f77c-4094-bc27-b859a97729c1" name="/run/udev/data/c189:129" pid=13350 comm="qemu-system-x86" requested_mask="r" denied_mask="r" fsuid=111 ouid=0
[149844.516730] audit: type=1400 audit(1450187071.178:111): apparmor="DENIED" operation="open" profile="libvirt-0afd0bc5-f77c-4094-bc27-b859a97729c1" name="/run/udev/data/c189:257" pid=13350 comm="qemu-system-x86" requested_mask="r" denied_mask="r" fsuid=111 ouid=0
[149844.838540] kvm: zapping shadow pages for mmio generation wraparound
[149845.314126] kvm [13350]: vcpu0 unhandled rdmsr: 0x570
[149845.314296] kvm [13350]: vcpu1 unhandled rdmsr: 0x570
[149845.914154] kvm [13350]: vcpu0 unhandled rdmsr: 0x606
[149846.671275] kvm [13350]: vcpu0 unhandled rdmsr: 0x611
[149846.671393] kvm [13350]: vcpu0 unhandled rdmsr: 0x639
[149846.671500] kvm [13350]: vcpu0 unhandled rdmsr: 0x641
[149846.671638] kvm [13350]: vcpu0 unhandled rdmsr: 0x619
[149846.750752] kvm [13350]: vcpu0 unhandled rdmsr: 0x611
[149846.750875] kvm [13350]: vcpu0 unhandled rdmsr: 0x639
[149846.750979] kvm [13350]: vcpu0 unhandled rdmsr: 0x641

这是否是一个合理的尝试?是否有明显的前进道路,或者我应该放弃并转向其他解决方案?

相关内容