背景:硬盘已经有了win10,U盘安装ubuntu16.04 ,开机出现:
error:file /grub/i386-pc/normal.mod not found.
不知道是不是我启动盘的问题,联想E430,DELL M6700每次安装都会出现这个问题(在安装的时候还提示了什么UFEI的事情,不理会,直接安装)。 当然如果把ubuntu系统、引导(/boot)删除也会出这个问题,这样就要先安装系统。
查看了几个帖子,发现很乱,我把我自己的理解写一下,有问题可以一块讨论
原因:
win10和ubuntu双系统,win10大幅度升级时破坏了grub。
因为grub2其实分为两部分,第一部分在MBR中,第二部分在Ubuntu的boot/grub中,win10升级导致在MBR中的grub找不到在boot/grub中的grub2.
https://www.jianshu.com/p/5183c513ba0e
我没有做升级,只是重装了系统,不知道是不是WIN10系统的影响才会出现这个问题,或者是我ubuntn系统的问题,不过出现这个问题的原因时计算机不知道改从那个地方去启动系统,或者说不知道把哪里的东西加载到内存中运行。
解决:
1.进入PE,启动项修复,请自行百度
2.由于我这里没有win10PE,所以就在grub rescue里面修复了。具体过程为:
先输入ls回车,查看显示的内容。如:
(hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2)....
然后找出哪个盘安装了系统,
ls (hd0,msdos1)/grub
ls (hd0,msdos2)/grub
注意这里网上有各种版本,比如 ls (hd0,msdos2)/boot/grub,其实可以ls (hd0,msdosX),先看一下是不是EX2文件系统,然后再ls (hd0,msdos1)/grub 或者其他目录,目的是能够找到gurb.cfg,如图所示:
把root 的地址设置成这个文件夹就行了
set root=(hd0,msdos3)/grub
set prefix=(hd0,msdos3)/grub
insmod normal
normal
注意,如过insmod normal 出问题,会有报错,正常则没有任何输出。
然后就可以显示grub2的图形界面
但这并没有结束,因为win10已经将grub破坏了,下一次重启我们仍会遇到grub rescue问题,所以我们必须重启进入ubuntu修复grub2.
修复grub
进入Linux系统后,在命令行里
sudo update-grub
sudo grub-install /dev/sda
#=>sda是你的启动磁盘,不是某一个扇区
参考:https://www.jianshu.com/p/5183c513ba0e