症状:
开机显示:GRUB loading
error:unknow filesystem
grub rescue>
原因:调整了一下磁盘分区,结果ubuntu就找不到grub文件了
因为并不是想要彻底删除ubuntu,所以采用如下解决办法:
1, grub rescue>ls
列出文件:(我的分区还真是多啊,找grub简直就是体力活)
(hd0)(hd0,msdos11)(hd0,msdos10)(hd0,msdos9)(hd0,msdos8)(hd0,msdos7)(hd0,msdos6)(hd0,msdos5)(hd0,msdos1)
然后依次调用如下命令: X表示各个分区号码
2, ls (hd0,msdosX)/
当找到了安装的分区的时候,会显示出文件,不然显示的都是unknown filesystem
如果/boot没有单独分区,那么文件应该是用 ls (hd0,msdosX)/boot/grub 找到,我的电脑/boot已经单独分区了,/boot在(hd0,msdos6),但是此处要用的是/grub,找到是在(hd0,msdos7)下,每台电脑不一样,以找到的为准
3, 如果找到了正确的grub目录,则设法临时性将grub的两部分关联起来,方法如下:
以下是/boot没有单独分区的命令:
引用:
grub rescue>set root=(hd0,msdos7)
grub rescue>set prefix=(hd0,msdos7)/boot/grub
grub rescue>insmod /boot/grub/normal.mod
以下是/boot 单独分区的命令:
引用:
grub rescue>set root=(hd0,5)
grub rescue>set prefix=(hd0,5)/grub
grub rescue>insmod /grub/normal.mod
如果最后一条指令找不到normal.mod,那么可以看看是不是有一个i386什么的文件夹,可以选择ls /grub/i386 看一下,如果有normal.mod文件夹就OK了
把最后一条指令改为insmod /grub/i386/normal.mod
4,没有显示错误了之后,调用如下命令,就可以显示出丢失的grub菜单了。
grub rescue>normal回到熟悉的界面啦~
5,进入ubuntu之后,在终端执行:
sudo update-grub
sudo grub-install /dev/sda
6,如果找不到正确的/grub目录,比如第3、4种误操作,则尝试寻找是否有linux核心文件(没试过,已经成功)
依次调用如下命令: X表示各个分区号码:
grub rescue>下,输入:
如果/boot没有单独分区:
代码:
ls (hd0,X)/boot
如果/boot单独分区,则:
代码:
ls (hd0,X)
找名字类似与vmlinuz-3.0.0-12-generic这样的文件,这是linux核心文件,如果找到,记下(hd0,msdosX)中的X值。假设找到(hd0,msdos5)时,显示了文件夹中的文件。
然后用live cd 或者 live usb启动,在live cd的ubuntu的终端中依次输入以下命令(sda5中的“5”必须改成上面记录下来数值)(这两句需要验证):
如果/boot没有单独分区:
代码:
sudo mount /dev/sda5 /mnt
sudo grub-install --boot-directory=/mnt/boot /dev/sda
如果/boot单独分区,则:
代码:
sudo mount /dev/sda5 /mnt
sudo grub-install --boot-directory=/mnt /dev/sda
然后重新启动即可。
(以上这两句命令也可以解决安装ubuntu时grub安装位置不对,没有将grub安装到/dev/sda,造成启动时不出现ubuntu启动项直接进入windows的问题,不过需要自行确定sda5中的“5”改成什么数字。)
7, 如果连linux核心文件都没有,那么,彻底重新安装吧