grub loading stage2read error
作者: 曲文庆 日期: 2009-02-20 10:32
近日,某系统宕机,重新启动后,报grub loading stage2read error
估计是MBR出了一点问题,可以在修复模式下重新安装grub程序来解决问题,
1、使用安装光盘启动
2、在启动界面看到boot后键入linux rescue,回车进入修复模式,会有几个选项,注意是从cdrom来修复的
3、看到shell提示符后打命令chroot /mnt/sysimage,这样就把硬盘原来的/目录切换为当前的/目录了
4、然后打命令grub-install /dev/sda,重启。
GRUB有几个重要的文件,STAGE1、STAGE1.5、STAGE2
STAGE1:它只有512字节,通常放在MBR中,它的作用很简单,就是在系统啟动时用于装载STAGE2并将控制权交给它。
STAGE2:GRUB的核心,所有的功能都是由它实现。
STAGE1.5:介于STAGE1和STAGE2之间,是它们的桥梁,因為STAGE2较大,通常都是放在一个文件系统当中的,但是STAGE1并不能识别文件系统格式,所以才需要STAGE1.5来引导位于某个文件系统当中的STAGE2。根据文件系统格式的不同,STAGE1.5也需要相应的文件,如:e2fs_stage1_5,fat_stage1_5,分别用于识别ext和fat的文件系统格式。引导顺序如下:STAGE1->;STAGE1.5->;STAGE2,由于STAGE1不能识别文件系统格式,所以STAGE1只能通过如:(HD0,0)1+22的格式来读取STAGE1.5。
例:在GRUB中执行:root (hd0,0);setup (hd0)。其实setup就是调用了install命令来安装GRUB到硬盘上的。详细命令如:embed /boot/grub/e2fs_stage1_5 (hd0)
install /boot/grub/stage1 (hd0) (hd0)1+22 p (hd0,0)/boot/grub/stage2 /boot/grub/grub.conf
由上面的命令看出,stage1写进了(hd0)的MBR中,stage1.5写进了(hd0)MBR以后的22个扇区中(将stage1.5写进MBR以后的扇区中,会不会影响正常的文件系统?不会,因為stage1.5较小,只占22个扇区,硬盘上第一个文件系统的开始扇区最小也只能从0柱面,1磁头,1扇区开始。就是说MBR所在磁头就只用到了1个扇区而已,按照现在硬盘的规格来说,一般一个磁头都有60+个扇区,所以这些扇区可以用来放STAGE1.5,但是放STAGE2就不够了,所以只能将STAGE2放进文件系统中了),為了证明这一点,执行dd if=/boot/grub/stage1 of=/dev/hda bs=512 count=1 seek=1,将stage1写进原本是stage1.5的位置上。结果系统引导时屏幕上不停的出现GRUB,一直这样这样循环,看来这是对的。
Install Atlas in CentOS 6 (2014-03-12 12:01)
CentOS6上安装部署git1.8 (2013-03-13 15:49)
在 windows 2008 R2 Hyper-V 下安装 CentOS 6 (2012-11-26 16:56)
CentOS 安装 socket5 代理服务器 (2012-10-24 15:00)
CentOS 6 网卡 bonding (2012-10-20 11:31)
CentOS 6 下 samba 3.6 安装事项 (2012-10-20 10:57)
手工释放swap虚拟内存 (2012-06-19 16:32)
CentOS下Nginx支持CGI (2012-04-13 13:38)
CentOS 加快软raid5 rebuild 速度 (2012-03-26 13:49)