造成该问题可能的原因是我update之后对系统造成了修改,结果导致了/boot/grub/i386-pc/normal.mod的丢失,normal.mod是ubuntu开机引导的必加载项,因而报出
/boot/grub/i386-pc/normal.mod not found. Grub Rescue>的问题。
关于基本知识,孙斌斌的个人blog 做了部分总结:
在救援模式下,只有很少的命令可是使用:
- set 设置环境变量
- ls 查看设备
- insmod 加载模块
- root 指定用于启动系统的分区
- prefix 设定grub启动路径
在救援模式下,先ls查看下设备,一般都有好多分区。这时候要手动找到linux分区,因为我们要加载正确的模块,先找到分区就是。
方法:ls (hd0,X)/
X为显示的号码,如果是msdos11可以直接用11代替。该命令为查看分区下的文件,如果root单独分区了,就找到grub目录,然后ls (hd0,x)/gurb会发现还有个i386-pc目录,normal.mod文件就在该目录下。
另外ChinaUnix社区有篇帖子做了更详细的说明:http://bbs.chinaunix.net/thread-3634395-1-1.html
在救援模式下只有很少的命令可以用:
set , ls , insmod , root , prefix
(1)set 查看环境变量,这里可以查看启动路径和分区。
(2)ls 查看设备
(3)insmod 加载模块
(4)root 指定用于启动系统的分区,在救援模式下设置grub启动分区
(5)prefix 设定grub启动路径
二、设置grub的启动分区和路径
set root=(hd0,msdos1) #设置grub启动分区
set prefix=(hd0,msdos1)/boot/grub/ #设置grub启动路径
查看一下设置情况:
grub rescue> set
prefix=(hd0,msdos1)/boot/grub
root=hd0,msdos1
三、加载基本模块
insmod /boot/grub/normal.mod #加载基本模块
四、进入正常模式
normal #进入正常模式,出现菜单,如果加载grub.cfg(错误的)可能出现问题,按shift可以出现菜单,之后按c键进入控制台
进入正常模式后就会出现grub>这样的提示符,在这里支持的命令就非常多了。
五、引导系统
set root=(hd0,msdos1) #设置正常启动分区
linux /boot/vmlinuz .... ro text root=/dev/sda1 #加载内核,进入控制台模式
initrd /boot/initrd .... #加载initrd.img
boot #引导