Windows 安裝後,Fedora 不再啟動。出現錯誤:找不到文件“/vmlinuz”。如何修復引導?
我必須安裝 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 system
或inst.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.cfg
UEFI 系統上的自動生成的實際配置文件。如果您在重新安裝核心包後更新前者,您可以使用以下命令手動觸發後者文件的更新:grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg