这周我一直在广泛测试 KVM。 今天学习了KVM和Oracle VirtualBox 不能同时工作。 直到今天,我还没有机会同时使用两个虚拟化应用程序,所以我完全不知道 KVM 和 virtualbox 在 Linux 中不能同时运行。 当一个 KVM 实例正在运行时,我从 VirtualBox,它没有启动,但显示了一个标题为 – 的错误框 Virtualbox Guru 冥想.
请注意 KVM 和 VirtualBox 并排工作,而无需实际卸载任何人。 但是,我不能同时使用它们。 这个错误对我来说是新的,所以我认为在此处发布本指南会对某人有所帮助。
内容
KVM 和 VirtualBox 不能同时工作
当 KVM 来宾机器已经在运行时,当我尝试从 oracle virtualbox 启动 VM 时,这是完整的错误消息:
Virtualbox Guru Meditation A critical error has occurred while running the virtual machine and the machine execution has been stopped. For help, please see the Community section on https://www.virtualbox.org or your support contract. Please provide the contents of the log file VBox.log and the image file VBox.png, which you can find in the /home/sk/VirtualBox VMs/Ubuntu 20.04 Server/Logs directory, as well as a description of what you were doing when this error happened. Note that you can also access the above files by selecting Show Log from the Machine menu of the main VirtualBox window. Press OK if you want to power off the machine or press Ignore if you want to leave it as is for debugging. Please note that debugging requires special knowledge and tools, so it is recommended to press OK now.
然后我停止了 KVM 来宾,关闭了 KVM 应用程序并从 virtualbox 启动了 VM,它起作用了!
我也反过来试过。 我从 virtualbox 启动了一个 VM,然后启动了一个 KVM 来宾,但 KVM 来宾没有启动。
Error starting domain: internal error: process exited while connecting to monitor: ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy 2020-07-08T11:28:43.524617Z qemu-system-x86_64: failed to initialize KVM: Device or resource busy Traceback (most recent call last): File "/usr/share/virt-manager/virtManager/asyncjob.py", line 75, in cb_wrapper callback(asyncjob, *args, **kwargs) File "/usr/share/virt-manager/virtManager/asyncjob.py", line 111, in tmpcb callback(*args, **kwargs) File "/usr/share/virt-manager/virtManager/object/libvirtobject.py", line 66, in newfn ret = fn(self, *args, **kwargs) File "/usr/share/virt-manager/virtManager/object/domain.py", line 1279, in startup self._backend.create() File "/usr/lib/python3/dist-packages/libvirt.py", line 1234, in create if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self) libvirt.libvirtError: internal error: process exited while connecting to monitor: ioctl(KVM_CREATE_VM) failed: 16 Device or resource busy 2020-07-08T11:28:43.524617Z qemu-system-x86_64: failed to initialize KVM: Device or resource busy
然后我停止了虚拟机并关闭了 Virtualbox 应用程序并启动了一个 KVM 实例,它起作用了!
我什至使用“lsmod”命令检查了 kvm 和 vbox 模块是否正在运行。
使用 lsmod 命令查找 KVM 模块:
$ sudo lsmod | grep kvm
示例输出:
kvm_intel 282624 0 kvm 663552 1 kvm_intel
查找 virtualbox 模块:
$ sudo lsmod | grep vbox
示例输出:
vboxnetadp 28672 0 vboxnetflt 28672 0 vboxdrv 487424 2 vboxnetadp,vboxnetflt
所有模块都已加载。
在查看 Virtualbox 论坛后,我意识到如果我们在同一台主机上同时运行多个管理程序,就会发生此错误。
那么如何修复 Linux 中的 Virtualbox Guru Meditation 错误?
实际上,没有 FIX。 您必须一次使用任何一个管理程序。 Intel VT-x/AMD-V 硬件虚拟化扩展不能在同一主机上同时运行的多个不同管理程序中使用。 您应该只在单个主机上运行管理程序。 如果你想使用另一个, close 当前运行的管理程序并启动另一个管理程序。
virtualbox 大师冥想的另一个原因是 VT-x 可能在 BIOS 中被禁用. 确保您已在 bios 中启用它。 请参阅您系统的制造商手册以在 BIOS 中启用 VT。
我不能使用 KVM 和 VirtualBox 并排
我的 Ubuntu 20.04 系统上的 KVM 和 Virtualbox 没有任何问题。 我可以同时运行两者。
在同一主机上运行 KVM 和 Virtualbox 时,有些人可能会遇到此错误:
VERR_VMX_IN_VMX_ROOT_MODE
如果您不能将 Virtualbox 与 KVM 一起使用,您可以暂时禁用 kvm 模块,然后在需要时启用它们。
使用命令卸载正在运行的 KVM 模块:
$ sudo rmmod kvm-intel
如果是AMD系统,改用这个命令:
$ sudo rmmod kvm-amd
或者,您可以使用以下命令:
$ sudo modprobe -r kvm_intel
$ sudo modprobe -r kvm
在 AMD 上:
$ sudo modprobe -r kvm_amd
$ sudo modprobe -r kvm
现在尝试启动 Virtualbox VM。 它现在应该可以工作了。
启用 KVM 模块
要启用 KVM 模块,您需要首先找到它们在磁盘中的位置。 为此,请运行:
$ sudo updatedb
$ sudo locate kvm
您应该会看到如下所示的输出。
/lib/modules/5.4.0-39-generic/kernel/arch/x86/kvm /lib/modules/5.4.0-39-generic/kernel/arch/x86/kvm/kvm-amd.ko /lib/modules/5.4.0-39-generic/kernel/arch/x86/kvm/kvm-intel.ko /lib/modules/5.4.0-39-generic/kernel/arch/x86/kvm/kvm.ko /lib/modules/5.4.0-39-generic/kernel/drivers/gpu/drm/i915/gvt/kvmgt.ko /lib/modules/5.4.0-39-generic/kernel/drivers/ptp/ptp_kvm.ko /lib/modules/5.4.0-40-generic/kernel/arch/x86/kvm /lib/modules/5.4.0-40-generic/kernel/arch/x86/kvm/kvm-amd.ko /lib/modules/5.4.0-40-generic/kernel/arch/x86/kvm/kvm-intel.ko [...]
寻找 ”kvm-intel.ko
“ 和 ”kvm.ko
” 条目。使用命令启用这两个模块:
$ sudo insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm.ko
$ sudo insmod /lib/modules/`uname -r`/kernel/arch/x86/kvm/kvm-intel.ko
在 AMD 系统上,替换“kvm-intel.ko
“ 和 ”kvm-amd.ko
”。
您现在可以运行 KVM 实例。 请记住,在您关闭所有 KVM 实例之前,virtualbox VM 不会启动。
参考:
- 虚拟盒子论坛
相关阅读:
- 如何修复“未安装内核驱动程序(rc=-1908)” VirtualBox Ubuntu 中的错误
- 解决“Cannot change group vboxusers for device /dev/vboxdrv”Virtualbox 错误
- CentOS 8 虚拟机无法运行 VirtualBox 5.2 在 Ubuntu 18.04 上
- 解决“结果代码:NS_ERROR_FAILURE (0x80004005)” VirtualBox Arch Linux 中的错误
LinuxLinux howtoLinux 故障排除Oracle 故障排除VirtualBoxVirtualbox Guru Meditation