BIOSはどのように仮想化をブロックできますか?


26

私はDockerを使い始めて、数時間動作させようと試みましたが、BIOSがそれをブロックしており、BIOS設定を調整する必要があることがわかりました。BIOSはマザーボードと何らかの関係があると言われました。

BIOSはこの種のプロセスをどのようにブロックし、オペレーティングシステムを無効にできますか?


14
あなたはそれを後方に持っています。仮想化のBIOS設定は、特定の種類の処理を許可するようCPUに指示します。BIOSで仮想化拡張機能が有効になっていない場合、CPUはプログラムを実行できません。この状況は、x64システムでDEC Alphaプロセッサアーキテクチャ用にコンパイルされたプログラムを実行しようとするようなものです。拡張機能がないと、プログラムはCPUが理解できない命令を実行しようとします。現在設定されているCPUを実行できないことを検出したため、Dockerは自身の実行をブロックしています。
フランクトーマス

回答:


37

CPUがプログラムをブロックしているわけではありません。それほど低いレベルのアプリという概念はありません。問題は、Linux以外のオペレーティングシステム上の Docker ではハードウェアの仮想化が必要になる可能性があることです。OSを指定していませんが、少し覗き見して、おそらくWindowsを使用していることを発見しました。

ハードウェア仮想化は、名前から推測できるように、CPUが仮想化に役立つCPU機能です。多くのマシンでは、BIOSで有効にする必要があります。これは、部分的には、セキュリティの問題防ぐためです。基本的に、アクティブにブロックされているのではなく、実質的に存在しない機能を使用しようとしたため、プログラムを起動できませんでした。


14
a tiny bit of snoopingHa..ha
bs677

はい、私はWindows 7を使用しています!説明してくれてありがとう!!!わかった!
アルバロジョアン

私はこの設定に精通していますが、まだ不明です。ハードウェア仮想化とは何ですか(BIOS設定のコンテキストで)。
セレリタス

2
@Celeritasハードウェア仮想化は、純粋なソフトウェアレベルで実行できるよりも効率的な方法でVMによって行われたメモリアクセスを透過的に管理するなど、仮想マシンの実行をより効率的にするCPUおよびBIOSによって提供される機能のセットです。より効率的に処理するための仮想化ソフトウェアのI / O操作などの「特権」命令の処理/トラップ。
–ζ

2
@ RACING121 NはNSAの略です:)
ベンN

41

ベンNの回答は明らかに最も有用で明確なものです。

まだ疑問に思う人のために、しかし、ここに完全な物語があります。


仮想化は、CPUからのハードウェアアシストによって実現されます。仮想化されたOSは同じリソースを求めて競合するため、ホストOSと干渉するため、ゲストがハードウェアへの制御されていないアクセスを停止するメカニズムが必要です。これは、ソフトウェア、スロー、テクニック、またはCPUの支援によってダウンする可能性があります。

ハードウェア支援による仮想化は、特定のオプションの指示で実装されます。これについては、Intelマニュアル3Bパート3の第23、24、25、26、27、および28章で読むことができます。ソフトウェアは、使用する前に、この指示がサポートされていることを最初に確認する必要があります。

セキュリティ上の理由から、CPUにはIA32_FEATURE_CONTROLと呼ばれるMSRがあり、 機能で有効または無効を指示するビットを保持します。 引用

ビット0はロックビットです。このビットがクリアされている場合、VMXONは一般保護例外を引き起こします。ロックビットが設定されている場合、このMSRに対するWRMSRは一般保護例外を引き起こします。MSRは、パワーアップリセット状態になるまで変更できません。システムBIOSは、このビットを使用してBIOSのセットアップオプションを提供し、VMXのサポートを無効にすることができます。プラットフォームでVMXサポートを有効にするには、BIOSはビット1、ビット2、または両方(以下を参照)、およびロックビットを設定する必要があります。

基本的なポイントは、いったんレジスタがロックされると、電源投入までロックを解除できないことです。

BIOS / UEFIが最初に来るため、適切なビットをクリアし、OSがそれを防ぐ前にレジスタをロックすることにより、仮想化を無効にすることができます。この方法で仮想化機能が無効にされると、CPUはオプションの命令拡張が欠落している(および使用されている場合は実際に障害がある)ため、ソフトウェアがハードウェア仮想化を使用できないと報告します。


2
それは質問への非常に良いアドオンです。ほとんどの人は、設定を変更するにはリセットが必要なことを知らないため、OSの実行中に「オンザフライ」で有効にすることはできません。
トニー

OHHのように動作します!私はそれをグーグルで検索し、あなたの答えを見つけました(私の個人的な概念のために、私が興味を持っていることです)
ポールステリアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.