问题现象

AMD CPU上通过VMWare 虚拟出来的虚拟机中继续通过 qemu 进行嵌套启动虚拟机时报错,报错信息如下:

core@ubuntu20-dev:~$ sudo qemu-system-x86_64 -cpu "host,pmu=off" -enable-kvm
MoTTY X11 proxy: Unsupported authorisation protocol
Unable to init server: Could not connect: Connection refused
qemu-system-x86_64: error: failed to set MSR 0xe1 to 0x0
qemu-system-x86_64: /build/qemu-BQ4hMP/qemu-4.2/target/i386/kvm.c:2691: kvm_buf_set_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed.
Aborted

解决方案

  1. 运行下面命令,创建配置文件/etc/modprobe.d/qemu-system-x86.conf
sudo tee /etc/modprobe.d/qemu-system-x86.conf << EOF
options kvm ignore_msrs=1
EOF
  1. 重启 sudo reboot
  2. 尽情玩耍吧~

问题原因

根据网页 https://patchwork.kernel.org/patch/42605/ 中的内容来看,这个配置并没有真正解决问题,只是通过配置这个参数可以使 kvm 忽略相关错误。但这个解决方案对我来说可以接受。

当模块参数 ignore_msrs 设置为1时,未知 MSR 读取将返回0,并且 MSR 写入将被丢弃。
同时在这两种情况下会向dmesg打印一条消息,以告知用户有关信息。

参考链接:

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