web-dev-qa-db-fra.com

Comment le BIOS peut-il bloquer la virtualisation?

Je commence à travailler avec Docker et après quelques heures d’essai, j’ai découvert que mon BIOS le bloquait et qu’il me fallait ajuster les paramètres du BIOS. On m'a dit que le BIOS est en quelque sorte lié à la carte mère.

Comment le BIOS peut-il bloquer ce type de processus en annulant le système d'exploitation?

26
Alvaro Joao

Ce n’est pas que le processeur bloque un programme; il n'a pas de concept d'applications à un niveau aussi bas. Le problème est que Docker sur des systèmes d'exploitation non Linux peut nécessiter une virtualisation matérielle. Vous n'avez pas spécifié votre système d'exploitation, mais j'ai effectué une petite fouille et découvert que vous utilisiez probablement Windows.

La virtualisation matérielle est une fonctionnalité du processeur qui, comme son nom l’indique bien, permet au processeur d’aider à la virtualisation. Sur de nombreuses machines, vous devez l'activer dans le BIOS. Ceci est en partie pour empêcher les problèmes de sécurité . En gros, vous ne pouviez pas démarrer un programme car il tentait d'utiliser une fonctionnalité qui était effectivement absente par opposition à bloquée activement.

37
Ben N

La réponse de Ben N est clairement la plus utile et la plus claire.

Pour ceux qui se demandent encore, voici cependant l'histoire complète.


La virtualisation est réalisée avec l'assistance matérielle de la CPU. Etant donné qu'un système d'exploitation virtualisé interférerait avec l'hôte, car ils se disputent les mêmes ressources, un mécanisme est nécessaire pour empêcher l'invité de disposer d'un accès non contrôlé au matériel. Cela peut être dû à un logiciel, lent, techniques ou avec l'assistance du CPU.

La virtualisation assistée par matériel est implémentée avec des instructions spécifiques facultatives . Vous en saurez plus à ce sujet aux chapitres 23, 24, 25, 26, 27 et 28 de Manuel Intel 3B Partie 3 . Le logiciel doit d'abord vérifier que ces instructions sont prises en charge avant de tenter de les utiliser.

Pour des raisons de sécurité, la CPU a un registre spécial, il s’agit d’un MSR, appelé IA32_FEATURE_CONTROL qui contient des bits indiquant la fonctionnalité d’activation ou de désactivation. .
Citations

Le bit 0 est le bit de verrouillage. Si ce bit est vide, VMXON provoque une exception de protection générale. Si le bit de verrouillage est défini, WRMSR vers ce MSR provoque une exception de protection générale; le MSR ne peut pas être modifié avant une condition de réinitialisation à la mise sous tension . Le BIOS système peut utiliser ce bit pour fournir une option de configuration permettant au BIOS de désactiver la prise en charge de VMX. Pour activer le support VMX sur une plate-forme, le BIOS doit définir le bit 1, le bit 2 ou les deux (voir ci-dessous), ainsi que le bit de verrouillage.

Le point fondamental est que une fois que le registre est verrouillé, il ne peut pas être déverrouillé avant une mise sous tension .

Étant donné que le BIOS/UEFI vient en premier, il a le pouvoir de désactiver la virtualisation en effaçant les bits appropriés et en verrouillant le registre avant qu'aucun système d'exploitation ne puisse empêcher cela. Lorsque la fonctionnalité de virtualisation est désactivée de cette manière, la CPU indique que l’extension d’instruction facultative est manquante (et qu’il ya effectivement des erreurs si elles sont utilisées) et que le logiciel ne peut donc pas utiliser la virtualisation matérielle.

41
Margaret Bloom