我在安装了Win8的PC上安装了openSUSE(12.2)。
一开始出现了问题,无法启动,经过一些“修复”后,Linux 启动了,但是当grub2-efi Windows 8
我进入时出现此错误:
错误:找不到命令‘drivermap’
错误:无效的 EFI 文件路径
首先,我检查过,我的电脑里/boot/EFI/
没有 Windows.efi
文件,只有 openSUSE 文件。
我已经尝试过以下命令:
grub2-efi-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
我得到了:
grub2-efi-probe:错误:无法获取 /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi 的规范路径。”
我也尝试修改/boot/grub2-efi/grub.cfg
并添加:
menuentry "Windows 8 UEFI" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
set root='(hd0,gpt4)'
search --fs-uuid --no-floppy --set=root 4f84-ee2e
chainloader (${root})/efi/Microsoft/Boot/bootmgfw.efi
}
正如一些网站所建议的那样......
我也尝试过:
menuentry "Microsoft Windows Vista/7/8 x86_64 UEFI-GPT" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --set=root $hints_string $uuid
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
但没有运气。
我猜 Win EFI 文件已被删除,我需要它来启动 Win?我说得对吗?
在这种情况下,我在哪里可以找到它? 是否可以在不重新安装 Windows 的情况下解决此问题(我没有 DVD)?
编辑:
sudo ls -l $(find /boot/efi -iname "*.efi")
root's password:
-rwxrwxr-x 1 root root 665600 Jan 8 2013 /boot/efi/EFI/opensuse/grub.efi
-rwxrwxr-x 1 root root 120832 Mar 11 2013 /boot/efi/EFI/opensuse/grubx64.efi
答案1
您的两个 GRUB 配置条目中的第二个更接近正确。我通常提供的示例如下所示:
menuentry "Windows" {
insmod part_gpt
insmod chain
set root='(hd0,gpt1)'
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
您的示例缺少一行set root
,您需要针对您的系统进行自定义。(它应该指向您的EFI 系统分区 (ESP)。
或者,你可以启动 Linux 并安装我的rEFInd 启动管理器。rEFInd 比 GRUB 简单得多,而且手动管理配置也更容易;但由于 OpenSUSE 并未正式支持它,因此您更有可能必须手动配置它。(当然,您现在正被迫手动配置 GRUB,所以这可能并不是 rEFInd 的缺点!)关于 rEFInd 的一个警告:如果您在启用安全启动的情况下启动,则可能需要调整安全启动配置。特别是,我最近发现 Fedora 和 OpenSUSE 版本的 shim 使用不同的文件名,因此您可能需要尝试使用这些文件名或在固件中禁用安全启动。