Fedora

Windows 安裝後,Fedora 不再啟動。出現錯誤:找不到文件“/vmlinuz”。如何修復引導?

  • August 24, 2018

我必須安裝 Windows 10。因為安裝時遇到困難,我拔掉了前兩個驅動器(其中包含 Fedora 數據)。因此,只需插入一個硬碟驅動器,我就能成功安裝 Windows。

現在,我已插入所有驅動器。我能夠讓 Windows 正常啟動,但 Fedora 不再啟動。

這是我從 grub 中選擇 Fedora 時的錯誤:

錯誤:沒有這樣的設備:3b9c12dc-6ed0-4e2f-a28b-3e0931ccfea2

錯誤:找不到文件’/vmlinuz-4.13.9-300.fc27.x86_64’。

錯誤:您需要先載入核心。

所以,我四處搜尋並找到了這個問題,但老實說,我並沒有完全理解答案。無論哪種方式,我都按下c了 grub 命令行。當我在ls命令行上輸入時,我看到:

(lvm/fedora_hdd-swap) (lvm/fedora_sdd-root) (lvm/fedora_sdd-home) (hd0) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) (hd1) (hd1, gpt12) (hd1,gpt11) (hd2) (hd3) (hd3,gpt4) (hd3,gpt3) (hd3,gpt2) (hd3,gpt1)

現在,當我輸入 時ls (lvm/fedora_hdd-root)/,我確實看到了所有必要的 linux 文件,例如 /boot、/etc 等。所以我的文件是安全可靠的,我只需要正確配置 grub,我假設?

當我回到 grub 並鍵入e以編輯 Fedora 列表時,我看到:

getparams 'Fedora (4.13.9-300.fc27.x86_64) 27 (Workstation Edition)
   load_video
   set gfxpayload=keep
   insmod gzio
   insmod part_gpt
   insmod ext2
   set root='hd0,gpt2'
   if [ x$feature_platform_search_hint = xy ]; then
       search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=achi0,gpt2 3b9c12dc-6ed0-4e2f-a28b-3e0931ccfea2
   else
       search --no-floppy --fs-uuid --set=root 3b9c12dc-6ed0-4e2f-a28b-3e0931ccfea2
   fi  

我認為根據我在 grub 命令行中看到的內容,我應該相應地編輯列表。

GRUB 並不真正關心您的 Linux 根分區。只有 Linux 核心關心這一點。GRUB 想要找到的是包含/boot文件系統的分區。由於各種原因,GRUB 將其稱為“GRUB 根文件系統”。

錯誤消息中的核心路徑名error: file '/vmlinuz-4.13.9-300.fc27.x86_64' not found沒有/boot前綴。這告訴我你/boot可能是一個單獨的文件系統,並且set root='hd0,gpt2'引導 Fedora 的 GRUB 配置中的行告訴我它曾經是某個 GPT 分區磁碟上的第二個分區。

如果您鍵入ls (lvm/fedora_hdd-root)/boot/,您可能會發現它只是一個空目錄。它用作實際/boot文件系統的掛載點。

還有文件系統 UUID,但錯誤消息error: no such device: 3b9c12dc-6ed0-4e2f-a28b-3e0931ccfea2表明它找不到。

我的猜測是,在最好的情況下,驅動器檢測順序可能已經改變,而過去的hd0,gpt2可能現在是hd3,gpt2.

在最壞的情況下,您的/boot分區實際上位於您安裝 Windows 10 的磁碟上,並且 Windows 安裝覆蓋了該分區。但是一個/boot分區相對容易替換:你需要從 Fedora 安裝媒體啟動到救援模式,使用啟動菜單選項Troubleshooting->Rescue a Fedora systeminst.rescue啟動選項。

救援模式啟動後,它應該為您提供命令提示符。如果一切順利,您的 Fedora 系統應該已經安裝在/mnt/sysimage. 因此,首先使用一個chroot /mnt/sysimage命令,這樣您就不必/mnt/sysimage為所有路徑名添加前綴,並且您將能夠使用正常的包管理工具。

現在您可以創建一個新/boot分區並掛載它,或者 - 因為您的 GRUB 顯然可以讀取 LVM 邏輯卷 - 只需將文件系統中的內容重新安裝到根文件系統/boot的目錄中即可。/boot

由於您顯然使用的是基於 UEFI 的系統(因為您的所有分區都是 GPT 類型),這意味著/boot/efi如果它尚不存在,則只需創建一個空目錄(作為 EFI 系統分區或 ESP 的掛載點) ,執行mount /boot/efi,驗證中的設置是否/etc/default/grub與目前配置匹配,並使用 .重新安裝最新的核心包rpm --reinstall

核心包包含該/vmlinuz-*文件,包安裝過程會自動為它創建一個合適的initramfs文件。/boot完成後,現在應該恢復必須包含的所有重要文件。核心包重新安裝過程甚至應該為您更新實際的 GRUB 配置文件。

請注意,GRUB 有兩個配置文件: 中的簡化/etc/default/grub配置文件,以及位於/boot/efi/EFI/fedora/grub.cfgUEFI 系統上的自動生成的實際配置文件。如果您在重新安裝核心包後更新前者,您可以使用以下命令手動觸發後者文件的更新:

grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

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