26

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

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

2 ответа2

41

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

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


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

Аппаратная виртуализация реализована с помощью специальных дополнительных инструкций, о которых вы можете прочитать в главах 23, 24, 25, 26, 27 и 28 Руководства Intel 3B, часть 3. Программное обеспечение должно сначала проверить, поддерживаются ли эти инструкции, прежде чем пытаться их использовать.

По соображениям безопасности ЦП имеет специальный регистр, это MSR, называемый IA32_FEATURE_CONTROL, который содержит биты, сообщающие с возможностью включения или выключения.
квотирование

Бит 0 является битом блокировки. Если этот бит сброшен, VMXON вызывает исключение общей защиты. Если бит блокировки установлен, WRMSR для этого MSR вызывает исключение общей защиты; MSR не может быть изменен до состояния сброса при включении питания. Системный BIOS может использовать этот бит для настройки BIOS, чтобы отключить поддержку VMX. Чтобы включить поддержку VMX на платформе, BIOS должен установить бит 1, бит 2 или оба (см. Ниже), а также бит блокировки.

Принципиальным моментом является то, что, как только регистр заблокирован, он не может быть разблокирован до включения питания.

Поскольку на первом месте стоит BIOS/UEFI, он может отключить виртуализацию, очистив соответствующие биты и заблокировав регистр, прежде чем любая ОС сможет это предотвратить. Когда функция виртуализации отключена таким образом, ЦП сообщает, что отсутствует дополнительное расширение инструкции (и фактически происходит сбой, если они используются), и поэтому программное обеспечение не может использовать аппаратную виртуализацию.

37

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .