In che modo il BIOS può bloccare la virtualizzazione?


26

Sto iniziando a lavorare con Docker e dopo alcune ore di tentativi per farlo funzionare, ho scoperto che il mio BIOS lo stava bloccando e che avevo bisogno di regolare le impostazioni del BIOS. Mi è stato detto che il BIOS è in qualche modo correlato alla scheda madre.

Come può il BIOS bloccare questo tipo di processo, annullando il sistema operativo?


14
Lo hai al contrario. Le impostazioni del BIOS per la virtualizzazione indicano alla CPU di consentire un tipo specifico di elaborazione. se le estensioni di virtualizzazione non sono abilitate nel BIOS, la CPU non sarà in grado di eseguire il programma. La situazione è molto simile al tentativo di eseguire un programma compilato per un'architettura di processore DEC Alpha su un sistema x64. senza le estensioni, il programma tenterà di eseguire istruzioni che la CPU non comprende. Docker si sta bloccando dall'esecuzione perché ha rilevato che la CPU non è attualmente in grado di eseguirla.
Frank Thomas,

Risposte:


37

Non è che la CPU stia bloccando un programma; non ha un concetto di app a un livello così basso. Il problema è che Docker su sistemi operativi non Linux può richiedere la virtualizzazione hardware. Non hai specificato il tuo sistema operativo, ma ho fatto un po 'di snooping e ho scoperto che probabilmente usi Windows.

La virtualizzazione hardware è una funzionalità della CPU che, come si può immaginare dal nome, consente alla CPU di aiutare con la virtualizzazione. Su molte macchine, è necessario abilitarlo nel BIOS. Questo, in parte, per prevenire problemi di sicurezza . Fondamentalmente, non è stato possibile avviare un programma perché ha tentato di utilizzare una funzione che era effettivamente assente anziché bloccata attivamente.


14
a tiny bit of snoopingHa..ha
bs677,

si sto usando un Windows 7! Grazie per la spiegazione!!! Ora capisco!
Alvaro Joao,

Conosco questa impostazione, ma ancora poco chiaro, che cos'è esattamente la virtualizzazione dell'hardware (nel contesto dell'impostazione del BIOS)?
Celeritas,

2
La virtualizzazione hardware di @Celeritas è un insieme di funzionalità fornite dalla CPU e dal BIOS che rendono più efficiente l'esecuzione di macchine virtuali, ad esempio gestendo in modo trasparente gli accessi alla memoria effettuati dalla VM in un modo più efficiente di quanto si possa fare a livello di software puro, e gestire / intercettare istruzioni "privilegiate" come le operazioni di I / O che il software di virtualizzazione può gestire in modo più efficiente.
Ripristina Monica - ζ--

2
@ RACING121 La N sta per NSA :)
Ben N,

41

La risposta di Ben N è chiaramente la più utile e chiara.

Per coloro che ancora si chiedono, tuttavia ecco la storia completa.


La virtualizzazione è realizzata con assistenza hardware dalla CPU. Poiché un sistema operativo virtualizzato interferirebbe con quello host, poiché competono per le stesse risorse, è necessario un meccanismo per impedire all'ospite di avere un accesso incontrollato all'hardware. Questo può essere inattivo con software, lento, tecniche o con assistenza dalla CPU.

La virtualizzazione assistita da hardware è implementata con istruzioni opzionali specifiche, che puoi leggere nei Capitoli 23, 24, 25, 26, 27 e 28 del Manuale 3B Intel parte 3 . Il software deve prima controllare che queste istruzioni siano supportate, prima di provare a usarle.

Per motivi di sicurezza, la CPU ha un registro speciale, è un MSR , chiamato IA32_FEATURE_CONTROL che contiene i bit che dicono con funzione per abilitare o disabilitare.
citando

Il bit 0 è il bit di blocco. Se questo bit è chiaro, VMXON provoca un'eccezione di protezione generale. Se il bit di blocco è impostato, WRMSR su questo MSR provoca un'eccezione di protezione generale; l'MSR non può essere modificato fino a una condizione di ripristino all'accensione . Il BIOS di sistema può utilizzare questo bit per fornire un'opzione di configurazione per il BIOS per disabilitare il supporto per VMX. Per abilitare il supporto VMX in una piattaforma, il BIOS deve impostare il bit 1, il bit 2 o entrambi (vedere di seguito), nonché il bit di blocco.

Il punto fondamentale è che una volta bloccato, il registro non può essere sbloccato fino all'accensione .

Poiché BIOS / UEFI viene prima di tutto, ha il potere di disabilitare la virtualizzazione cancellando i bit appropriati e bloccando il registro prima che qualsiasi sistema operativo possa impedirlo. Quando la funzionalità di virtualizzazione viene disabilitata in questo modo, la CPU segnala che manca l'estensione dell'istruzione opzionale (e in realtà non funziona se vengono utilizzati) e quindi il software non può utilizzare la virtualizzazione hardware.


2
Questo è un ottimo componente aggiuntivo alla domanda. Molte persone non hanno idea che l'impostazione richieda un ripristino per cambiare, quindi non può essere abilitata "al volo" mentre il sistema operativo è in esecuzione.
Tonny,

OHH, ecco come funziona! L'ho cercato su Google e ho trovato la tua risposta (che è ciò che mi interessa, per i miei concetti personali)
Paul Stelian,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.