1、造成引导失败的几个原因。1. 引导分区在前,因建立分区先后顺序不同,导致分区编号错位。2. 引导分区在后,因前面分区删除或者添加,导致分区移位。如图,笔者是在100G C盘分出50G安装Ubuntu 14.04。 该分区是主分区,但是建立的时候已经建立了扩展分区(扩展分区也是主分区)。后来为了扩展分区4K对齐,删除重建。然后分区就发生变化了。导致启动失败。
2、Grub2 的救援模式只能使用几个命令,自动补全,帮助是没有的。命令注释:(1)ls 查看设备,查看可识别分区下的目录文围泠惶底件。(2)set 查看环境变量,这里可以查看启动路径和分区。(3)root 指定用于启动系统的分区,在救援模式下设置grub启动分区(4)prefix 设定grub启动路径(5)insmod 加载模块如图:命令运行的效果,当然这是马后炮。此图为正常模式grub2的效果。
3、恢复启咿蛙匆盗动流程(#后为注释):ls #查看分区信息,会看到 (hd0,msdos1)等信息,可以根据硬盘分区状况来判断哪个分区是你的启动分区(如果有单独的boot分区,请找bo泠贾高框ot分区)。我的是/分区。ls (hd0,msdos2)/ #验证我的判断是否正确,后面要跟“/”,否则可能会报错。如果判断没错,就会现实各种目录,如“/etc”、“/boot”等。set #查看当前的启动信息。救援模式比较简陋,但是你还是会发现,这里的分区和你刚才验证的分区是不符的。set root=(hd0,msdos2) #设置grub启动分区set prefix=(hd0,msdos2)/boot/grub/ #设置grub启动路径insmod normal # 有资料说这里用normal.mod 笔者这里带后缀反而失败。如果没有问题,这时候就会出现启动菜单了。
4、从上步进入系统之后,重启你发现问题依旧。执行上步,进入Ubuntu 系统,启动终端。sudo update-grub #更新grub信息,笔者曾经很天真的以为这样就结束了。实际不然。sudogrub-install /dev/sda #安装Grub ,至此问题解决了。