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找不到文件了。系统也找不到了。还好最后发现了,用系统启动盘进去,把文件重新移动回去,这才管用了。

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