Приложения для виртуализации не работают: что делать?

При установке приложения виртуализации на компьютере под управлением Windows, на котором установлены Hyper-V или связанные службы, часто возникают ошибки. Ошибки, которые происходят при запуске виртуальных машин в приложениях виртуализации, отличных от Hyper-V, вызывают значительные проблемы. В этом блоге объясняется, что вызывает эти ошибки, как их исправить, а также как запускать другие приложения виртуализации на компьютере с Hyper-V.

Фон и принцип работы

После установки VMware Workstation, VMware Player или Oracle VirtualBox на компьютер под управлением Windows могут возникать ошибки при запуске виртуальной машины в этих приложениях виртуализации. Ошибки возникают даже если в этот момент не запущены виртуальные машины Hyper-V. Вы можете установить VMware Workstation и VirtualBox, и запускать виртуальные машины VMware и VirtualBox на одном и том же компьютере, но не одновременно. Что вызывает эту проблему с Hyper-V? Давайте рассмотрим это поближе.

VMware Workstation, VMware Player и VirtualBox являются гипервизорами второго типа, в то время как Hyper-V является гипервизором первого типа. Гипервизор второго типа устанавливается поверх операционной системы, работающей на аппаратном обеспечении. Гипервизор первого типа устанавливается поверх аппаратного обеспечения. Все гипервизоры требуют расширений виртуализации процессора, которые представляют собой наборы инструкций для аппаратной виртуализации – Intel VT-x или AMD-V. Hyper-V получает контроль над расширениями виртуализации при загрузке Windows. Эти расширения виртуализации недоступны для VMware Workstation и VirtualBox при загрузке Windows. Только один компонент программного обеспечения может использовать Intel VT-x или AMD-V одновременно.

Эта несовместимость вызвана Hyper-V, поскольку расширения виртуализации не доступны для гипервизоров второго типа, установленных на компьютере под управлением Windows, где включена роль Hyper-V.

Ошибки VMware Workstation:

VMware Workstation и Hyper-V не совместимы. Удалите роль Hyper-V с системы перед запуском VMware Workstation.

VMware Workstation и Device/Credential Guard не совместимы. VMware Workstation можно запустить после отключения Device/Credential Guard.

Ошибки VirtualBox:

BSOD, например, BSOD с SYSTEM_SERVICE_EXCEPTION

VT-x недоступен (VER_VMX_NO_VMX). E_FAIL (0x80004005).

A VirtualBox VM works too slowly and uses the paravirtualisation (emulation) mode.

Самая интересная ситуация возникает, когда пользователь не устанавливает Hyper-V, но все равно сталкивается с одной из упомянутых выше ошибок при использовании VMware Workstation или VirtualBox. Ошибка возникает, когда включены автоматические обновления Windows. С обновлениями (Windows 10 v1607 и соответствующие версии Windows Server, начиная с Windows Server 2016) автоматически устанавливаются и включаются некоторые новые функции, связанные с Hyper-V, без согласия пользователя Windows. Этими функциями являются Device Guard и Credential Guard. Обновления Windows исправляют известные уязвимости, но могут добавлять проблемы и разрушать работающую конфигурацию. Вот почему многим пользователям не нравятся автоматические обновления.

Device Guard – это набор функций безопасности в Windows. Идея внедрения этой функции заключается в укреплении выполнения вредоносного кода. Device Guard доступен в Windows 10, Windows Server 2019 и Windows Server 2019. Основные требования: работающий в нативном режиме UEFI и включенный Secure Boot.

Credential Guard – это функция, направленная на минимизацию воздействия атак в случае запуска вредоносного кода путем изоляции системных и пользовательских секретов для усложнения их компрометации.

Виртуальный безопасный режим (VSM) – это функция, использующая расширения виртуализации процессора для защиты данных в изолированной области памяти. HVCI – это защита целостности кода, защищенного гипервизором. LSA – это местный орган безопасности.

Безопасность на основе виртуализации (VBS) – это класс технологий, использующих расширения виртуализации, включая VSM, для обеспечения безопасности в Windows. Роль Hyper-V необходима для работы этих функций (инструменты управления Hyper-V не требуются).

Гипервизор (Hyper-V) загружается первым, а затем операционная система (Windows). Hyper-V обеспечивает абстрактный уровень между аппаратным обеспечением и операционной системой. VSM позволяет помечать конкретные критические процессы и используемую ими память как принадлежащие отдельной независимой операционной системе, управляемой Hyper-V. Принцип аналогичен изоляции двух виртуальных машин, работающих на хосте Hyper-V, когда каждая виртуальная машина может использовать только выделенные ей аппаратные ресурсы.

Примечание: Если вам нужен гипервизор первого типа от VMware, используйте VMware ESXi и среду VMware vSphere. Узнайте больше в этих блогах: Hyper-V vs VMware, VMware Workstation vs VMware Player и Как установить ESXi на Hyper-V.

