ゲストアドインがインストールされていないにもかかわらず、hostnamectlが仮想化を表示するのはなぜですか?

ゲストアドインがインストールされていないにもかかわらず、hostnamectlが仮想化を表示するのはなぜですか?

私はVirtualboxで非常に基本的なDebian 9 OSを実行していますが、何を得ても半仮想化|ゲストアドインをインストールしていませんVirtualization: oracle。なぜ?オペレーティングシステムは、自分が物理ハードウェアで実行されているのか、仮想ハードウェアで実行されているのかを知る必要はありませんか?

答え1

最も実用的な仮想化ソリューションをテストすることは難しくありません。

Linuxカーネルは、少なくともVMware、HyperV、Xen、およびKVMを検出できます。出力で同様のメッセージを見つけますHypervisor detected: <virtualization type>dmesg

VMwareとHyperVがプロセッサのopcode結果に追加する署名情報は、cpuid少なくとも非常に低いレベルで検出できます。dmidecodeおよび/またはの出力を見ることは、lspciさまざまな種類の仮想化を検出するもう1つの簡単な方法です。

実用的な理由から、ほとんどの仮想化ソリューションは、VMにシンプルでよくサポートされているシステムコンポーネントのセットを提供します。これにより、実際の物理ハードウェアでは意味のない組み合わせが発生することがよくあります。たとえば、同じシステムにIntel ICH8M SATAコントローラとIntel PIIX3 ISA Bridgeがある場合、これは非常に確実な証拠です。両方が必要です。デバイスは次のとおりです。システムチップセットに統合されていますが、彼らは非常に異なるチップセットに属していますしたがって、同じ物理システムに同時に存在しません。

また、クロック速度が2桁のMHz値で測定されたオリジナルのPentium IIチップで使用されていたシステムチップセットの一部である部品を見ることができますが、プロセッサは複数のGHz速度を主張すると仮想化が進行中であることがわかります.に。 。

また見なさい:仮想化技術を識別する簡単な方法

systemd仮想マシンとコンテナを制御するように設計された機能が含まれているため、基本ライブラリに一連の仮想化検出ルーチンを含めることもできます。また、それらを組み合わせることができますsystemd-Detect-virt コマンド。

関連情報