電腦是雙系統,Windows 8.1+Fedora 20,安裝Fedora時,磁盤上增加了新的EFI System分區,由於本來Windows也有EFI System分區,就出現了兩個EFI System分區,從Fedora的EFI啟動Fedora不會有問題,但是啟動Windows就會出現“\EFI\Microsoft\Boot\bootmgfw.efi is missing”,原因是Windows引導程序根本就沒在Fedora的EFI System分區,要正常啟動Windows,可以在UEFI設置(類似以前的BIOS)中,使用Windows的EFI,既可以啟動Windows,也可以啟動Fedora。要通過Fedora的EFI,我們要知道Windows的EFI System分區安裝位置,使用fdisk命令,能得到分區信息,其中“dev/sda2 2050048 2582527 260M EFI System”,就告訴我的Windows的EFI System分區位置。解決方法1,找到修改“/boot/efi/EFI/fedora/grub.cfg”文件,添加”set root='hd0,gpt2'“(去掉不帶引號),重啟就行。
### BEGIN /etc/grub.d/30_os-prober ###
menuentry 'Windows Boot Manager' {
set root='hd0,gpt2'
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
boot
}
### END /etc/grub.d/30_os-prober ###
這種方法出現一個問題,因為grub.cfg文件根據/etc/grub.d/中的文件生成,如果運行”grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg“重新生成文件,你的修改就會失效。
解決方法2,根據grub.cfg中的信息,能確定Windows Boot Manager根據/etc/grub.d/30_os-prober文件生成,修改”/etc/grub.d/30_os-prober“文件,找到,如下位置,添加”set root='hd0,gpt2'“(去掉不帶引號),運行”grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg“,命令,重啟就行。
menuentry '$(echo "${LONGNAME}" | grub_quote)' {
EOF
save_default_entry | grub_add_tab
cat << EOF
set root='hd0,gpt2'
chainloader /EFI/${DEVICE}
boot
}