Manjaro引導修復 | Linux


之前安裝了Win10+Manjaro的雙系統,好久沒有使用,更新Win10->Win11后,重啟電腦,進入UEFI啟動的選擇,發現除了Windows Boot Manager,另一個啟動項是...PXE什么的,選擇后保存重啟,黑屏顯示:start PXE over IP4...,卡住一會,又進入了Win10。

可能是更新Win11修改到磁盤的ESP區(EFI分區)?導致之前的引導被刪除了?

解決過程:
先打開命令行,使用:bcdedit (Boot Config Data Edit)
在Boot Config Data 中設置一條記錄:
bcdedit /set '{bootmgr}' path \EFI\Manjaro\grubx64.efi
bcdedit /set '{bootmgr}' description 'manjaro test'

枚舉現有記錄:
bcdedit /enum

發現除了Windows Boot Loader,新增了:
image

重啟電腦,進UEFI配置,選擇啟動這條新增的記錄:manjaro test (顯示名稱)

保存退出重啟,報錯:error: file '/boot/grub/x86_64-efi/normal.mod' not found.
自動進入:grub rescue模式

該模式下輸入:ls可以列出磁盤和對應的分區

磁盤名:hd0, hd1, ..., hdn
(hdn,PART)中的PART是分區編號,根據磁盤格式而確定,不同磁盤格式編號不同
我的機器上列出:(hd0) (hd1) (hd1,gpt7) (hd1,gpt6) ... (hd1,gpt1)

對列出的每一項使用ls命令
如:ls (hd0)
顯示:Filesystem is unknown

逐個嘗試,直到找到安裝系統時所划分的所有分區(根據分區類型判斷)
如:ls (hd1,gpt5)
顯示:Filesystem is ext2

ext格式是我安裝Manjaro時候的指定分區格式

再列出每個ext分區的內容來判斷掛載點
如:ls (hd1,gpt5)
顯示:./ ../ lost+found/ boot/ dev/ proc/ ...
image
確定gpt5分區對應掛載點:/

同樣方法確定gpt6:
ls (hd1,gpt6) 列出了用戶目錄,因此gpt6對應掛載點:/home

設置root=根目錄, prefix=grub目錄:

root=(hd1,gpt5)
prefix=(hd1,gpt5)/boot/grub

插入normal模塊:
insmod normal

執行:
normal

回車后,重啟,自動進入了Manjaro的啟動系統選擇界面

選擇Manjaro進入

(此時還未真正解決啟動引導問題)

執行:
sudo grub-install /dev/{EFI分區}

在安裝時,我設置Windows的EFI分區掛載到了/boot/efi
我的機器上是nvme0n1p1,於是執行:
sudo grub-install /dev/nvme0n1p1

顯示成功安裝,此時可重啟(保持當前UEFI啟動項不變),成功自動進入Manjaro啟動系統選擇界面!

存在疑問:
是否真的需要用bcdedit設置新增一條啟動項記錄,在選擇原有啟動項后執行命令會不會覆蓋Windows的原有引導,導致默認啟動Win,被覆蓋為進入Manjaro引導頁面?

grub目錄下有文件:normal.mod,這是什么?
insmod normal 又是什么作用?

grub實質是什么?
install-grub安裝的是什么?

EFI引導分區通常是多個系統共用還是可以為每個系統單獨建立一個?

硬件自檢結束,進入BIOS系統后,引導加載操作系統的具體過程是什從么?

GPT分區表如何工作?

Manjaro和其他Linux發行版的引導過程一樣嗎?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM