GRUB2引導修復

2021-07-06 08:04:51 字數 2301 閱讀 7030

本來是想把

grub2裝到

u盤,卻不小心把電腦的

grub搞壞了。原因可能是我執行命令

grub-install時沒有加任何引數,由於不知道沒有引數怎麼執行,我趕緊

ctrl+c終止了安裝,最後重啟後發現系統無法啟動,進入了

grub rescue模式。慶幸的是,重啟之前我成功給

u盤裝了

grub2,這可幫了我大忙了。其實恢復grub有多種方式,比如用系統盤或u盤啟動盤,我這種方式主要是為了熟悉grub,雖然比較麻煩,卻是一種很有效的方法。

再說重啟後進入了

grub rescue模式,它與

grub正常模式類似,但是大部分指令都不能用,我只用了基本的ls、

set,連

help

也沒有,貌似也沒有linux等命令。無奈之下,我插上

u盤,按下

ctrl+alt+delete,電腦竟然重啟了,再次啟動後進入了

u盤的grub(我設定電腦預設

u盤啟動)。

grub模式下輸入

ls可以檢視電腦目前的所有分割槽,以(

hdx,msdosy)的形式顯示,注意「(」和「)」不能少,

x代表磁碟序號,從

0開始;y代表分割槽號從

1開始。這個時候有可能搞不清楚哪個是

linux分割槽,所以可以輸入

ls  -l

檢視分割槽詳細資訊,仔細檢視可以找到

linux分割槽。這裡我們假設為(

hd1,msdos4)。這個時候輸入

ls(hd1,msdos4)

/,按下

enter會列出該分割槽下的檔案,以此類推,(

hd1,msdos4)

/boot/會列出

boot下的檔案。為了啟動電腦,我們需要找到系統啟動核心

vmlinuz*和記憶體映像

initrd*,一般位於

boot目錄下。我的是

debian8,這兩個檔案位於

hd1,msdos4

/boot下。

準備好檔案,開始配置環境,

set命令可以檢視當前配置情況,包括

root

、prefix

等等變數的值。如果是

u盤啟動的,

root

預設位於

u盤下,為了啟動硬碟上的linux,要將root改為(

hd1,msdos4)

,所以輸入

set  root=

(hd1,msdos4

),這樣

root

目錄指定到了電腦的

linux

分割槽下。

啟動核心用

linux  /boot/vmlinuz*  root=/dev/sda4

確定,*代表萬用字元,一般是版本號。有時候你不知道是sda還是sdb,可以用

uuid=××××××代替

/dev/sda4,uuid是硬碟分割槽的唯一固定id,這樣就可以準確定位分割槽。下一步執行

initrd  /boot/initrd*

確定,之後再輸入

boot

確定,系統會輸出資訊,如果沒問題系統應該能夠正常啟動。

進入系統後,開啟終端使用

root

許可權進行

grub

修復,終端中輸入

fdisk -l

檢視磁碟資訊,確定

linux

系統的裝置號,這裡用

/dev/sda4

,將它掛載到系統的某個目錄下,這裡我掛載到了

/mnt

下,輸入

grub

安裝命令

grub-install --boot-directory=/mnt/boot  /dev/sda

確定,就可以將

grub重新安裝到該硬碟的

mbr,啟動的根目錄位於

sda4分割槽。這時除掉

u盤重啟,熟悉友好的啟動選擇圖形介面應該就能出現了,如果還是不行,那麼重複上面的步驟到安裝

grub後,再執行

grub-mkconfig

確定,會重新生成

grub.cfg檔案,再重啟應該就沒問題了。

搞這麼麻煩有些人覺得很沒意義,那只能說明這些人不喜歡計算機技術而已。而我

寫這篇文章僅僅是紀錄一下我遇到問題的解決過程,並且想分享給可能遇到和我一樣問題的朋友,希望能幫助到需要的人。

重灌windows後修復grub2引導

使用安裝版的windows重灌windows時會改寫mbr,造成grub丟失,可以用grub4dos引導進入ubuntu後修復grub或用livecd啟動後修復grub。1 用grub4dos修復ubuntu 對 於vista win7系統,把壓縮包內的grldr.mbr和grldr複製到c盤根目錄...

Grub2 製作UEFI版本Grub2引導

首先要從grub官網下在grub2,grub2中包含所有grub2相關的命令,可以用來生成grub2引導,這裡著重介紹製作uefi版本的grub2 uefi啟動是fat fat32分割槽 efi boot bootia32.efi或者 efi boot bootx64.efi,然後程序由uefi交給...

使用grub2引導multiboot核心

grub2中直接提供了multiboot和multiboot2命令,可分別用於引導符合multiboot v1規範和multiboot v2規範的核心。最小multiboot核心 原始碼包中使用的是syslinux引導的硬碟映象,可使用run.sh進行qemu linker.ld內容如下 entry...