
Наверное многим известна проблема запуска виртуальной машины под Win11, тем что не всегда получается использовать аппаратную функцию VT-x/AMD-V. Как правило корень этой проблемы в самой Windows 11, а именно в том что она использует эту функцию самостоятельно, соответственно заблокировав её для других.
Без VT-x/AMD-V VirtualBox переключается в режим работы через Native API (NEM), а Native API — это жуткие тормоза из-за лишней прослойки. Причины гуглятся вроде очень быстро, но, помимо очевидных причин есть и неочевидные, об этом под катом.
Чек-лист диагностики
Быстрый чек-лист для диагностики (см. подробнее далее):
- BIOS — включена ли VT-x/AMD-V физически.
bcdedit /enum | findstr hypervisorlaunchtype— должно быть Off.Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All, VirtualMachinePlatform, HypervisorPlatform— все должны быть Disabled.Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard—VirtualizationBasedSecurityStatusдолжен быть 0.- Если статус не 0 — открыть
msinfo32, посмотреть «Запущенные службы» в разделе VBS, и отключить именно ту конкретную службу (Credential Guard / Memory Integrity (HVCI) / System Guard) по инструкциям ниже. - Проверить лог самой ВМ (VBox.log) на строку
Using: VT-x(успех) противFalling back to NEM(всё ещё заблокировано).
То, что делаем в первую очередь
Базовые вещи, которые нужно сделать сразу и которые легко гуглятся.
Включить виртуализацию в BIOS
Самый первый и самый очевидный шаг — проверить BIOS. Если выключено — включить :)
Отключаем компоненты виртуализации Windows
Давайте начнём с того, что все рекомендуют сделать в первую очередь: жмём Win+R, вводим optionalfeatures и отключаем всю виртуализацию:
- Hyper-V и все подкомпоненты
- Платформа виртуальной машины (Virtual Machine Platform)
- Платформа гипервизора Windows (Windows Hypervisor Platform)
- Песочница Windows (Windows Sandbox)
Отключение гипервизора
В консоли с админ-правами выполняем bcdedit /set hypervisorlaunchtype off и отключаем запуск защищённых сред bcdedit /set vsmlaunchtype off.
Изоляция ядра / Core Isolation
Открыть Параметры (Win+I) → Конфиденциальность и безопасность → Безопасность Windows → Безопасность устройства. Перейти в «Сведения об изоляции ядра» и перевести ползунок «Целостность памяти» в положение «Выкл».
А теперь что помогло мне
Так, а теперь что делать, если перечисленное выше не помогло. (Естественно, не забываем перезагружать компьютер после каждого пункта.)
Диагностика через msinfo32
Открываем msinfo32 и смотрим на строку «Безопасность на основе виртуализации». Если там значится «Выполнение» — значит, что-то из служб VBS всё ещё держит VT-x занятым. Смотрим строку «Запущенные службы» чуть ниже — она укажет, что именно нужно отключать: Credential Guard, Memory Integrity (HVCI) или System Guard Secure Launch.
Credential Guard
Если в запущенных службах значится Credential Guard — отключаем его через редактор реестра или через консоль:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\LSA" -Name "LsaCfgFlags" -Value 0 -Type DWord Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard" -Name "EnableVirtualizationBasedSecurity" -Value 0 -Type DWord -ErrorAction SilentlyContinue
Некоторые мануалы после этого действия рекомендуют делать две перезагрузки подряд (что-то в духе: в первый раз применяется политика, а во второй раз отключается эта защита, но я не вникал).
Memory Integrity (HVCI)
Если тумблер «Целостность памяти» в Параметрах не отключается или Windows включает его обратно, есть вариант через реестр:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity" -Name "Enabled" -Value 0 -Type DWord
System Guard Secure Launch
Похоже на Credential Guard — тоже VBS-служба:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\SystemGuard" -Name "Enabled" -Value 0 -ErrorAction SilentlyContinue
Групповая политика
gpedit.msc → Конфигурация компьютера → Административные шаблоны → Система → Device Guard → отключить политику «Включить средства безопасности на основе виртуализации».
Актуально в первую очередь для доменных/корпоративных машин — если политика управляется централизованно, локальное отключение может быть переопределено доменной GPO, и потребуется обращение к ИТ-администратору.