[红帽] 使用 AMD 芯片的电脑,想打开用 INTEL 芯片制作的虚拟机,我该怎么办?(RH20210628)
作者:邢万里
创建日期:2021年6月28日
在学习红帽相关认证课程的时候,老师为了大家的学习方便,一般会将红帽的练习环境打包成一个 all-in-one 的虚拟机文件,这个虚拟机通常使用VMware Workstation
制作,并且为了稳定性,制作时,老师的电脑使用的是 Intel 芯片制作的;在学员将环境拷贝到自己的电脑上开始学习时,发现,由于自己使用了 AMD 芯片的电脑,无法打开嵌套在虚拟机 foundation 内部,使用 KVM 制作的虚拟机。为此无法进行学习,那么该如何解决呢?请按照如下步骤操作,基本可以搞定!
1、使用 AMD 芯片第一次打开虚拟机并启动 KVM 虚拟机一般会遇到如下报错
本示例以打开
workstation
为例说明;如果自己无法解决,请联系红帽讲师
[kiosk@foundation0 ~]$ rht-vmctl start workstation
Starting workstation.
error: Failed to start domain workstation
error: internal error: qemu unexpectedly closed the monitor: 2021-06-28T13:59:41.272936Z qemu-kvm: error: failed to set MSR 0xe1 to 0x0
qemu-kvm: /builddir/build/BUILD/qemu-2.12.0/target/i386/kvm.c:2119: kvm_buf_set_msrs: Assertion `ret == cpu->kvm_msr_buf->nmsrs' failed.
2、通过lscpu
命令可以看出自己使用的是 AMD 芯片
[kiosk@foundation0 ~]$ lscpu |grep 'Model name'
Model name: AMD Ryzen 5 2400G with Radeon Vega Graphics
3、其实通过报错就能基本确定报错的原因了,为了给大家演示,使用命令看下使用的是 AMD Ryzen
系列芯片。接着就是解决方案了。
4、使用 su -
命令切换到超级管理员 root
用户,并执行 modinfo
命令:
⚠️ 注意:使用 root 管理系统很危险,请谨慎操作;并且再您执行完所有操作之后,退回只普通用户 kiosk
进行管理 kvm 虚拟机。
[root@foundation0 ~]# modinfo kvm -p
nx_huge_pages: (bool)
nx_huge_pages_recovery_ratio: (uint)
ignore_msrs: (bool)
report_ignored_msrs: (bool)
min_timer_period_us: (uint)
kvmclock_periodic_sync: (bool)
tsc_tolerance_ppm: (uint)
lapic_timer_advance_ns: (int)
vector_hashing: (bool)
enable_vmware_backdoor: (bool)
force_emulation_prefix: (bool)
pi_inject_timer: (bint)
halt_poll_ns: (uint)
halt_poll_ns_grow: (uint)
halt_poll_ns_grow_start: (uint)
halt_poll_ns_shrink: (uint)
5、接着使用 vim
编辑 kvm.conf
文件,并按照以下示例进行修改:
[root@foundation0 ~]# vim /etc/modprobe.d/kvm.conf
options kvm_amd nested=1
options kvm ignore_msrs=1
6、修改完后,请保存退出,并在终端执行 reboot
命令:
7、等待系统重启结束后,登录系统,验证模块是否生效:
[kiosk@foundation0 ~]$ cat /sys/module/kvm/parameters/ignore_msrs
Y
8、 当您看到 ignore_msrs
的值为 Y 的时候,就大功告成了。但是也有少数例外,如果看到的依旧是 N,那么您只能每次系统开机后,使用 root
用户执行以下命令了
⚠️注意:这种方法只对本次启动有效
[root@foundation0 ~]# echo Y > /sys/module/kvm/parameters/ignore_msrs
9、最后,您就可以正常启动 KVM 虚拟机了
[kiosk@foundation0 ~]$ rht-vmctl fullreset workstation -y
Powering off workstation..
Full resetting workstation.
Creating virtual machine disk overlay for rh124-workstation-vda.qcow2
Starting workstation.