今天在windows 10系統收到系統更新通知,沒看清楚就手賤點了馬上更新。以為只是像那些普通更新一樣重啟一下更新就完了,萬萬沒想到這個是覆蓋更新,也就是說這是一個全新的系統更新而不是系統補丁。在安裝的過程中我就在心中默念 “完了,這安裝完成linux的系統的引導肯定是要手動修復了。”,果然安裝完之后默認是用windows啟動引導,F2設置切換到deepin linux的引導后依然沒法正常啟動linux。要修復這個問題並不復雜,下面這篇文章記錄了修復引導的全過程。
錯誤信息
error: file '/boot/grub/x86_64-efi/normal.mod' not found. Entering rescue mode... grub rescue> _
進入系統
從錯誤信息上可以看出,問題出現在grub找不到文件normal.mod,我們現在要做的就通過grub的rescue終端設置linux的引導分區和grub文件路徑並重新引導系統。
- 查找系統引導所在的分區:
用ls命令列出所有的分區
grub rescue> ls (hd0) (hd1) (hd1,gpt8)....
根據你自己的記憶大概定位系統引導所在的分區(如果不記得那就只能逐個去試了)並用ls定位引導所在的分區(輸出包含boot/)
如下圖可以看出(hd1,gpt7)就是我們要找的分區:
grub rescue> ls (hd1,gpt6)/ ./ ../ lost+found/ grub rescue> ls (hd1,gpt7)/ ./ ../ lost+found/ bin/ boot/ dev/...
- 配置grub引導
grub rescue> set root=(hd1,gpt7) grub rescue> set prefix=(hd1,gpt7)/boot/grub
- 切換到normal模式
grub rescue> insmod normal grub rescue> normal
如果上面設置沒有錯的話,就可以正常進入系統的grub菜單了。
安裝grub到efi分區
正常進入系統后,如果不先修復grub的引導的話,重啟電腦之后還是會進入剛剛那個rescue模式。
- 找出你的efi分區掛載點
運行df命令:
df
如下圖可看出efi掛載點是:/dev/sdb2

- 重新安裝grub
用grub-install命令安裝grub:
如果提示找不到某個命令,嘗試把你的/usr/sbin添加到環境變量PATH中:
打開:vim /etc/profile
添加: export PATH=$PATH:/usr/sbin
應用配置: source /etc/profile
sudo grub-install /dev/sdb2
如果得到如下輸出,恭喜你grub成功安裝了!

