Ubuntu系统开机进入grub rescue模式解决办法

Ubuntu系统开机后进入"grub rescue>"模式?肯定是grub开机管理程序出问题了,出现这种问题也不用急着重装系统,还有解救办法。下面我就描述下自己的经历吧。

我们有10台普通PC机用作服务器(OS为Ubuntu 12.04 LTS),之前安装系统的时候没有规划好硬盘分区,采用根目录/(498GB)+swap(2GB)的简单分区方式。后来服务器要用来做云计算虚拟化技术的研究,采用OpenStack构架,而对象存储组件Swift需要Proxynode和Storagenode节点,在Storagenode节点上主机需要分出一个区采用xfs文件系统。这样我之前的根目录(/)和交换区(swap)的分区方式显然不合适。而且根本没有任何办法从主分区/dev/sda1(挂载在根目录/下)分出一个新区,如果采用fdisk /dev/sda的方式去强行修改分区会导致系统出问题(Linux核心/boot/vmlinuz及核心模块/lib/modules/$(uname -r)/kernel都在根目录所在分区下面,修改分区必然要重新分割根目录所在分区,导致文件系统出问题),我一开始就这样试过,最后弄得系统都无法启动。


最后就是重新装系统咯!我采用了下面的分区:

/dev/sda1      300MB     ext4     /boot

/dev/sda2      350GB     ext4       /

dev/sda3        2GB       swap

/dev/sda5     145GB       xfs      /srv

boot loader安装在/dev/sda即/dev/sda的MBR

系统安装后重启,悲剧就发生了,File not fonund      grub rescue>

第一次碰到这种问题还是挺无语的,装系统都装了这么多次了,唯一可能出问题的地方就是磁盘分区了。但是还是在网上搜了一下解决办法,发现还有得救,就抓紧尝试了一下,具体过程如下:

首先,在grub救援模式下只有很少的命令可以用:
set  ,  ls , insmod , root , prefix
说明:
(1)set  查看环境变量,这里可以查看启动路径和分区。
(2)ls   查看设备
(3)insmod  加载模块
(4)root  指定用于启动系统的分区,在救援模式下设置grub启动分区
(5)prefix 设定grub启动路径
使用ls命令查看一下设备状态,在我的系统下有:(hd0) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) 这几项,顿时想起鸟哥对硬盘及分区在grub中的代号的介绍(在CentOS5.3上的情况)。

在Ubuntu系统下就有所不同了,(hd0)应该对应/dev/sda的MBR,(hd0,msdos1)应该对应/dev/sda1

然后具体查看设备下的文件:

grub rescue> ls (hd0,msdos1)
error: bad filename.
提示:错误的文件名,我在测试时发现必须是后面加一个/
grub rescue> ls (hd0,msdos2)/
./  ../  lost+found/ ...
通过查看发现在(hd0,msdos1)/下有vmlinuz和Initrd等文件,这正是要找的/boot文件夹所在分区。
 
设置grub的启动分区和路径
set root=(hd0,msdos1)  #设置grub启动分区
set prefix=(hd0,msdos1)/grub/  #设置grub启动路径,注意/boot为独立分区(hd0,msdos1)
 
查看一下设置情况:
grub rescue> set
prefix=(hd0,msdos1)/grub
root=hd0,msdos1
 
加载基本模块
insmod $prefix/normal.mod  #加载基本模块,加载成功后grub rescue>提示符会变亮
 
进入正常模式
normal  #进入正常模式,出现菜单
这样就可以进入系统了,进入系统以后可以对grub就行修复, 上面主要的原因可能在于MBR上grub开机管理程序出现问题,所以直接用grub-install重新建置MBR的grub程序。
#grub-install /dev/sda
Installation finished.No error reported.
安装没有错,这一步是将grub安装在目前系统的MBR底下,我的系统为/dev/sda
最后重启系统,正常启动。
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值