Давайте рассмотрим, как решить проблему несовместимости Hyper-V и других приложений виртуализации детально.

Метод 1: Удалить Hyper-V в графическом интерфейсе

Проверьте информацию о системе о конфигурации Windows, выполнив следующую команду в CMD:

msinfo32.exe

A System Information window opens. On the following screenshot, you see that Hyper-V is enabled (a hypervisor has been detected), and Device Guard Virtualization-based security is running. Now you can remove these features.

Вам следует знать, что после удаления Hyper-V следующие связанные с ним функции станут недоступны:

  • Hyper-V
  • Credential Guard и Device Guard
  • Платформа виртуальных машин
  • Windows Sandbox
  • WSL2.

Удалите функцию Hyper-V в графическом пользовательском интерфейсе (GUI) с помощью панели управления, мастера добавления ролей и компонентов.

В Windows 10 откройте панель управления, нажмите Программы и функции, затем нажмите Включить или отключить функции Windows.

Окно возможностей Windows открывается.

Отключите флажок Hyper-V и нажмите OK.

Чтобы завершить удаление Hyper-V, перезагрузите компьютер.

Шаги по удалению Hyper-V в Windows 10 и Windows Server 2016 аналогичны.

В Windows Server 2016 откройте Диспетчер серверов и нажмите Управление > Удалить роли и компоненты. В Мастере удаления ролей и компонентов перейдите к шагу Роли сервера и отключите Hyper-V. Нажмите Далее на каждом шаге, чтобы продолжить. Требуется перезагрузка для завершения удаления роли Hyper-V.

Метод 2: Используйте PowerShell для отключения функции Hyper-V

Вы можете выполнить аналогичное действие, используя интерфейс командной строки, а не графический интерфейс.

Войдите в PowerShell от имени администратора и выполните команду для отключения функции Hyper-V:

Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor

Перезагрузите ваш компьютер-хост:

shutdown -r -t 0

Метод 3: Отключение Hyper-V с использованием BCDedit

Идея этого метода заключается в редактировании данных конфигурации загрузки и отключении загрузки Hyper-V без удаления роли Hyper-V.

Войдите в PowerShell от имени администратора или запустите команду из подъемного командного окна для отключения Hyper-V:

bcdedit /set hypervisorlaunchtype off

Если вам нужно повторно включить Hyper-V и вернуть значение по умолчанию, выполните эту команду:

bcdedit /set hypervisorlaunchtype auto

Для большего контроля и удобства отключите быстрый запуск в Windows 10. Откройте Редактор реестра Windows и перейдите к:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Power

Установите параметр HiberbootEnabled на 0

Если иногда вам нужно использовать виртуальные машины Hyper-V, создайте два записями для загрузчика Windows: один для загрузки Windows с Hyper-V и другой для загрузки Windows без Hyper-V. Затем выберите нужный вариант перед загрузкой Windows. Этот подход предотвращает необходимость ручного выполнения команд в PowerShell каждый раз, когда вам нужно включить или отключить Hyper-V.

bcdedit /copy “{current}” /d “Без Hyper-V”

“Запись была успешно скопирована в {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}.”

Скопируйте и вставьте свой идентификатор вместо xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

bcdedit /set “{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}” hypervisorlaunchtype off

Перезагрузите компьютер.

После перезагрузки компьютера вы должны увидеть два варианта в диспетчере загрузки Windows.

Если вы хотите удалить загрузочный вход Без Hyper-V, используйте опцию /delete для bcdedit.

Получите список текущих загрузочных записей:

bcdedit /v

A list of all entries with their identifiers is displayed in the output. Copy the ID of the entry which you want to remove, and run the following command:

bcdedit /delete “{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}”

Метод 4: Удалить роль Hyper-V в PowerShell с использованием dism.exe

Идея этого метода заключается в использовании инструмента Deployment Image Servicing and Management в командной строке для удаления Hyper-V.

Войдите в CMD или PowerShell от имени Администратора. Выполните следующую команду для удаления Hyper-V:

dism.exe /Online /Disable-Feature:Microsoft-Hyper-V

Если вы хотите установить Hyper-V снова, используйте эту команду:

dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All

Метод 5: Отключить виртуализацию на основе безопасности в Windows

Этот метод используется для отключения Device Guard и Credential Guard, которые являются функциями, связанными с Hyper-V.

Откройте редактор групповых политик для локального компьютера. Редактор групповых политик доступен в Windows 10 Pro, Enterprise и Education. В командной строке запустите gpedit.msc

Перейдите к Локальная компьютерная политика > Конфигурация компьютера > Административные шаблоны > Система > Device Guard

Дважды нажмите на Включить виртуализацию на основе безопасности.По умолчанию статус этого параметра Не настроен.

