在大多数 Linux 系统上,为什么即使不使用虚拟化也会加载 KVM 内核模块?

在大多数 Linux 系统上,为什么即使不使用虚拟化也会加载 KVM 内核模块?

最近,我开始将 KVM/Qemu 作为 VirtualBox 的替代品,并惊讶地发现这 3 个模块似乎会自动加载到我检查的几乎每个 Linux 系统上:

[pgoetz@frog etc]$ lsmod | grep kvm
kvm_intel             311296  0
kvm                   778240  1 kvm_intel
irqbypass              16384  1 kvm

之所以令人震惊,是因为这些系统都没有使用 kvm/Qemu 虚拟化(尽管其中有几个系统是为 VirtualBox 设置的)。我检查的系统运行的是 Arch linux、Ubuntu 18.04、Ubuntu 19.10 和 CentOS 7.4。 Ubuntu 19.10 是全新的桌面安装,没有添加任何软件。我发现唯一没有加载 KVM 模块的系统是 Ubuntu 18.04.2(替代)服务器安装。

大量的谷歌搜索尚未揭示加载这些模块的原因。作为实验,我尝试在 Ubuntu 19.10 机器上的 BIOS 中禁用 Intel VT,它仍然加载 kvm 模块(但不是 kvm_intel)!

加载这个模块可能不会有什么坏处,但我很好奇这个机制:它是如何/为什么在启动时加载的?

答案1

要确定自动加载模块的原因,最好查看模块的别名:

$ sudo modinfo kvm-intel|grep alias:
alias:          cpu:type:x86,ven*fam*mod*:feature:*0085*
$ sudo modinfo kvm-amd|grep alias:
alias:          cpu:type:x86,ven*fam*mod*:feature:*00C2*

这意味着它kvm-intel被加载到具有支持功能 85h 的 CPU 的系统上(X86_FEATURE_VMX),并且kvm-amd在具有支持功能 C2h 的 CPU 的系统上(X86_FEATURE_SVM)。

相关内容