最近,我开始将 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
)。