用了两年多的ubuntu今天忽然崩溃了, 一开机直接进入了
grub rescue
模式, 直接提示/boot/grub/i386-pc/terminal.mod not found
,
网上找了好多办法都没解决,最后在国外的一个ubuntu论坛找到了解决办法, 现在记录下来。大致步骤就是
set 设置环境变量
ls 查看设备
root 指定用于启动系统的分区
prefix 设定grub启动路径
insmod 加载模块
normal 进入正常模式
详细步骤
-
输入ls命令,查看输出:
ls (hd0) (hd0,msdos14) (hd0,msdos13) (hd0,msdos1).
-
找出哪个盘安装了系统,
ls (hd0,msdos1)/boot/grub ls (hd0,msdos2)/boot/grub
尝试所有的,直到返回内容不再是error: unknown filesystem, 而是显示目录下面的文件为止。我的是在(hd0,msdos1)这里
-
设置变量:
set root=(hd0,msdos1) set prefix=(hd0,msdos1)/grub
-
加载模块:
insmod linux insmod loopback insmod normal
如果这一步出现问题, 则尝试将第三步的
prefix
设置为其他路径, 如/boot/grub/i386-pc/
或者(hd0,msdos1)/usr/lib/grub/i386-pc
等,
我的目录是在(hd0,msdos1)/usr/lib/grub/i386-pc
. -
进入normal模式:
normal
输入normal命令, 就进入了grub命令行。(如果这一步报错,什么xxx.mod找不到的话,尝试从第三部重试,更换root以及prefix路径)。
-
进入正常的grub命令行之后, 依次执行以下命令:
linux /vmlinuz root=/dev/sda1 ro initrd /initrd.img boot
即可正常进入Ubuntu系统。
-
登陆到系统之后,打开终端, 执行:
sudo update-grub sudo grub-install /dev/sda1
-
系统已经正常了, 再重启也没有问题。
Q.E.D.