关于手动修复Linux引导崩溃

我是在上学期安装了双系统,win7+ubuntu。但是在我的win7重装成win10之后,linux的引导就会崩溃了。。我第一次修复之后引导变成了windows引导,linux老老实实的呆了一段时间后,又会不知不觉地引导崩溃了。。我也不喜欢用那个引导修复助手..于是就每次手动修复。根本原因有两种:

1、系统指定的那个分区位置发生变化,会发生“Unknown Filesystem”。这个是最常见的。不知道为啥linux就会自己改变自己的指定分区....

2、/boot/grub/i386-pc/normal.mod的丢失,就是在normal时找不到指定的文件从而发生“/boot/grub/i386-pc/normal.mod not found”的报错。


在崩溃的时候系统会自动进入rescue急救模式。这种模式下只有set ls insmod root prefix等几个命令可以用:

set 设置环境变量
ls 查看设备
insmod 加载模块
root 指定用于启动系统的分区
prefix 设定grub启动路径


具体步骤如下:


①查看分区。因为每个人的分区不一样,所以我们要查看分区,用ls指令
grub rescue>ls
回车后,就会出现

————————————————————————————————————————————
(hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos1)                 |
grub rescue>                                                                                                                                                         |

————————————————————————————————————————————
注:我用的是grub2,对于grub用户,分区前没有msdos字样。上面是我的分区,每个人的不一样。
grub rescue>set  回车
prefix=(hd0,msdos9)/boot/grub
root=hd0,msdos9
从上面可以看出来现在我的系统是从(hd0,msdos9)里启动的。

②寻找ubuntu所在分区
如果你不能知道你的分区的话的话,我们只能一个一个的试了。
还是用ls指令,挨个试一试。注意不要把ls和()连起来,否则系统会认为这是一个命令,从而Unknown Command报错。
grub rescue>ls (hd0,msdos8)
回车会发现,unknown filesystem。这就说明不是这个分区,就继续尝试。就这样当你试到某一个分区的时候,不再是unknown filesystem的时候,可以看到一下子多了很多字,这就说明找到了你的ubuntu分区,这时候就确定了你的分区了。

③修改启动分区
grub rescue>root=(hd0,msdos7)
grub rescue>prefix=/boot/grub         //grub路径设置
grub rescue>set root=(hd0,msdos7)
grub rescue>set prefix=(hd0,msdos7)/boot/grub
grub rescue>insmod normal            //启动normal启动
grub rescue>normal
依次敲入上面的指令,启动菜单就会出现了。选win7后,一键Ghost就开始备份系统了。别高兴太早,一切还都没开始呢。如果你不是因为一键Ghost问题进入grub rescue,可以直接跳到第⑤步

④再来一遍
当你等着一键Ghost备份完系统,重启后,你发现还是
error:unknown filesystem
grub rescue>
再把前三步进行一遍就可以了

⑤进入命令行 启动Ubuntu
进入系统启动选项界面后,你发现,无论点那个还是进不去,这是因为你还没有真正的修改grub,这个要到ubuntu里修改
进入系统启动项界面后,按C进入命令行模式
grub >set root=hd0,msdos7
grub >set prefix=(hd0,msdos7)/boot/grub
grub >linux /vmlinuz-xxx-xxx root=/dev/sda7 //里边的xxxx可以按Tab键,如果有acpi问题,在最后加一句acpi=off
grub >initrd /initrd.img-xxx-xxx
grub >boot
这部分如果不实施的话,那么你每次进入引导的时候还是要手动修复之后才能进入。这一步的目的就是相当于在系统设置里更改你的引导设置,使之指向你的特定分区。

⑥进入ubuntu修复grub
进入Ubuntu后,修复grub。在终端里运行  sudo update-grub
重建grub到第一硬盘mbr  :sudo grub-install /dev/sda


接下来介绍下如何用easybcd引导。

首先进入Windows系统,在网上下载​程序easybcd和MbrFix.exe,其中easybcd是很有名的系统引导程序,MbrFix.exe则是修复mbr的一款小程序。

先运行easybcd,添加启动项,​如图


​类型选择grub,名称自己填,驱动器就是你安装系统的那个盘,点击添加条目就可以了

​点击“编辑引导菜单”


​将win10放在默认项上,保存设置。

​此时需要利用MbrFix.exe将grub覆盖掉,使用管理员身份运行CMD.exe(此文件在C:\Windows\System32下),转到MbrFix.exe所在的目录,然后运行命令:MBRFix /drive 0 fixmbr /yes 即可修复MBR引导


​如上图示意,点击enter即可,注意:一定要以管理员身份运行,不然会拒绝访问。

重启电脑,完美解决。




全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务