Проблема: импортированный VM Gen2 Hyper-V не загружается. Вы получаете EFI Shell или просто зависаете в процессе загрузки. Если зайти в UEFI BIOS (нажмите ESC во время запуска VM), то можно вносить изменения и загружаться с файла. Это работает, но нельзя сохранить изменения, внесенные в BIOS. После выключения VM изменения сбрасываются, и VM больше не загружается.
Другие темы на этом форуме по этой проблеме:
На форуме есть несколько тем по этой проблеме. Кажется, что это своего рода общая проблема с тем, как Microsoft создает раздел UEFI для Generation 2. Возможно, это связано с опциями безопасной загрузки, которые Microsoft добавила в конфигурацию Gen2 (хотя в моем случае Secure Boot был отключен в конфигурации Hyper-V). Вот темы, которые я нашел в процессе решения проблемы:
Эти 3 темы предлагают решения, но они не просты в выполнении и могут занять много времени. Для живых серверов, которые не должны простаивать долго, это может быть очень неудобно.
Мое решение:
Я потратил часы, чтобы решить эту проблему и попытался применить решения, предложенные в темах, которые я упомянул выше. Это заняло целую вечность, и, возможно, я не выполнил ни одного шага правильно, но у меня был лишь ограниченный успех. Пока я не начал экспериментировать с добавлением EFI-диска к проблемному VM! В теме, где Clonezilla использовалась для синхронизации данных, уже упоминалось добавление EFI-диска, и поначалу я немного удивился, как это работает. EFI-диск - это отдельный (самостоятельный) диск с только EFI-программным обеспечением на нем. Поначалу я думал, что нужно будет отформатировать диск и создать раздел sda на нем (более или менее как Hyper-V делает), но это решение работает по-другому. Просто добавьте диск и больше к нему не трогайте.
Добавление нового EFI-диска к VM переопределяет неработающий EFI-раздел на преобразованном жестком диске! Это позволяет сохранять изменения, которые вы вносите в BIOS, позволяя загружаться с EFI-файла, который находится на преобразованном жестком диске.
Шаги, чтобы заставить это работать:
Это важная часть моей темы! Важно! Я не тестировал это с проблемными OS Windows Gen2 VM, но ниже хорошо работало для моих Ubuntu Gen2 VM. Пожалуйста, поделитесь своим опытом с Windows-версиями в этой теме.
1. Создайте VM в Proxmox, как обычно, включая жесткий диск на 'local'. 2. Измените BIOS на OVMF (UEFI) в разделе "Options". 3. Добавьте EFI-диск к тому же VM на 'local'. 4. Преобразуйте .vdhx диск в .qcow2 с помощью инструмента qemu-img (или вы можете использовать команду командной строки qm importdisk, если предпочитаете это). 5. Перезапишите созданный Proxmox пустой .qcow2 диск с преобразованным диском .qcow2 (например: /var/lib/vz/images/111/vm-111-disk-1.qcow2). 6. Загрузите VM 7. Подключитесь к консоли VM и немедленно нажмите ESC. Вы теперь находитесь в BIOS. 8. Перейдите в 'Boot Maintenance Manager'. 9. Перейдите в 'Boot Option'. 10. Перейдите в 'Add Boot Option'. 11. Нажмите Enter на 'PciRoot' volume. 12. Выберите EFI и нажмите Enter. 13. Выберите папку вашей OS (в моем случае это была 'ubuntu') и нажмите Enter. 14. Выберите EFI-файл (в моем случае это был shimx64.efi) и нажмите Enter. 15. Заполните описание в 'Input the description' (я назвал это 'Boot From File'). 16. Нажмите F10, чтобы сохранить (просто на всякий случай). 17. Перейдите в 'Commit Changes and Exit'. 18. Выберите 'Change Boot Order'. 19. Нажмите Enter, чтобы получить синее всплывающее окно. 20. Перейдите в 'Boot From File' опцию (или имя, которое вы заполнили на шаге 15). 21. Нажмите + до тех пор, пока эта опция загрузки не окажется в верхней части списка, и нажмите Enter. 22. Нажмите F10, чтобы сохранить (просто на всякий случай). 23. Выберите 'Commit Changes and Exit'. 24. Выйдите, и воля, ваш VM загрузится!
Огромное спасибо за это! Моя вложенная виртуализация Hyper-V перестала работать после последних обновлений PVE 5.3, поэтому я сдалась и попыталась перенести ВМ, но они вообще не загружались, пока я не нашла это. YMMV, но могу подтвердить, что эти шаги работают для меня на Windows Server 2016 Datacenter.
Если вдруг будешь в Сент-Луисе, штат Миссури, обязательно поведу тебя в местную пивоварню и угощу пивом... или четырьмя! Это меня просто спасло. Я восстановил Hyper-V VM в новый кластер Proxmox, но пришлось поправить загрузчик. Восстановление сработало, но пришлось начинать с седьмого шага, чтобы мой VM (Ubuntu тоже) загрузился. Спасибо огромное!!