GRUB2 中缺少 ntldr.mod
我在 EFI 主機板上使用 Debian Wheezy 並且需要 GRUB2 中的 ntldr 模組來載入 Windows 7 安裝程序的 bootmgr,因為它自行啟動的方式(顯然,使用安裝程序所在的 USB 快閃記憶體驅動器的引導扇區)它只安裝 Windows在 MBR 格式的磁碟上。當我使用 grub-install 安裝 GRUB 時,它不會將 ntldr.mod 添加到 GRUB 模組文件夾並且無法對其進行安裝。
- 為什麼?當我只下載 GRUB 包而不安裝(apt-get 下載…)時,可以在那裡找到該模組。如果我將下載包中的 .mod 文件添加到已安裝的 GRUB 的模組文件夾中,然後從 GRUB 命令行添加“insmod ntldr”,它會說明錯誤的“ELF 魔法”(?)。
- 怎麼強制?
- 是否有另一種方法可以在“GPT 模式”下啟動 Windows 安裝程序,因為我不想將整個磁碟格式化為 MBR。
您下載了 grub-pc 軟體包,它是用於 bios 引導機器的,因此該模組不會在 grub 的 efi 版本中載入。該模組在 Grub 的 EFI 版本中不存在,因為它依賴於 bios。
如果你想從 U 盤啟動 Windows 安裝程序,那麼你不應該對 grub 做任何事情;只需告訴您的韌體啟動該驅動器而不是帶有 grub 的硬碟即可。
模式 (
Legacy BIOS
或UEFI
) 由安裝在 USB-Stick 和 BIOS 設置上的引導載入程序確定。Windows 7 安裝介質應同時支持 (
Legacy BIOS
和UEFI
)。對於後者,這取決於您的設置。但是由於您可以從 UEFI-HDD 啟動並且 Win7-USB-Stick 啟動進入Legacy BIOS
模式,因此應該將其設置為“both”,這意味著您的 BIOS 支持UEFI
並且作為備份可以啟動進入Legacy BIOS
模式。為了解決這個問題,我建議您使用支持 UEFI 的 Win7-Image 進行安裝(我什至不知道,如果沒有的話),並且您應該將 BIOS 顯式設置為 UEFI 模式(無組合模式)。
但是,如果這不起作用並且為了回答您的問題:這應該有效:
將 Win7-Image 放在您的
HDD
or上USB-Drive
並選擇正確的模組(按照評論):menuentry "Windows 7" --class windows --class os { # Insert modules needed in order to access the iso-file # choose the right module for the partition-table-scheme the image lies on insmod part_gpt insmod part_msdos # choose the right module for the filesystem the image lies on insmod ntfs insmod fat insmod ext2 # Insert module needed in order to find partition insmod search_fs_uuid # Set UUID of partition with the iso-image # and let grub2 find the partition # (save it's identifier to the variable $root) set uuid="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" search --no-floppy --set=root --fs-uuid $uuid # Mount the iso image by addressing it with (partition)/path set iso=/images/Win7_English_x64.iso loopback loop ($root)$iso # boot (chain-load) the windows7-image using the bootmgfw.efi file located # on the Win7-ISO-Image chainloader (loop)/efi/microsoft/boot/bootmgfw.efi }
如果您想將映像直接轉儲到 USB 記憶棒,那麼您應該留下安裝 iso 所需的
set iso=
- 和 -部分。loopback loop ($root)$iso
你的鍊式裝載機就是chainloader ($root)/efi/microsoft/boot/bootmgfw.efi