Как BIOS может блокировать виртуализацию?


26

Я начинаю работать с Docker и после нескольких часов попыток заставить его работать, я обнаружил, что мой BIOS блокирует его, и что мне нужно настроить параметры BIOS. Мне сказали, что BIOS как-то связан с материнской платой.

Как BIOS может блокировать этот процесс, переигрывая операционную систему?


14
У вас есть это назад. Настройки BIOS для виртуализации сообщают ЦПУ о необходимости определенного вида обработки. если расширения виртуализации не включены в BIOS, ЦП не сможет выполнить программу. Ситуация во многом похожа на попытку запустить программу, скомпилированную для архитектуры процессора DEC Alpha в системе x64. без расширений программа попытается выполнить инструкции, которые процессор не понимает. Ваш Docker блокирует выполнение, потому что он обнаружил, что ваш ЦП, как он настроен в данный момент, не может его запустить.
Фрэнк Томас

Ответы:


37

Дело не в том, что процессор блокирует программу; у него нет концепции приложений на этом низком уровне. Проблема в том, что Docker в операционных системах, отличных от Linux, может потребовать аппаратной виртуализации. Вы не указали свою ОС, но я немного отыскал и обнаружил, что вы, вероятно, используете Windows.

Аппаратная виртуализация - это функция ЦП, которая, как можно догадаться из названия, позволяет ЦП помочь с виртуализацией. На многих машинах вы должны включить его в BIOS. Это частично предотвращает проблемы безопасности . По сути, вы не могли запустить программу, потому что она пыталась использовать функцию, которая фактически отсутствовала, а не активно блокировалась.


14
a tiny bit of snoopingХа..ха
bs677

да я использую windows 7! Спасибо за объяснение!!! Я понял теперь!
Альваро Жоао

Я знаком с этим параметром, но все еще неясно, что такое аппаратная виртуализация (в контексте настроек BIOS)?
Celeritas

2
@Celeritas Аппаратная виртуализация - это набор функций, предоставляемых процессором и BIOS, которые делают работу виртуальных машин более эффективной, например, за счет прозрачного управления доступом к памяти, осуществляемой виртуальной машиной, более эффективным способом, чем это может быть сделано на чисто программном уровне, и обработка / перехват «привилегированных» инструкций, таких как операции ввода-вывода, для более эффективной обработки программного обеспечения виртуализации.
Восстановить Монику - Feb--

2
@ RACING121 N обозначает NSA :)
Бен N

41

Ответ Бен Н, безусловно, самый полезный и понятный.

Для тех, кто все еще задается вопросом, однако, вот полная история.


Виртуализация достигается с помощью аппаратного обеспечения от процессора. Поскольку виртуализированная ОС будет мешать хост-системе, поскольку они конкурируют за одни и те же ресурсы, необходим механизм, позволяющий запретить гостю иметь неконтролируемый доступ к оборудованию. Это может быть связано с программным обеспечением, медленной техникой или с помощью процессора.

Аппаратная виртуализация реализована с помощью специальных дополнительных инструкций, о которых вы можете прочитать в главах 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, он может отключить виртуализацию, очистив соответствующие биты и заблокировав регистр, прежде чем любая ОС сможет это предотвратить. Когда функция виртуализации отключена таким образом, ЦПУ сообщает, что отсутствует дополнительное расширение инструкции (и фактически происходит сбой, если они используются), и поэтому программное обеспечение не может использовать аппаратную виртуализацию.


2
Это очень хорошее дополнение к вопросу. Большинство людей не подозревают, что для изменения настройки требуется сброс, поэтому ее нельзя включить «на лету» во время работы ОС.
Тонни

Ооо, вот как это работает! Я погуглил его и нашел твой ответ (что меня интересует для моих личных понятий)
Пол Стелян
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.