Ошибка загрузки Linux на Hyper-V: The image’s hash and certificate are not allowed

 

Столкнулся с интересной ошибкой при попытке установить Linux CentOS на виртуальную машину, которая запушена на Hyper-V сервере (тип виртуальной машины Generation 2 – с поддержкой UEFI). Я скачал установочный ISO файл с CentOS 7, создал на Hyper-V новую ВМ типа gen2, подключил ISO файл и попытался загрузить ВМ с установочного диск. Но при загрузке ВМ в консоли Hyper-V появилось вот такое сообщение:

SCSI DVD (0,0). The image's hash and certificate are not allowed (DB).
No UEFI-compatible file system was found.
No operating system was loaded. Press a key to retry the boot sequence…



Проблема тут в том, что для виртуальных машин Generation 2 в Hyper-V используется среда UEFI с включенным по-умолчанию режимом Secure Boot. Режим безопасной загрузки не позволяет загрузится с недоверенного загрузчика Linux в ISO файле (загрузчик Linux явно не подписан и не сертифицирован Microsoft-ом).

Чтобы начать установку Linux мне пришлось отключить режим безопасной загрузки в настройках виртуальной машины (Settings -> Security -> Enable Secure Boot).

Или можно оставить Secure Boot включенным, но использовать шаблон «Microsoft UEFI Certificate Authority» вместо “Microsoft Windows”. По информации Microsoft данный шаблон позволяет запускать большинство дистрибутовов Linux в режиме совместимости с Secure Boot.

отключить secure boot linux

Перезапустите ВМ и еще раз попробуйте загрузить ВМ с установочнго iso образа CentOS или другого дистрбутива Linux (у меня получилось таким образом запустиь установку CentOS 7 и Ubuntu 19.04).


Так же вы можете управлять режимом безопасной загрузки и шаблонами из PowerShell. Получить текущие настройки firmware ВМ:

Get-VMFirmware -VMName "centos7"


Отключить режим Secure Boot для ВМ:

Set-VMFirmware -VMName "centos7" -EnableSecureBoot Off

Изменить шаблон проверки сертфикатов загрузчика на совместимый с большинством дистрибутивов Linux:

Set-VMFirmware -VMName "centos7" -EnableSecureBoot On -SecureBootTemplate "MicrosoftUEFICertificateAuthority"