Fedora

雙啟動 Fedora 和 Windows 8 報錯:你需要先載入核心

  • November 29, 2014

雖然似乎有很多關於雙引導 Windows 和 Linux 的問題,但我沒有看到一個似乎涵蓋了這個問題的問題。也就是說,我相信很多問題可能會以類似的方式解決。

在 2014 年 11 月 9 日最新更新檔的 Fedora fc20 中,當選擇自動生成的 Windows 引導載入程序條目時,grub 會出現以下兩個錯誤。

> error: file '/EFI/Microsoft/Boot/bootmgfw.efi' not found 
> error: you need to load the kernel first

為什麼會發生這種情況,我該如何解決?

顯而易見的答案是,這是因為 grub 找不到 Windows 引導載入程序。不太明顯的答案是因為 grub 配置文件沒有正確指定 Windows 引導載入程序的根目錄。預設操作似乎忽略了該行。雖然修復預設的 Windows 引導載入程序會有些複雜,但以下說明將允許您讓系統創建第二個正常工作的引導載入程序。

如果您使用 Fedora fc20 或其他類似配置的執行 grub2 的系統,只要您沒有損壞 Windows 引導載入程序分區,以下步驟應該可以解決您的問題。

  1. 找出您的 Windows 引導載入程序在哪個分區。
[root@localhost]# fdisk -l

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: D733242D3-33B9-4C33-B33F-2C333DC52333

Device           Start          End   Size Type
/dev/sda1         2048       206847   100M EFI System
/dev/sda2       206848      2050047   900M Windows recovery environment
/dev/sda3      2050048      2312191   128M Microsoft reserved
/dev/sda4      2312192    988518399 470.3G Microsoft basic data
/dev/sda5   1911560192   1953523711    20G Windows recovery environment
/dev/sda6    988518400    989337599   400M EFI System
/dev/sda7    989337600    991385599  1000M Microsoft basic data
/dev/sda8    991385600   1911560191 438.8G Linux LVM

Disk /dev/mapper/fedora-swap: 7.8 GiB, 8396996608 bytes, 16400384 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/mapper/fedora-root: 431 GiB, 462728200192 bytes, 903766016 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

2)找出那個分區的UUID。

[root@localhost]# blkid /dev/sda1
/dev/sda1: LABEL="SYSTEM" UUID="1234-567A" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="0c33e3ab-d3dc-3af3-333d-a33eee3c333c"

注意:當您執行更新核心等操作時,Fedora 會自動生成一個新的配置文件,因此雖然您可以手動編輯 grub.cfg 文件,但從長遠來看,編輯用於生成grub.cfg 文件。

  1. 將 menuentry 文本添加到 /etc/grub.d/40_custom 文件的末尾。使用您選擇的文本編輯器,但您必須是 root 才能這樣做。我用過vi。確保將步驟 2 中的 UUID 替換為此處顯示的 1234-567A。
[root@localhost]# vi /etc/grub.d/40_custom

menuentry 'My Working Windows Bootloader' {
   search --no-floppy --fs-uuid --set=root '1234-567A'
   chainloader /EFI/Microsoft/Boot/bootmgfw.efi
   boot
}
  1. 現在使用 grub2-mkconfig 命令生成實際的配置文件。
[root@localhost]# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.16.7-200.fc20.x86_64
Found initrd image: /boot/initramfs-3.16.7-200.fc20.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-0b156afaadc545779646d809437ed977
Found initrd image: /boot/initramfs-0-rescue-0b156afaadc545779646d809437ed977.img
Found Windows Boot Manager on Microsoft/Boot/bootmgfw.efi
done

注意:通過將 /etc/grub2-efi.cfg 指定為輸出文件來執行此命令會​​刪除通常存在的符號連結並創建一個新文件,而不是更新實際的配置文件。

  1. 你完成了。當您重新啟動時,您現在應該可以訪問您的 Windows 和 GNU/Linux 作業系統了。

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