QEMU + KVM(键盘、视频和鼠标)我有哪些选择?

QEMU + KVM(键盘、视频和鼠标)我有哪些选择?

我正在使用带有 KVM(基于内核的虚拟化)的 QEMU,并且我想将我的虚拟机连接到我的物理 KVM(键盘、视频和鼠标)交换机。

GPU 直通是一个选择,但我的服务器机箱中没有足够的空间 + 主板上也没有足够的 PCIe 插槽来做到这一点。

我的想法是通过使用 USB<>VGA 转换器(PCIe 直通 + USB PCIe 卡)来解决这个问题。

但是,据我所知,BIOS 无法使用这样的适配器,因为 BIOS 缺少所需的驱动程序。

好的,那么有没有办法解决这个限制并以某种方式告诉 QEMU 它应该为 VM 提供一个 USB<>VGA 适配器作为“原生”VGA 设备?

我唯一想实现的就是能够使用物理 KVM 切换器“切换”到虚拟机。我并不真正关心如何实现这一点。

答案1

我很高兴地告诉大家我找到了解决方案 似乎上班。

这是我所做的:

1.) 找到一个适用于 Linux 的 USB<>VGA 适配器。这些适配器很难买到,而且有些非常昂贵(+60 美元)。不过,我找到了一个便宜的,虽然有点慢,但似乎可以用:USB转VGA来自 i-tech。

2.) 进行初步测试时,我使用 USB-passthrough 而不是 PCIe-passthrough,而且似乎运行良好:

在主机上,识别 USB<>VGA 适配器连接到的端口:

$ lsusb -tv

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
    ID 1d6b:0003 Linux Foundation 3.0 root hub

/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M
    ID 1d6b:0002 Linux Foundation 2.0 root hub
    |__ Port 3: Dev 4, If 0, Class=Human Interface Device, Driver=usbfs, 1.5M
        ID c0f4:01b0
    |__ Port 3: Dev 4, If 1, Class=Human Interface Device, Driver=usbfs, 1.5M
        ID c0f4:01b0
    |__ Port 5: Dev 3, If 0, Class=Vendor Specific Class, Driver=usbfs, 480M
        ID 17e9:02ee DisplayLink

这里我们可以看到适配器位于总线 1、端口 5 上。

使用这些数字来指示 QEMU 将它们传递:

qemu-system-x86_64 \
    -enable-kvm \
    -cpu host \
    [... more config ...] \
    -usb \
    -device usb-host,hostbus=1,hostport=5

重要的部分是-usb-device

最后,(我花了一段时间才找到这个)为了使其工作,将 VM 内的 Linux 参数更改为:

nomodeset fbcon=map:1 vt.default_utf8=0 (来源)

/etc/default/grub如果您使用 grub,您可以更改里面的 linux 内核参数。

vt.default_utf8=0在写作时我不完全确定它的用途,也许可以省略。

但是,如果没有这些内核参数,它将无法与 Ubuntu Server(已测试 22.04.01 LTS)一起使用。

相关内容