Napaka pri nalaganju Linuxa na Hyper-V Hash in certifikat slike nista dovoljena

Soočeni z zanimivo napako pri poskusu namestitve Linux CentOS na virtualni stroj, ki deluje na strežniku Hyper-V (vrsta virtualnega stroja Generation 2 - s podporo UEFI). Naložil sem namestitveno datoteko ISO s CentOS 7, ustvaril nov gen2 VM na Hyper-V, priključil ISO datoteko in poskusil naložiti VM z namestitvenega diska. Toda ob nalaganju VM-ja se je v konzoli Hyper-V pojavilo naslednje sporočilo:

 SCSI DVD (0,0). Hash in certifikat slike nista dovoljena (DB). Nobenega sistema, združljivega z UEFI, ni bilo mogoče najti. Noben operacijski sistem ni bil naložen. Pritisnite tipko za ponovni zagon zaporedja zagona ... 


Težava je v tem, da Hyper-V pri virtualnih strojih Generacije 2 uporablja okolje UEFI z zaščitenim zagonskim sistemom. Varni način zagona ne dovoljuje zagona iz nezaupljivega zagonskega nalagala Linuxa v datoteko ISO (zagonski nalagalnik Linux očitno ni podpisan ali potrjen s strani Microsoft).

Za začetek nameščanja Linuxa sem moral prekinite povezavo varni način zagona v nastavitvah virtualne naprave (Nastavitve -> Varnost -> Omogoči varen zagon).

Lahko pa pustite omogočeno varno zagonsko uporabo, vendar uporabite »Microsoftov UEFI certifikat"Namesto" Microsoft Windows ". Po Microsoftovem mnenju ta predloga omogoča zagon večine distribucij Linuxa v načinu združljivosti z Secure Boot.

Znova zaženite VM in poskusite znova naložiti VM iz namestitvene podobe CentOS-a ali druge distribucije Linuxa (na ta način sem lahko zagnal namestitev CentOS 7 in Ubuntu 19.04).

Prav tako lahko nadzirate varni način zagona in predloge iz PowerShell-a. Pridobite trenutne nastavitve vdelane programske opreme VM:

Get-VMFirmware -VMName "centos7"

Onemogoči način varnega zagona za VM:

Set-VMFirmware -VMName "centos7" -EnableSecureBoot Off

Spremenite vzorec potrjevanja potrdila zagonskega nalagala, da je združljiv z večino distribucij Linuxa:

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