我在安装了 Ubuntu 20.04 的 Windows 10 计算机上安装了 WSL 1。我的 CPU 支持硬件虚拟化。我按照说明操作这里尝试安装 KVM,但是当我运行“virsh list --all”时,我得到了
error: failed to connect to the hypervisor
error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory
的输出kvm-ok
是
INFO: /dev/kvm does not exist
HINT: sudo modprobe kvm_intel
modprobe: FATAL: Module msr not found in directory /lib/modules/4.4.0-17134-Microsoft
那么,是因为 WSL 1 无法安装 KVM 吗?kvm 只有在 WSL 2 上才可以?
答案1
不是。KVM 是 Linux 内核的功能,而 WSL1 没有 Linux 内核;它模仿Linux 内核,有点像 Wine 模仿 Windows 环境。您实际上无法将 Linux.ko
模块加载到其中。
这可能在理论上,这在 WSL2 中是可能的,因为 WSL2 运行真正的 Linux 内核,并通过 Hyper-V 来实现,它支持“嵌套虚拟化“如果 CPU 也兼容,这意味着 WSL2 VM 本身可以在内部运行更多 VM。但是,我不知道微软提供的标准 Linux 内核(你从未想过会听到的词)是否使用 KVM 支持进行编译,但至少他们有编译自定义内核的说明。
它可能还有可能以某种方式说服你的 libvirtd 运行 Qemu在 Windows 上,因为 Qemu 实际上支持通过 Windows 虚拟机管理程序平台(这是 Windows 中的 KVM 等效版本)运行虚拟机,所以您可以并行运行 WSL2 而qemu.exe -accel whpx
不会发生冲突。
(当然,Windows 上的 Qemu 也可以使用 Intel HAXM 虚拟机管理程序-accel hax
。)
(也许 WSL1 可以根据 Windows Hypervisor 平台实现 /dev/kvm API,但它没有这样做,而且考虑到 WSL2 的重点,我认为它不会收到任何新功能。)