it-swarm.com.de

Wie kann das BIOS die Virtualisierung blockieren?

Ich fange an, mit Docker zu arbeiten, und nachdem ich einige Stunden lang versucht hatte, es zum Laufen zu bringen, stellte ich fest, dass mein BIOS es blockierte und dass ich die BIOS-Einstellungen anpassen musste. Mir wurde gesagt, dass das BIOS irgendwie mit dem Motherboard zusammenhängt.

Wie kann das BIOS diese Art von Prozess blockieren und das Betriebssystem außer Kraft setzen?

26
Alvaro Joao

Es ist nicht so, dass die CPU ein Programm blockiert. Es gibt kein Konzept für Apps auf diesem niedrigen Niveau. Das Problem ist, dass Docker auf Nicht-Linux-Betriebssystemen eine Hardwarevirtualisierung erfordern kann. Sie haben Ihr Betriebssystem nicht angegeben, aber ich habe ein bisschen geschnüffelt und festgestellt, dass Sie wahrscheinlich Windows verwenden.

Hardwarevirtualisierung ist eine CPU-Funktion, mit der die CPU, wie der Name vermuten lässt, bei der Virtualisierung helfen kann. Auf vielen Rechnern müssen Sie es im BIOS aktivieren. Dies dient zum Teil dazu, Sicherheitsprobleme zu vermeiden . Grundsätzlich konnte ein Programm nicht gestartet werden, da versucht wurde, eine Funktion zu verwenden, die effektiv nicht vorhanden war und nicht aktiv blockiert wurde.

37
Ben N

Die Antwort von Ben N ist eindeutig die nützlichste und klarste.

Für diejenigen, die sich noch wundern, ist hier jedoch die ganze Geschichte.


Die Virtualisierung erfolgt mit Hardware-Unterstützung der CPU. Da ein virtualisiertes Betriebssystem das Host-Betriebssystem stören würde, da es um dieselben Ressourcen konkurriert, ist ein Mechanismus erforderlich, um zu verhindern, dass der Gast unkontrollierten Zugriff auf die Hardware hat. Dies kann mit Software, langsamen Techniken oder mit Unterstützung der CPU geschehen.

Die hardwaregestützte Virtualisierung wird mit spezifischen optionalen Anweisungen implementiert, die Sie in den Kapiteln 23, 24, 25, 26, 27 und 28 von nachlesen können/Intel Handbuch 3B Teil 3 . Die Software muss zuerst prüfen, ob diese Anweisungen unterstützt werden, bevor sie verwendet werden.

Aus Sicherheitsgründen verfügt die CPU über ein spezielles Register, ein MSR mit dem Namen IA32_FEATURE_CONTROL , das Bits enthält, die mit der Funktion zum Aktivieren oder Deaktivieren angeben .
Zitieren

Bit 0 ist das Sperrbit. Wenn dieses Bit gelöscht ist, verursacht VMXON eine allgemeine Schutzausnahme. Wenn das Sperrbit gesetzt ist, verursacht WRMSR für dieses MSR eine allgemeine Schutzausnahme. Das MSR kann erst nach einem Neustart geändert werden. Das System-BIOS kann dieses Bit verwenden, um eine Setup-Option für das BIOS bereitzustellen, mit der die Unterstützung für VMX deaktiviert wird. Um die VMX-Unterstützung auf einer Plattform zu aktivieren, muss das BIOS Bit 1, Bit 2 oder beides (siehe unten) sowie das Sperrbit setzen.

Der grundlegende Punkt ist, dass sobald das Register gesperrt ist, es erst nach einem Einschalten entsperrt werden kann .

Da BIOS/UEFI an erster Stelle steht, kann es die Virtualisierung deaktivieren, indem die entsprechenden Bits gelöscht und das Register gesperrt werden, bevor ein Betriebssystem dies verhindern kann. Wenn die Virtualisierungsfunktion auf diese Weise deaktiviert wird, meldet die CPU, dass die optionale Befehlserweiterung fehlt (und tatsächlich fehlerhaft ist, wenn sie verwendet wird), und die Software kann die Hardwarevirtualisierung daher nicht verwenden.

41
Margaret Bloom