分类: LINUX
2009-10-11 23:31:48
环境:
RHEL 5.3
原理描述:
在raid1设备上安装RHEL5.3,将其分为三个分区:/,/boot,swap。然后我们移除第二块磁盘,发现能够顺利启动并且一切正常。但是当我们移除第一块磁盘时,系统不能正常启动,在BIOS自检结束后便停住了,出现“GRUB”字样。这是因为默认情况下,系统是从第一块磁盘启动,当我们在raid1上安装系统时,默认只在第一块磁盘上将grub引导程序(/boot所在分区等信息)的第一阶段写入MBR(Master Boot Record)(这是因为硬盘驱动繁多,Anaconda不能将grub写入所有的硬盘的MBR),如果没有第一块磁盘那么就意味着不能通过grub的第一阶段,系统不知道从哪个盘的哪个分区启动。我们可以按如下方法修复系统,我们所需要做的是在rescue模式下修复grub,让系统从第二块盘的/boot分区启动即可。另外,要注意的是/,/boot分区是不能挂载在raid0和raid5设备上的。
实验步骤:
1. 进入rescue模式,选择挂载文件系统,但出现报错信息,不能发现分区。(因为没有MBR,所以没有分区表,自然不能找到分区)
2. 所以我们进行手动挂载。
sh-3.2#mkdir /mnt/sysimage (这个名称可以自己决定)
sh-3.2#mount /dev/sda2 /mnt/sysimage (sda2是根分区)
sh-3.2#mount /dev/sda1 /mnt/sysimage/boot (sda1是boot分区)
sh-3.2#mount /dev/ /mnt/sysimage/dev/(将/dev下的设备挂载在该目录下,主要是raid设备)
3. 我们所需要做的就是修复grub
sh-3.2#grub(get into grub shell)
grub>root ( hd1,0)
grub>setup ( hd1 )
hd1,是代表第二块硬盘(grub是从0开始数的,第二块硬盘就是hd1),x代表你的/boot所在的分区(grub是从0开始数的,第一个分区就是0),这里设置指定启动分区(/boot分区所在分区)
grub>reboot
附:
MBR的组成:
组成部分 所占字节数 内容、功能详述
主引导程序区 446 负责检查硬盘分区表、寻找可引导分区并负责将可引导分 区的引导扇区(DBR)装入内存;
硬盘分区表区 16X4=64 每份16字节的4份硬盘分区表,里面记载了每个分区的类型、大小和分区开始、结束的位置等重要内容;
结束标志字区 2 内容总为”55AA”。
结束标志字区 2 内容总为”55AA”
Kbase相关链接:Why can my system not boot using GRUB when using software RAID?