我有以下设置:
我尝试从 Ubuntu 11.10 使用 grub2 启动 Windows 7 分区。
我的 Windows“系统保留”是/dev/sda3
。
这GRUBWindows 条目是(标准):
menuentry "Windows 7 (loader) (on /dev/sda3)" --class windows --class os {
insmod part_msdos
insmod ntfs
set root='(hd0,msdos3)'
search --no-floppy --fs-uuid --set=root 644C5AC04C5A8CA4
chainloader +1
}
分开输出:
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32.3kB 296MB 296MB primary ext2
2 296MB 423GB 423GB extended
5 296MB 20.3GB 20.0GB logical ext4
6 20.3GB 363GB 342GB logical ext4
7 363GB 423GB 60.1GB logical ntfs
3 423GB 423GB 105MB primary ntfs boot
4 423GB 500GB 77.2GB primary ntfs
Disk /dev/sdb: 1500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 17.4kB 20.0MB 20.0MB fat16 boot
2 20.0MB 50.9GB 50.9GB ext4
4 50.9GB 1103GB 1052GB btrfs
5 1103GB 1156GB 52.7GB ext4
6 1156GB 1233GB 77.2GB ntfs
7 1233GB 1233GB 105MB ntfs
3 1496GB 1500GB 4271MB linux-swap(v1)
尝试从 grub2 启动 Windows 后,我收到以下消息:
错误:EFI 文件路径无效
答案1
你不能这样做。
显而易见的是,任何预启动应用程序(例如操作系统的引导加载程序)都与机器固件紧密相关;就像普通应用程序与其使用的操作系统绑定在一起一样。除非机器提供 EFI 固件服务,否则 EFI 引导加载程序无法在机器上运行。除非机器提供旧 PC/AT 固件服务,否则旧 PC/AT 样式的引导加载程序无法在机器上运行。
GRUB 中的动词chainloader
体现了这一点。它没有记录,但它根据 GRUB 的托管方式(即 GRUB 正在(期望)运行在哪个机器固件上)执行不同的操作。在旧 PC/AT 系统上托管的 GRUB 版本中,它期望获得一个磁盘块集或一个文件,并以旧 PC/AT VBR 引导程序的方式加载和运行(第一个扇区)它所给出的内容。在 EFI 托管的 GRUB 版本中,它期望获得文件名,并以普通 EFI 应用程序的形式加载和运行文件。
您拥有 EFI 托管版本的 GRUB。您已将 传递+1
给chainloader
作为文件名,但这根本不是预启动 EFI 应用程序映像文件的有效路径。GRUB 无法构建EFI 设备路径对于图像文件,因为你给它的路径语法不正确。因此出现错误消息。
在 EFI 托管的 GRUB 中正确使用chainloader
命名文件。对于 Microsoft Windows NT 6.1,这将是 Microsoft 启动管理器的 EFI 版本,它与 EFI 系统分区上的 BCD 存储共存:
链式加载(hd1,gpt1)/EFI/Microsoft/Boot/bootmgfw.efi
当然,这对您不起作用,因为您要么没有在这台机器上安装 Windows NT 6.1 — 而是在其他机器上安装并将硬盘转移到这台机器上 — 或者没有安装它的 EFI 引导版本,不知何故说服 Windows NT 6.1 在您的 EFI 机器上运行其安装实用程序的非 EFI 版本。我怎么知道?因为微软不会允许你将其安装到 EFI 机器上的非 EFI 分区硬盘上正如你所做的那样,因为你既有适当的EFI 系统分区(第二块硬盘上的 FAT 分区)和穷人的等价物否则您只需要前者。
因此,Windows NT 6.1 尚未安装 EFI 托管版本的 Microsoft 启动管理器,BCD 存储位于错误的位置,并且还会存在其他几个问题 - 与 Windows NT 期望一个硬件/固件组合有关,并且已经配置了适当的驱动程序和设置,并且突然在另一个硬件/固件组合上引导 - 稍后会为您解决。