今天回家,老爸说叫了个专家过来给电脑新装一个sata硬盘, 结果开机启动grub报错:
grub loading stage1.5
error 17
因为老爸说那专家发现硬盘被自检识别出来后提出是否要安装操作系统,老爸回答:no(幸好老爸知道已经有了他要的windows,不需要再装了),于是就没有再做其他任何操作。
只是添加一个硬盘就能让grub启动失败?应该不至于吧,grub只是记录了linux的启动分区位置,相当于windows分区的mbr。我想可能是那位专家不小心把grub给破坏掉了, 可能当时想给安装系统,后来又取消了。
知道了原因就好办了, 拿出Ubuntu的livecd,进入虚拟系统。
打开终端
$sudo -i
$grub
$find /boot/grub/stage1
#find命令会查找grub所在分区,返回一个值,比如(hd1,6),表示第一块硬盘,编号为6的分区
$root (hdx,x)
#root命令设定boot分区,如果上面find步骤返回的(hd1,6),这里你就root (hd1,6)
$setup (hdx)
#如果find命令返回的是(hd0,num),你就 setup (hd0)
如果提示succeed、表示重建grub成功。这个过程如果不了解hd和分区编号,可以执行sudo fdisk -l 来查看,会发现对于硬盘的编号从0开始,不同接口还会有hd和sd之分。而grub从1开始计算, 硬盘统一都是hd,不分什么hd和sd。
$quit
#退出grub
这个时候最好检查一下sudo gedit /boot/grub/menu.lst。确保linux的启动分区和windows启动分区是正确的,但是这里的硬盘编号跟grub不同,计数从0开始,但也统一都是hd。重启系统,Done。
分析:
grub出现问题一般都是系统的引导记录丢失, 比如你去重新安装了xp(一般重新安装linux不会有这个问题,会自动重建grub)。grub问题出现,首先要尝试恢复grub,而不是再次重装系统,或者fdisk/mbr。 (作者:spiritfrog)