從U盤啟動(dòng)kali系統(tǒng)出現(xiàn)Grub Rescue問(wèn)題

問(wèn)題產(chǎn)生的原因:

某一天心血來(lái)潮想要把kali系統(tǒng)裝到U盤里,這樣方便與隨身攜帶學(xué)習(xí)用。剛開(kāi)始還是好好的,從U盤啟動(dòng)到使用都是極好的。后來(lái)?yè)Q了一臺(tái)筆記本,就突然產(chǎn)生了Grub Rescue這個(gè)問(wèn)題,上面一個(gè)提示是:invalid arch independent ELF magic。

在網(wǎng)上查找了一下原因,發(fā)現(xiàn)可能是由于主板支持 UEFI BIOS(可擴(kuò)展固件接口),是用來(lái)替代傳統(tǒng)的BIOS的,很多的Grub都支持。所以存在幾種可能的原因:

主板沒(méi)有開(kāi)啟UEFI引導(dǎo)(BIOS設(shè)置里面UEFI Shell還沒(méi)有安裝)

系統(tǒng)的安裝已經(jīng)檢測(cè)到UEFI的啟動(dòng),因此自動(dòng)將Grub配置為UEFI,因而導(dǎo)致Grub無(wú)法正常啟動(dòng)

U盤質(zhì)量不過(guò)關(guān),導(dǎo)致引導(dǎo)失敗

將系統(tǒng)安裝到U盤里時(shí),由于選擇分區(qū)安裝,導(dǎo)致系統(tǒng)找不到引導(dǎo)。

1.問(wèn)題現(xiàn)象

2.解決步驟

一般使用平常Grub Rescue模式下的基本操作,輸入下面的命令

先使用ls命令,找到Ubuntu的安裝在哪個(gè)分區(qū):

grub rescue>ls

會(huì)羅列所有的磁盤分區(qū)信息,比方說(shuō):

(hd0),(hd0,msdos3),(hd0,msdos2),(hd0,msdos1)

然后依次調(diào)用如下命令: msdosX表示各個(gè)分區(qū),注意 msdos 與 數(shù)字 之間沒(méi)有空格!

grub rescue>ls (hd0,msdosX)/boot/grub

如果都找不到的話,需要查一下是否因?yàn)長(zhǎng)inux版本差異,造成grub的路徑不對(duì),

例如直接ls(hd0,X)/grub等等。

假設(shè)找到(hd0,msdos3)時(shí),顯示了文件夾中的文件,則表示 Linux 安裝在這個(gè)分區(qū)。調(diào)用如下命令:

grub rescue>set root=(hd0,msdos3)

grub rescue>set prefix=(hd0,msdos3)/boot/grub

grub rescue>insmod /boot/grub/normal.mod

然后調(diào)用如下命令,就可以顯示出丟失的grub菜單了。

grub rescue>normal

如果出現(xiàn)前面的錯(cuò)誤:invalid arch independent ELF magic。(這里引入的是用U盤裝系統(tǒng)時(shí)的解決方法,然而并不適用我把系統(tǒng)裝在U盤里,很糾結(jié))

接下來(lái)就考慮要使用Live CD,嘗試著把Grub配置為普通版本進(jìn)行還原。首先查看分區(qū)信息如下:

sudo fdisk -lu /dev/sda

復(fù)制代碼

顯示分區(qū)為:

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes

255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors

Units = sectors of 1 * 512 = 512 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0fba0fb9

Device Boot????? Start???????? End????? Blocks?? Id? System

/dev/sda1?? *????????? 63?? 409593239?? 204796588+?? 7? HPFS/NTFS/exFAT

/dev/sda2?????? 409593301? 1953523711?? 771965205+?? f? W95 Ext'd (LBA)

/dev/sda5?????? 409593303?? 929520899?? 259963798+?? 7? HPFS/NTFS/exFAT

/dev/sda6?????? 929521664?? 960770047??? 15624192?? 82? Linux swap / Solaris

/dev/sda7?????? 960772096? 1953523711?? 496375808?? 83? Linux

注意我這里是將整個(gè)根目錄/安裝在/dev/sda7上面的。因此可執(zhí)行操作如下(#后的內(nèi)容為注釋):

sudo apt-get remove grub-efi-amd64?? #移除grub-efi

sudo apt-get install grub-pc? #安裝普通grub

sudo mount /dev/sda7 /mnt??? #掛載引導(dǎo)分區(qū)

sudo grub-install --root-directory=/mnt /dev/sda

復(fù)制代碼

這里如果你的引導(dǎo)分區(qū)位于單獨(dú)的分區(qū)上,還需要掛載至/mnt/boot目錄上。在執(zhí)行完最后一條grub-install命令后,如果安裝成功會(huì)給出沒(méi)有錯(cuò)誤的提示,這樣就把Grub切換回來(lái)了,重啟就可以看到熟悉的Grub菜單了。

不過(guò)不要高興,如果這時(shí)重啟,問(wèn)題依舊存在,我們需要進(jìn)入Linux中,對(duì)grub進(jìn)行修復(fù)。

進(jìn)入Linux之后,在命令行執(zhí)行:

sudo update-grub

sudo grub-install /dev/sda

(sda是你的硬盤號(hào)碼,千萬(wàn)不要指定分區(qū)號(hào)碼,例如sda1,sda5等都不對(duì))

重啟測(cè)試是否已經(jīng)恢復(fù)了grub的啟動(dòng)菜單

3.解決結(jié)果

從網(wǎng)上查了半天一直沒(méi)能成功解決,綜合多個(gè)帖子的答案算是勉強(qiáng)確定了問(wèn)題原因,真的是勸大家以后換個(gè)好點(diǎn)的U盤,在不明白linux系統(tǒng)的情況下不要隨便對(duì)安裝系統(tǒng)進(jìn)行分區(qū)。

4.參考

[1] CSDNwoty123

[2] 百度經(jīng)驗(yàn)

[3] Linux社區(qū)? 作者:wzhnsc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容