Вопрос или проблема
Я использую qemu для эмуляции Zorin OS 16. Я попытался эмулировать Zorin OS 16 с ускорением whpx с помощью этой команды в Power Shell:
qemu-system-x86_64.exe -boot d -cdrom zorincore.iso -m 8000 -accel whpx
…затем Zorin запускается, но выдает эту ошибку в PowerShell:
WHPX: setting APIC emulation mode in the hypervisor
Windows Hypervisor Platform accelerator is operational
whpx: injection failed, MSI (0, 0) delivery: 0, dest_mode: 0, trigger mode: 0, vector: 0, lost (c0350005)
Как исправить ошибку?
(Я использую Windows 11 Preview Build 220000.194 и включил функцию Windows Hypervisor Platform)
У меня не было много времени, чтобы разобраться, как это работает и каковы последствия. Но решение, упомянутое в этом вопросе на GitHub помогло мне:
--accel whpx,kernel-irqchip=off
Документы здесь упоминают, что “Отключение in-kernel irqchip полностью не рекомендуется, за исключением целей отладки”. Но split
не реализован в WHPX. Я не эксперт, поэтому не уверен, означает ли KVM в документах только виртуализацию, связанную с Linux, или что-то более общее. Поэтому я решил опубликовать это на всякий случай. Опять же, у меня нет опыта в этом, поэтому используйте с осторожностью и лучше проведите собственное исследование.
Ответ или решение
При работе с QEMU и использованием ускорения WHPX возникла ошибка во время эмуляции Zorin OS 16. Давайте подробно разберем возможные причины этой ошибки и предложим варианты ее устранения.
Теория
Windows Hypervisor Platform (WHPX) — это функция виртуализации в Windows, которая позволяет использовать аппаратное ускорение для виртуальных машин. Эта функция необходима для повышения производительности и улучшения работы виртуальных машин. Однако, как и любые системы, WHPX может столкнуться с проблемами совместимости или конфигурации, что приводит к ошибкам.
Сообщение об ошибке, которое вы наблюдаете, связано с неудачным инжектированием MSI (Message Signaled Interrupts). Это может указывать на проблему с настройкой прерываний в виртуальной среде. К сожалению, такие ошибки часто имеют сложный характер и могут быть вызваны различными факторами, включая несовместимость программного обеспечения, проблемы в конфигурации QEMU или сбои на уровне гипервизора.
Пример
Давайте рассмотрим конкретный случай. Вы запускаете виртуальную машину с Zorin OS 16 используя следующую команду в PowerShell:
qemu-system-x86_64.exe -boot d -cdrom zorincore.iso -m 8000 -accel whpx
Возникает ошибка:
WHPX: setting APIC emulation mode in the hypervisor
Windows Hypervisor Platform accelerator is operational
whpx: injection failed, MSI (0, 0) delivery: 0, dest_mode: 0, trigger mode: 0, vector: 0, lost (c0350005)
Это указывает на проблему с инжектированием MSI в эмуляции APIC (Advanced Programmable Interrupt Controller), компонента, ответственного за управление прерываниями.
Применение
Для решения этой проблемы одной из рекомендаций, опубликованных в открытых источниках, является отключение in-kernel irqchip путем добавления параметра kernel-irqchip=off
к команде запуска QEMU. Вот как может выглядеть обновленная команда:
qemu-system-x86_64.exe -boot d -cdrom zorincore.iso -m 8000 -accel whpx,kernel-irqchip=off
Дополнение параметра kernel-irqchip=off
отключает работу irqchip на уровне ядра, что переходит на управление прерываниями в пользовательском пространстве. Это может помочь обойти проблемы с реализацией irqchip в WHPX, которые могут быть не совместимы с вашим текущим конфигурацией Windows или релизом QEMU. Однако такое решение может иметь побочные эффекты, такие как сниженная производительность или другие непредвиденные проблемы с прерываниями. Поэтому его следует использовать с осторожностью, и по возможности избегать применения в боевых средах.
Рекомендации
-
Обновление ПО: Убедитесь, что используете последнюю версию QEMU и что все обновления Windows, включая обновления Windows Hypervisor Platform, установлены. Ошибки часто исправляются в новых релизах, и простой апгрейд может устранить проблему.
-
Конфигурация BIOS/UEFI: Проверьте, включена ли в BIOS/UEFI поддержка аппаратной виртуализации (обычно это параметры Intel VT-x или AMD-V). Без этой функции WHPX может не работать должным образом.
-
Тестирование без WHPX: Попробуйте запустить вашу виртуальную машину без использования WHPX, чтобы определить, сохраняется ли проблема. Это может помочь исключить аппаратные сбои или проблемы на уровне самого QEMU:
qemu-system-x86_64.exe -boot d -cdrom zorincore.iso -m 8000
-
Альтернативные гипервизоры: Если ошибка не исчезает, рассмотреть возможность использования других гипервизоров, таких как Hyper-V или VMware, которые могут предложить более стабильную среду для вашей виртуализации.
-
Диагностика и сетевая помощь: Используйте средства диагностики Windows для проверки целостности компонентов WHPX и системных файлов. Поиск информации на специализированных форумах и обращение к сообществу пользователей может также предоставить возможные решения аналогичных проблем.
Заключение: Ошибка «whpx: injection failed, MSI…» — это сложная проблема, которая требует систематического подхода к диагностике. Используя описанные методики и рекомендации, вы сможете устранить эту ошибку или минимизировать ее воздействие на вашу работу с виртуальными машинами на платформе QEMU.