В открывшемся окне выберите Отключено и нажмите ОК для сохранения настроек, затем закройте окно.

Редактирование реестра в качестве альтернативы

В Windows 10 Home, где отсутствует Редактор групповой политики, вы можете отключить Виртуализацию на основе безопасности в реестре Windows.

Создайте резервную копию реестра Windows перед изменением параметров реестра, чтобы избежать ошибок и проблем.

Откройте Редактор реестра. Запустите редед в командной строке, которая должна быть открыта с правами администратора.

Перейдите в HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > DeviceGuard

Если этот параметр отсутствует, создайте запись EnableVirtualizationBasedSecurity. Чтобы создать новую запись, щелкните правой кнопкой мыши пустое место в DeviceGuard каталоге, и в контекстном меню нажмите New > DWORD (32-bit) Value. Введите имя EnableVirtualizationBasedSecurity для этой записи реестра. По умолчанию, данные, установленные для этой записи должны быть 0 (см. следующий скриншот). Вы можете дважды щелкнуть на EnableVirtualizationBasedSecurity и вручную установить 0.

Перейдите в HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Control > Lsa

Создайте новую запись реестра в Lsa каталоге. Щелкните правой кнопкой мыши пустое место в правой панели окна Редактора реестра. В контекстном меню нажмите New > DWORD (32-bit) Value.

Введите имя LsaCfgFlags для этого значения. Это значение должно быть установлено на 0.

Закройте Редактор реестра и перезагрузите ваш компьютер.

Вы можете выполнить следующие команды в PowerShell (как Администратор), чтобы отключить Device Guard и Credential Guard при следующем запуске Windows.

Создайте раздел UEFI системы на диске X: (выберите неиспользуемый том):

mountvol X: /s

Скопируйте C:\Windows\System32\SecConfig.efi в X:\EFI\Microsoft\Boot\SecConfig.efi с возможностью перезаписи файла, если файл уже существует. Этот файл является загрузочным образом для инструмента конфигурации безопасности Windows.

copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y

Создайте новый пункт в меню загрузки с идентификатором {0cb3b571-2f2e-4343-a879-d86a476d7215} и названием DebugTool:

bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d “DebugTool” /application osloader

Установите опцию загрузки, созданную на предыдущем шаге, на \EFI\Microsoft\Boot\SecConfig.efi:

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path “\EFI\Microsoft\Boot\SecConfig.efi”

Установите менеджер загрузки Windows, чтобы новый пункт стал дефолтным при следующей перезагрузке. После этого перезагрузите Windows, она должна вернуться к нормальной загрузке.

bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}

Установите загрузчик, чтобы передавать опции DISABLE-LSA-ISO,DISABLE-VBS в файл SecConfig.efi при запуске файла загрузчиком.

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS

Установите раздел для загрузочного диска на диск X:

bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:

Отмонтируйте диск X: из системы:

mountvol X: /d

Метод 6: Обновите VMware Workstation

Если у вас есть Windows 10 версии 2004 (20H1) сборка 19041 или новее на вашем физическом компьютере, вы можете обновить VMware Workstation до VMware Workstation 15.5.6 или новее и запускать виртуальные машины VMware на вашем компьютере под управлением Windows, не отключая/не удаляя Hyper-V и функции Безопасности на основе виртуализации (VBS), включая Device Guard и Credential Guard.

Из-за множества жалоб от клиентов Microsoft и VMware решили разработать совместный проект, который использует API Платформы гипервизора Microsoft Windows (WHP), чтобы позволить типа 2 гипервизорам, таким как VMware Workstation, работать на хосте, где включен Hyper-V. Эти API позволяют приложениям управлять ресурсами процессора, читать/писать значения реестра, прерывать работу процессора и генерировать прерывания.

VMware Workstation до версии 15.5.5 использует монитор виртуальных машин (VMM), который имеет прямой доступ к процессору и наборам инструкций виртуализации (Intel VT-x или AMD-V). VMM работает в привилегированном режиме. Если функции Безопасности на основе виртуализации включены на хосте Windows, то дополнительный слой гипервизора (Hyper-V) добавляется между железом и Windows. Hyper-V имеет прямой доступ к функциям процессора, используемым для аппаратной виртуализации, и VMM не имеет доступа к функциям виртуализации процессора.

VMware внесла изменения в архитектуру VMware Workstation 15.5.6, чтобы их продукт мог использовать API платформы Microsoft WHP и устранить проблему совместимости. VMM теперь может работать на уровне пользователя (а не в привилегированном режиме), используя API WHP, и запускать ВМ без прямого доступа к расширениям виртуализации ЦП. Этот режим называется монитором уровня пользователя (ULM) или режимом Host VBS. Если вы удаляете связанные с Hyper-V компоненты с вашего хост-компьютера под управлением Windows, VMware Workstation автоматически обнаруживает это, и VMM переключается на прямой доступ к расширениям виртуализации ЦП (работает в привилегированном режиме).

