私のゲストOSはx86(.vmdk形式)であり、QEMUのドキュメントから、私のホストはARM Raspberry Pi 3であるため、KVM。
あれは正しいですか?
仮想マシンを実行する素朴な方法は、各命令を解釈することです。 VMソフトウェアは、各命令をデコードして実行します。
仮想マシンの命令セットがホストと同じである場合、別の方法は単に命令を実行することです。ゲストがハードウェアを完全に制御できないため、直接実行できない命令はごくわずかです。厄介な点はメモリアクセスです。ゲストはメモリ全体にアクセスできないため、アドレスに対して変換を実行する必要があります。 VT-x(Intel)またはAMD-V(AMD)拡張機能を備えたx86 CPUなどのハイエンドCPU、またはARM Cortex-A15以降(Pi2およびPi3を含む) )、このアドレス変換を実行するためのハードウェア機能があります。KVMは、これらの命令を利用して仮想マシンのコードをネイティブプロセッサで直接実行できるようにするLinuxカーネルのコンポーネントです。 。
ARMコードをARM CPU、またはx86CPUでx86を実行しようとしていないためです。 ARM CPUでx86コードを実行します。このためには、命令をデコードして解釈するソフトウェアが必要です。KVMはここでは役に立ちません。
カーネルでkvmを有効にすることはできますが、適切なcpu拡張機能がないと、モジュールはロードされません。