如何让VirtualBox与Multipass在Ubuntu 22.04系统中共存并同时运行虚拟机?
如何让VirtualBox与Multipass在Ubuntu 22.04系统中共存并同时运行虚拟机?
我看到你在Ubuntu 22.04(KDE Neon)上碰到了VirtualBox和默认QEMU/KVM后端的Multipass没法同时跑虚拟机的问题,本质原因是这俩都需要独占CPU的VT-x虚拟化扩展,同一时间只能有一个虚拟化层占用它。下面给你几个实用的解决方案,你可以根据自己的需求挑:
方案一:切换Multipass到VirtualBox后端(推荐)
你之前以为VirtualBox后端只支持macOS?其实Linux上完全能用!这样Multipass和你现有的VirtualBox环境共享同一个虚拟化层,自然就能同时运行虚拟机了,性能损失微乎其微,完全能满足开发测试的需求。
操作步骤:
- 先停掉所有正在运行的Multipass实例:
multipass stop --all
- 把Multipass的默认驱动改成VirtualBox:
multipass set local.driver=virtualbox
- 之后再启动Multipass实例就OK了,新创建的实例都会由VirtualBox管理,和你手动建的VirtualBox虚拟机完全兼容。
方案二:让Multipass的QEMU实例禁用硬件虚拟化
要是不想切换后端,你可以让Multipass的QEMU实例不用KVM(硬件虚拟化),改用软件模拟,这样VirtualBox就能独占VT-x资源正常启动虚拟机了。缺点是Multipass虚拟机的性能会有所下降,但对于轻量的开发测试场景来说,这点影响基本可以忽略。
操作步骤:
- 停止所有Multipass实例:
multipass stop --all
- 设置QEMU驱动默认禁用KVM:
multipass set local.qemu.custom-flags="--no-kvm"
- 重启Multipass实例就生效了。如果只是想临时给某个实例禁用KVM,创建的时候加个参数就行:
multipass launch --custom-flags "--no-kvm"
方案三:切换Multipass到libvirt后端
虽然你提到不想装额外依赖,但这个方案长期来看更灵活,尤其是如果你之后需要更复杂的虚拟化管理的话。这里要说明下:同一时间还是只能有一个虚拟化层用VT-x,但libvirt支持更灵活的配置,比如你可以给其中一方开启嵌套虚拟化,或者按需切换使用。
操作步骤:
- 先装libvirt相关依赖:
sudo apt install libvirt-daemon-system libvirt-clients qemu-kvm
- 把当前用户加入libvirt组,避免每次操作都要输sudo:
sudo usermod -aG libvirt $USER
- 注销再重新登录,让组权限生效。
- 停止所有Multipass实例:
multipass stop --all
- 切换Multipass驱动为libvirt:
multipass set local.driver=libvirt
- 启动Multipass实例就可以了。
备注:内容来源于stack exchange,提问作者Jens
相关产品推荐
相关产品推荐

