ほとんどのLinuxシステムで仮想化を使用していない場合でも、KVMカーネルモジュールがロードされるのはなぜですか?

ほとんどのLinuxシステムで仮想化を使用していない場合でも、KVMカーネルモジュールがロードされるのはなぜですか?

最近、私はVirtualBoxの代わりにKVM / Qemuを調べ始め、私が確認したほとんどすべてのLinuxシステムに自動的にロードされるように見える次の3つのモジュールを見つけて驚きました。

[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(X86_FEATURE_VMX)とkvm-amdC2h機能をサポートするCPUを搭載したシステム(X86_FEATURE_SVM)。

関連情報