私はDockerを使い始めて、数時間動作させようと試みましたが、BIOSがそれをブロックしており、BIOS設定を調整する必要があることがわかりました。BIOSはマザーボードと何らかの関係があると言われました。
BIOSはこの種のプロセスをどのようにブロックし、オペレーティングシステムを無効にできますか?
私はDockerを使い始めて、数時間動作させようと試みましたが、BIOSがそれをブロックしており、BIOS設定を調整する必要があることがわかりました。BIOSはマザーボードと何らかの関係があると言われました。
BIOSはこの種のプロセスをどのようにブロックし、オペレーティングシステムを無効にできますか?
回答:
CPUがプログラムをブロックしているわけではありません。それほど低いレベルのアプリという概念はありません。問題は、Linux以外のオペレーティングシステム上の Docker ではハードウェアの仮想化が必要になる可能性があることです。OSを指定していませんが、少し覗き見して、おそらくWindowsを使用していることを発見しました。
ハードウェア仮想化は、名前から推測できるように、CPUが仮想化に役立つCPU機能です。多くのマシンでは、BIOSで有効にする必要があります。これは、部分的には、セキュリティの問題を防ぐためです。基本的に、アクティブにブロックされているのではなく、実質的に存在しない機能を使用しようとしたため、プログラムを起動できませんでした。
a tiny bit of snooping
Ha..ha
ベン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はオプションの命令拡張が欠落している(および使用されている場合は実際に障害がある)ため、ソフトウェアがハードウェア仮想化を使用できないと報告します。