Ответ Бен Н, безусловно, самый полезный и понятный.
Для тех, кто все еще задается вопросом, однако, вот полная история.
Виртуализация достигается с помощью аппаратного обеспечения от процессора. Поскольку виртуализированная ОС будет мешать хост-системе, поскольку они конкурируют за одни и те же ресурсы, необходим механизм, позволяющий запретить гостю иметь неконтролируемый доступ к оборудованию. Это может быть связано с программным обеспечением, медленной техникой или с помощью процессора.
Аппаратная виртуализация реализована с помощью специальных дополнительных инструкций, о которых вы можете прочитать в главах 23, 24, 25, 26, 27 и 28 Руководства Intel 3B, часть 3 . Программное обеспечение должно сначала проверить, поддерживаются ли эти инструкции, прежде чем пытаться их использовать.
По соображениям безопасности, CPU имеет специальный регистр, это MSR , называемый IA32_FEATURE_CONTROL, который содержит биты, сообщающие с возможностью включения или выключения.
квотирование
Бит 0 является битом блокировки. Если этот бит сброшен, VMXON вызывает исключение общей защиты. Если бит блокировки установлен, WRMSR для этого MSR вызывает исключение общей защиты; MSR не может быть изменен до состояния сброса при включении питания . Системный BIOS может использовать этот бит для настройки BIOS, чтобы отключить поддержку VMX. Чтобы включить поддержку VMX на платформе, BIOS должен установить бит 1, бит 2 или оба (см. Ниже), а также бит блокировки.
Принципиальным моментом является то, что, как только регистр заблокирован, он не может быть разблокирован до включения питания .
Поскольку на первом месте стоит BIOS / UEFI, он может отключить виртуализацию, очистив соответствующие биты и заблокировав регистр, прежде чем любая ОС сможет это предотвратить. Когда функция виртуализации отключена таким образом, ЦПУ сообщает, что отсутствует дополнительное расширение инструкции (и фактически происходит сбой, если они используются), и поэтому программное обеспечение не может использовать аппаратную виртуализацию.