Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

ข้อผิดพลาดบูท Hyper-V: Hash และ Certificate ของ Image ไม่ได้รับอนุญาต

ผมเจอปัญหาน่าสนใจขณะพยายามติดตั้ง Linux CentOS บนเครื่องเสมือนที่รันบน Hyper-V Server (ประเภท VM เป็น Generation 2 ที่รองรับ UEFI) ผมดาวน์โหลดไฟล์ติดตั้ง CentOS 7 (ISO) สร้าง VM แบบ Gen2 ใน Hyper-V มาวง ISO และพยายามบูท VM จาก ISO ติดตั้ง แต่ตอนบูท VM แสดงข้อความผิดพลาดดังนี้ในคอนโซล 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…

ข้อผิดพลาดบูท Hyper-V: Hash และ Certificate ของ Image ไม่ได้รับอนุญาต

ปัญหาคือ Hyper-V ใช้ UEFI พร้อม Secure Boot Mode เปิดอยู่โดยค่าเริ่มต้นสำหรับ Generation 2 VMs Secure Boot ป้องกันการบูทจาก Linux Bootloader ในไฟล์ ISO ที่ไม่น่าเชื่อถือ (Linux Bootloader ไม่ได้เซ็นหรือรับรองจาก Microsoft)

เพื่อเริ่มติดตั้ง Linux ต้องปิด Secure Boot ในการตั้งค่า VM (Settings → Security → ยกเลิกติ๊ก Enable Secure Boot)

หรืออาจปล่อย Secure Boot ไว้ แต่ใช้เทมเพลต Microsoft UEFI Certificate Authority แทน Microsoft Windows ตามข้อมูลจาก Microsoft เทมเพลตนี้อนุญาตให้รัน Linux Distros ในโหมด Secure Boot Compatibility

ข้อผิดพลาดบูท Hyper-V: Hash และ Certificate ของ Image ไม่ได้รับอนุญาต

รีสตาร์ท VM และลองบูทใหม่จาก CentOS Installation ISO หรือ Linux Distribution อื่นๆ (ผมทดสอบติดตั้ง CentOS 8 และ Ubuntu 19.04 สำเร็จด้วยวิธีนี้)

ข้อผิดพลาดบูท Hyper-V: Hash และ Certificate ของ Image ไม่ได้รับอนุญาต

สามารถจัดการ Secure Boot และ Template ของ VM ผ่าน PowerShell ได้เช่นกัน นี่คือวิธีดูการตั้งค่า Firmware ปัจจุบันของ VM:

Get-VMFirmware -VMName "centos7"

ข้อผิดพลาดบูท Hyper-V: Hash และ Certificate ของ Image ไม่ได้รับอนุญาต

เพื่อปิด Secure Boot Mode สำหรับ VM:

Set-VMFirmware -VMName "centos7" -EnableSecureBoot Off

เพื่อเปลี่ยนเทมเพลตการตรวจสอบใบรับรอง Bootloader เป็นตัวที่เข้ากันได้กับ Linux Distros ส่วนใหญ่:

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