error: file '/boot/grub/i386-pc/normal.mod' not found解決方案

最近幫朋友解決了一下這個問題,路途艱辛啊。

先說一下這個問題是咋回事?grub可以理解爲引導Linux的一個程序,如果不小心損壞了,例如強制開關機,就出現這種問題。當然我最後發現我這問題遠沒有那麼簡單

正常情況下出現這種問題,可以這麼着來,我先列舉最簡單的辦法:

1.收到命令行的方法:

先在grub rescue中輸入ls,出現類似於

(hd0,msdos1)(hd0,msdos2)等等

然後你分別探測一下,看看咱們的linux在哪個分區下面。

ls    (hd0,X)/boot/grub

這樣試試。這是正常的情況下,如果你的磁盤的文件系統不太一樣,直接ls (hd0,msdosx)即可。x指的是上面ls後出現的分區。

最後肯定會發現一個不一樣的,我ls完了後顯示ext4.這正是Linux的系統

grub rescue>set    root=(hd0,5)
grub rescue>set    prefix=(hd0,5)/grub
grub rescue>insmod     /grub/normal.mod
grub rescue>normal

這樣一般就OK了。算是進系統了,但是沒解決問題,因爲只是手動進入了系統,但是grub還是壞的。

sudo   update-grub   sudo   grub-install   /dev/sda

進系統後執行上面的命令。重新進行安裝grub.

2.用工具進行修復。boot repair官網

上面的官網有介紹怎麼使用。我稍微說一下。

首先下載.iso鏡像,然後刻錄到U盤裏,開機U盤啓動,然後就進去了,點XXsession進U盤系統進行修復。

3.上面如果都沒有解決,那麼就需要個Livecd,也就是找你的系統U盤,沒有的話就自己再燒錄。

開機U盤啓動,按F5進去,就會進U盤裏的系統。

在這裏所有的命令都可以使用了,還可以操作咱們損壞的Linux的文件。如果你是不小心刪除或者移動了,在這裏都可以進行操作。說一下步驟

sudo mount /dev/sdb5 /mnt
sudo grub-install /dev/sdb --root-directory=/mnt

這樣就可以了。其中,sdb5指的是你的系統所在的分區,剛纔ls的時候已經探測出來了。

如果還沒有解決,用下面的方法,目的是從U盤的root權限轉移到原linux中進行操作。相當於臨時進入原來系統

sudo -s
#where sda1 is my root partition
mount /dev/sda1 /mnt
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount -o bind /dev /mnt/dev 
mount -o bind /tmp/ /mnt/tmp
# chroot into your ubuntu installation
chroot /mnt
# remove all those grub efi packages
apt-get remove --purge grub-efi-amd64 grub-efi-amd64-bin
# and re-install grub with the bios (non-efi) packages only
apt-get --reinstall install grub-common grub-pc os-prober
# if there is an error repeat the setup via:
grub-install --recheck /dev/sda

這個方法沒用到,一般前面的方法就可以。


最後說一下我爲什麼這些方法都不管用,原來是妹子移動了根目錄的文件,導致GRUB找不到文件了。系統也找不到了。還好最後發現了,用系統啓動盤進去,把文件重新移動回去,這才管用了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章