Платформа гипервизора Windows (WHP) должна быть установлена на физической машине под управлением Windows, на которой включен Hyper-V, чтобы позволить VMware Workstation запускать ВМ VMware на этой машине. Установите платформу гипервизора Windows в Панели управления, нажав Включение или отключение функций Windows.

Таким образом, вы можете обновить Windows 10 и VMware Workstation на вашей физической машине до версий, которые поддерживают запуск связанных с Hyper-V функций и ВМ VMware Workstation на одной машине.

Ограничения режима Host VBS:

  • Платформа гипервизора Windows не поддерживается в Windows Server 2016 и других версиях и выпусках Windows Server. В результате VMware Workstation не может запускать ВМ на физических машинах под управлением Windows Server в режиме Host VBS.
  • Вложенная виртуализация не поддерживается. Нельзя запускать вложенные ВМ (ВМ внутри ВМ VMware Workstation).
  • ВМ VMware могут работать медленнее.
  • Счетчики мониторинга производительности X86 (PMC) не поддерживаются.
  • Функциональность ключей защиты режима пользователя (PKU) недоступна.
  • Ограниченная транзакционная память (RTM) и возможности аппаратного ускорения блокировки (HLE) недоступны.

VirtualBox и Hyper-V

VirtualBox могут сосуществовать с Hyper-V, Device Guard и Credential Guard, начиная с версии VirtualBox 6.0. VirtualBox 6 может работать с API Hyper-V аналогично VMware Workstation на Windows 10 v1803 x64.

Эти функции должны быть включены на хост-машине с Windows, чтобы позволить VirtualBox работать с API Hyper-V:

  • Hyper-V
  • Платформа гипервизора Windows

Если функция Hyper-V включена, но функция Платформа гипервизора Windows отключена, в Система > Ускорение в сводке конфигурации виртуальной машины вы увидите, что режим Паравиртуализации активен. Если вы попытаетесь запустить виртуальную машину, VirtualBox напомнит вам, что нужно включить Платформу гипервизора Windows и отобразит сообщение об ошибке.

Сообщение об ошибке:
WHvCapabilityCodeHypervisorPresent равен FALSE! Убедитесь, что вы включили функцию “Платформа гипервизора Windows”.

(VERR_NEM_NOT_AVAILABLE).

VT-x недоступен (VERR_VMX_NO_VMX).

Если необходимые функции, связанные с Hyper-V, включены в Windows, в разделе Система для ВМ отображается следующая информация:

Ускорение: VT-x/AMD-v, Nested Paging, Паравиртуализация Hyper-V

ВМ должна успешно запуститься. Внизу панели окна VirtualBox отображается зеленая иконка черепахи. Эта иконка указывает на то, что ВМ работает в режиме пара-виртуализации Hyper-V, а не в нативном режиме, который обычно используется VirtualBox при взаимодействии непосредственно с расширениями виртуализации ЦП. Производительность ВМ VirtualBox ухудшается на машинах, на которых включены Hyper-V и связанные функции. Вы можете отключить или удалить Hyper-V, как уже объяснялось ранее, чтобы запускать ВМ на VirtualBox в нативном режиме, используя непосредственно расширения виртуализации ЦП.

Также прочтите сравнение VirtualBox против Hyper-V и сравнение VirtualBox против VMware.

Заключение

Новые функции Windows, такие как Базовая виртуализация безопасности (Device Guard и Credential Guard), Песочница Windows, WSL, использующие движок Hyper-V, вызывают много проблем пользователям, администраторам и разработчикам программного обеспечения, использующим другие гипервизоры, такие как VMware Workstation, VirtualBox, QEMU и Google Android Emulator на машинах под управлением Windows. Существует два подхода к решению этих проблем несовместимости: отключение/удаление Hyper-V или использование новых версий виртуализационных приложений, поддерживающих работу с API Hyper-V, таких как Windows Hypervisor Platform API, предоставляемый Microsoft.

Запуск виртуальных машин на VirtualBox, VMware Workstation и других гипервизорах на машинах с Hyper-V с использованием API может снизить производительность виртуальных машин, не использующих Hyper-V. Резервное копирование данных критично для случаев сбоев приложений виртуализации. Если вы еще не выбрали лучшее решение для резервного копирования Hyper-V для вашей среды, обратите внимание на NAKIVO Backup & Replication. Решение предлагает надежное резервное копирование, защиту от вымогательского программного обеспечения, восстановление после катастрофы и многое другое. Скачайте бесплатную версию, чтобы увидеть решение в действии.

Source:
https://www.nakivo.com/blog/virtualization-applications-with-hyper-v-device-guard-and-credential-guard/