Boot

從 Grub2 UEFI 使用 linux16 / initrd16 載入 Memdisk

  • February 14, 2022

我需要在 UEFI 模式下從 Grub2 載入 Memdisk 核心。

我不知道這是否可能,但我收到了一個意外的不明錯誤。

我想知道這是否可能,如果可以,該怎麼做。

我的 Grub 菜單項/命令如下:

menuentry 'Hirens Boot 15.2' { 

 search --no-floppy --fs-uuid --set=root 3a02381a-2bf7-4730-8e13-6d7640f9c60e
 set iso_path="/isos/Hirens.BootCD.15.2.iso"
       
 loopback loop ($root)$iso_path
     
 linux16 (loop)/HBCD/Boot/memdisk iso
 initrd16 /isos/Hirens.BootCD.15.2.iso
    
 }

相同的菜單項在 BIOS 模式下可以毫無問題地啟動。

我認為這行不通。

Hirens Boot CD 15.2 是從 2012 年開始的。當時,UEFI 剛剛被引入 PC 世界,大多數可引導工具仍然使用傳統的 BIOS 處理方式。

memdisk實用程序希望擁有舊版 BIOS 的磁碟訪問功能,以便可以擴展它們以用於基於 RAM 的磁碟映像。在以 UEFI 模式啟動的系統中,那些傳統的 BIOS 磁碟訪問功能根本不可用:事實上,整個系統執行在 64 位或 32 位保護模式下,而不是 BIOS-兼容的舊 DOS 兼容 16 位模式。基於引導載入程序開始。

memdisk最初來自Syslinux bootloader 項目,正如鍊接網頁所說:

MEMDISK 通過為磁碟聲明一塊高記憶體和為驅動程序本身聲明一塊(非常小 - 通常為 2K)低 (DOS) 記憶體來模擬磁碟,然後掛鉤 INT 13h(磁碟驅動程序)和 INT 15h(記憶體查詢)BIOS 中斷。

在 UEFI 模式下,低/高記憶體和 BIOS 中斷 INT 13h 和 INT 15h 等 DOS/BIOS 概念將不適用,因此無法memdisk完成其工作。

即使您可以開始memdisk工作,Hirens Boot CD 映像使用的 Windows PE 環境的引導載入程序也將需要一個舊版 BIOS 環境,並且很可能無法在以 UEFI 模式啟動的系統中啟動。據我所知,GRUB 或任何其他引導載入程序沒有標準方法可以將系統從 UEFI 模式切換到傳統 BIOS 模式,反之亦然。

引用自:https://unix.stackexchange.com/questions/690500