web-dev-qa-db-ja.com

KVM、ホスト/推測アーキテクチャが異なるQEMU

私のゲストOSはx86(.vmdk形式)であり、QEMUのドキュメントから、私のホストはARM Raspberry Pi 3であるため、KVM。

あれは正しいですか?

3
A. Michael

仮想マシンを実行する素朴な方法は、各命令を解釈することです。 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拡張機能がないと、モジュールはロードされません。

0
dyasny