我最近安装了 QEMU 的最新版本 (3.1.0),但一直无法让 virt-manager 正常工作,大概是因为它没有连接到正确的依赖项。以下是我遇到的一些其他问题在此主题中。
我运行以下命令:
~$ virt-install \
> --name myWINVM \
> --boot uefi \
> --ram 32768 \
> --graphics vnc,listen=0.0.0.0 \
> --machine pc \
> --features kvm_hidden=on \
> --hostdev 9:00.0,address.type=pci,address.multifunction=on \
> --hostdev 9:00.1,address.type=pci \
> --hostdev 0a:00.0,address.type=pci,address.multifunction=on \
> --machine pc \
> --vcpus 4 \
> --os-type windows \
> --os-variant win10 \
> --network bridge=virbr0 \
> --console pty,target_type=serial \
> --disk /home/boss/Downloads/Win10_1809Oct_English_x64.iso,device=cdrom \
> --disk /home/boss/Downloads/virtio-win-0.1.164.iso,device=cdrom \
> --disk path=/home/boss/testVM/WINVM.img,bus=virtio,size=120
我的输出是这样的:
Starting install...
Allocating 'WINVM.img' | 120 GB 00:04
ERROR internal error: process exited while connecting to monitor: 2019-02-21T01:58:56.827372Z qemu-system-x86_64: -enable-kvm: unsupported machine type 'pc-i440fx-3.1'
Use -machine help to list supported machines
Removing disk 'WINVM.img' | 0 B 00:00
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
virsh --connect qemu:///system start myWINVM
otherwise, please restart your installation.
除了尝试 git 版本的 qemu 之外,我还尝试从SPICE 网站:
注意:如果我指定 q35,我会得到完全相同的错误:
~$ virt-install \
> --name myWINVM \
> --boot uefi \
> --ram 32768 \
> --graphics vnc,listen=0.0.0.0 \
> --machine q35 \
> --features kvm_hidden=on \
> --hostdev 9:00.0,address.type=pci,address.multifunction=on \
> --hostdev 9:00.1,address.type=pci \
> --hostdev 0a:00.0,address.type=pci,address.multifunction=on \
> --machine pc \
> --vcpus 4 \
> --os-type windows \
> --os-variant win10 \
> --network bridge=virbr0 \
> --console pty,target_type=serial \
> --disk /home/boss/Downloads/Win10_1809Oct_English_x64.iso,device=cdrom \
> --disk /home/boss/Downloads/virtio-win-0.1.164.iso,device=cdrom \
> --disk path=/home/boss/testVM/WINVM.img,bus=virtio,size=120
Starting install...
Allocating 'WINVM.img' | 120 GB 00:04
ERROR internal error: process exited while connecting to monitor: 2019-02-21T04:08:50.597025Z qemu-system-x86_64: -enable-kvm: unsupported machine type 'pc-i440fx-3.1'
Use -machine help to list supported machines
Removing disk 'WINVM.img' | 0 B 00:00
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
virsh --connect qemu:///system start myWINVM
otherwise, please restart your installation.
编辑:我认为问题一定出在 virt-manager 上,因为我能够创建一个 qemu 系统并使用以下命令通过 VNC 查看它:
sudo qemu-system-x86_64 \
> -name WINVM,process=WINVM \
> -machine type=q35,accel=kvm \
> -smp 4,sockets=1,cores=2,threads=2 \
> -m 16G \
> -rtc clock=host,base=localtime \
> -serial none \
> -vga qxl \
> -parallel none \
> -boot order=dc \
> -drive file=/home/boss/Downloads/virtio-win-0.1.164.iso,index=1,media=cdrom \
> -drive file=/home/boss/Downloads/virtio-win-0.1.164.iso,index=2,media=cdrom
qemu-system-x86_64: This family of AMD CPU doesn't support hyperthreading(2). Please configure -smp options properly or try enabling topoext feature.
VNC server running on ::1:5900
编辑:我的下一步是从一个新的主机系统开始,手动构建和安装之前的所有最新软件组件。因此,这些组件将是 QEMU、libvirt、virt-manager 和 spice-server。我是否忘记了什么?我应该做些什么来确保我构建的软件包能够相互找到?
无论如何,如果失败了,我可能会承认失败并回到存储库版本,即使它存在一些问题。
更新:我无法让手动编译的 qemu、libvirtd 和 virt-manager 协同工作,因此决定认输(暂时)。如果引发整个问题的重置错误变得太烦人,也许我会不顾一切地尝试 Arch。
答案1
鉴于您说明的命令行,应该没有办法得到您报告的错误。您请求了一个未版本化的“pc”机器类型,这将导致 libvirt 查询 QEMU 以询问最新版本的变体是什么。QEMU 似乎已告诉 libvirt 使用“pc-i440fx-3.1”,考虑到您声称已升级到 3.1.0,这是有道理的。然而,鉴于 libvirt 从 QEMU 本身获取此信息,QEMU 拒绝运行并抱怨这不存在,这完全没有道理。这应该是不可能遇到的情况。我会检查“virsh capabilities”输出以查看它为 QEMU 检测到的机器类型。
传递“q35”时出现相同问题的原因是,您的 virt-install 参数传递了两次“--machine pc”选项。您将第一个参数更改为“q35”,但第二个参数仍为“pc”,这会覆盖第一个参数。
答案2
对于升级到 Debian 12 “Bookworm” 后(这是 Google 上对 “/usr/bin/kvm 不支持机器类型” 的搜索结果中的最佳结果)来到这里并尝试使用以下命令启动旧客户机的任何人machine='pc-1.1'
:
您可以将客户机配置更改为更通用的pc
类型,libvirt 将自动选择支持的类型。
# virsh edit YOURGUEST
在 os 部分中:
<type arch='x86_64' machine='pc'>hvm</type>
保存更改并运行您的客人
# virsh start YOURGUEST
答案3
不要--machine pc
再使用了。它模拟的是 1995 年的主板,完全不适合运行现代操作系统。
用它的唯一其他选项来替换它--machine q35
,它可以模拟更现代且具有 UEFI 功能的主板。