web-dev-qa-db-ja.com

ほとんどの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、およびCentOS7.4を実行していました。 Ubuntu 19.10は、ソフトウェアが追加されていない新しいデスクトップインストールでした。 KVMモジュールがロードされていないことがわかった唯一のシステムは、Ubuntu 18.04.2(代替)サーバーのインストールでした。

多くのグーグルは、これらのモジュールがロードされる理由を明らかにしていません。実験として、Ubuntu19.10マシンのBIOSでIntelVTを無効にしてみましたが、それでもkvmモジュールがロードされました(kvm_intelはロードされませんでした)。

このモジュールをロードしても問題はないかもしれませんが、メカニズムについて興味があります。ブート時にどのように/なぜロードされるのですか?

1
pgoetz

モジュールが自動的に読み込まれる理由を判断するには、モジュールのエイリアスを確認することをお勧めします。

$ 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 CPUサポート機能C2hを備えたシステム( X86_FEATURE_SVM )。

2
Stephen Kitt