linux修复uefi启动文件,uefi-gpt-linux修复grub rescue
搜了點網上的資料、發現都是修復MBR分區的、我的電腦是GPT分區+UEFI、雖然不同、但也大同小異、
出現grub rescue模式一般是硬盤分區出現變動、導致舊的grub找不到啟動文件而出現的、
錯誤提示
今天開機是出現了這樣的提示:
1
2
3error:file'/grub/x86_64-efi/normal.mod'not found
entering rescue mode...
grub rescue>
大概意思是那個路徑下normal.mod文件找不到、從而進入了grub rescue模式
那么在grub rescue 模式下應該怎么修復呢?
首先使用set 命令只看當前錯誤的grub變量、下面是我的電腦的信息
1
2
3
4
5
6set
#返回信息是:
cmdpath=(hd0,gpt1)/EFI/Deepin 2014.2
prefix=(hd0,gpt10)/grub
root=hd0,gpt10
數據分析
那么我們開分析下這些數據、首先cmdpath指向的是UEFI的啟動文件、
這個應該不會錯、因為硬盤第一分區一般都是EFI分區、并且目錄“Deepin 2014.2”也不會出錯
所以就應該是prefix和root變量出錯了、并且是”gpt10”這個指向的分區出錯了、
這就好辦了、只要找到并修改為正確的分區應該就行了
接著使用ls命令來查看當前硬盤上有哪些分區:
1
2
3
4ls
//返回信息是:
hd0,gpt1 hd0,gpt2 hd0,gpt3 hd0,gpt4 hd0,gpt* .......
接下來就該測試到底那個分區才是正確的啟動分區、我的linux的boot分區是單獨掛出來的
我們先往上看那個prefix變量、它指向一個分區下的grub目錄、
那么我們就用這個目錄來測試看那個分區中包含grub目錄、
只要包含這個目錄那么基本上就可以確定那個分區就是正確的啟動分區了、也就是boot分區
查找正確分區
使用ls (hd0,gpt*)/grub這個命令來逐一查看分區、注意命令中的*號、要用數字來代替
因為我可以確定前幾個分區是windows分區、所以我就從(hd0,gpt10)附近的分區開始測試
1ls (hd0,gpt11)/grub
返回信息是提示錯誤、找不到、或者提示unknown systemfile也就是未知的文件系統
所以這個分區:gpt11并不是我們要找的分區
接著:
1ls (hd0,gpt9)/grub
返回了一些找到的文件夾和文件、其中就包含**”x86_64-efi”**目錄、
所以這個”gpt9”應該就是正確的啟動分區
設置正確變量1
2set prefix=(hd0,gpt9)/grub
set root=hd0,gpt9
注意、這里我把原來錯誤的gpt10改為了gpt9
為什么不設置cmdpath呢?前面已經說了、這個變量一般是不會出錯的
設置好了之后使用下面的命令來加載模塊:
1insmod (hd0,gpt9)/grub/x86_64-efi/normal.mod
或者使用:
1insmod normal
最好使用第一種方法、因為它使用的是完整的路徑、
可以保證不出錯、前提是你找對了分區、
加載好之后grub rescue>這個提示符應該就會發生變化了
然后使用: normal
這個命令、就出啟動到正常的grub啟動菜單并正常進入linux了
真正解決問題
到這里并沒有完全搞定、
如果你進入linux后重啟的話就會發現又出現grub rescue模式了
因為grub rescue模式只是應急、它并沒有真正把grub修改為正確的數據
所以要在終端中手動重新修改下grub
進入終端輸入:
1
2
3sudo update-grub
#無錯誤返回、那么接著:
sudo grub-install /dev/sda9
這里的sda9是你的boot分區、如果不確定可以再開一個終端
使用mount命令來查看你的boot分區掛載到了哪兒
到這里才算是真正修復了
總結
以上是生活随笔為你收集整理的linux修复uefi启动文件,uefi-gpt-linux修复grub rescue的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux多进程编程计算圆周率,中值积分
- 下一篇: linux命令 upower -e,分享