|
这次真是被折腾得够了,整整两天时间,幸得水木、linuxfans、kyxk几位大侠和自己两位好友的热心指点和无私帮助,终于有惊无险地完成了系统恢复。在这做个小结,算是对几位大侠和对自己的一个交代吧。
缘起
我的机器装了两个系统,windows xp和linux as3,半年多了都相安无事。但昨天早上开机,突然发现熟悉的grub图形引导界面不见了,取而代之的是grub>,这“地球人都知道了。。。”的东西却这一下困住了我,汗!!!于是只好四处求援了:电话、bbs、论坛、msn……,还有恶补了一些基本知识。
修复
修复的过程可以说是一波三折,由于我总是说不清楚自己的情况,而大侠们支的招我也不太明白是怎么回事,使得整个过程漫长而又波折,中间还出现了好几次差错,在这里就简单介绍一下了。
第一步,恢复windows引导系统
这个比较简单,放入windows安装盘,一步步执行安装,注意不要格式化,而且不要覆盖原来的windows目录。装到第一次要求重新启动机器的时候,取出安装盘,就可以实现windows的引导。
进入windows以后删除安装的临时文件,并修改boot.ini(这个也是水木上一位大侠教的,方法如下
start->run->cmd->attrib -a -h -r -s c:\boot.ini
然后就可以查看并修改boot.ini了。
这一步,狠顺利的完成了,小涨了一点信心。
第二步,恢复grub引导
放入linux安装盘,按F5选择rescue (有的系统是其他的,看提示),出现boot:提示符,输入:
boot:linux rescue
然后一步一步执行下去,其中设置网络可以选否,直到一个界面让你选择 “继续” “只读” “跳过”,这里选择“继续”,过一会儿就出现sh提示符,我的是这样的
sh-2.05b#
这里就可以用各种linux命令了。输入
sh-2.05b# fdisk -l
查看分区,显示:
Disk /dev/hda: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 1 261 2096451 de Dell Utility
/dev/hda2 * 262 1536 10241437+ 7 HPFS/NTFS
/dev/hda3 1537 7296 46267200 f Win95 Ext'd (LBA)
/dev/hda5 1537 1549 104359+ 83 Linux
/dev/hda6 1550 5998 35736561 83 Linux
/dev/hda7 5999 6128 1044193+ 82 Linux swap
/dev/hda8 6129 7296 9381928+ 7 HPFS/NTFS
从这里可以看出xp系统装在/dev/hda2上,也就是grub里面用的(hd0,1)
linux系统是hda5和hda6,也就是grub里的(hd0,4),(hd0,5)
linux的swap是hda7
当初装linux的时候分了三个区,/boot、/和swap,也就对应到上面的hda5,hda6,hda7。
后来几经试验,确定hda5也就是grub里的(hd0,4)是我的/boot分区。
然后在sh下输入grub进入grub>
配置grub
grub> root (hd0,4)
Filesystem type is ext2fs,partition type 0x83
grub> kernel /vmlinuz-2.4.21-20.EL
[Linux-bzImage,setup=0x1400,size=0x12e478]
grub> initrd /initrd-2.4.21-20.EL.img
[Linux-initrd @ 0x3c7000, 0x2886a bytes]
grub> setup (hd0)
Checking if "/boot/grub/stage1" exits ... no
Checking if "/grub/stage1" exits ... yes
Checking if "/grub/stage2" exits ... yes
Checking if "/grub/e2fs_stage1_5" exits ... yes
Running "embed /grub/e2fs_stage1_5 (hd0) " ... 16 sectors are embedded.succeeded
Running " install /grub/stage1 (hd0) (hd0)1+16 p (hd0,4)/grub/stage2 /grub/grub.conf"...
succeeded
Done.
显示安装成功,但是重启之后还是进不了grub图形界面。
而且如果执行 root -> kernel -> initrd之后直接boot,系统也起不来,而是直接推出grub>(这点狠奇怪,不知道是什么原因)。
只好再执行rescue模式,进入grub,查看grub.conf 文件
grub> cat (hd0,4)/grub/grub.conf
结果是:
default=1
timeout=10
splashimage=(hd0,5)/grub/splash.xpm.gz
~~~~~~~~~对应我的分区应该为(hd0,4)
title Red Hat Enterprise Linux AS (2.4.21-20.EL)
root (hd0,5)
~~~~~~~~~对应我的分区应该为(hd0,4)
kernel /vmlinuz-2.4.21-20.EL ro root=LABEL=/ hdc=ide-scsi
initrd /initrd-2.4.21-20.EL.img
title DOS
rootnoverify (hd0,1)
chainloader +1
里面root的分区被改成了(hd0,5),这也是机器无法正常引导的罪魁祸首,但我一直没弄清楚到底是什么操作导致这个文件被修改,好像是分区序号整个的往后错了一位,包括后面提到的fstab文件。
第三步 修改grub.conf文件
退出grub,进入到sh,cd到/mnt/sysadmin目录,这是硬盘所在目录
grub> quit
sh-2.05b# cd /mnt/sysadmin
sh-2.05b# cd /boot/grub
sh-2.05b# vi grub.conf
修改回来再重启动就可以了。
第四步 修改fstab文件
启动linux的时候提示makeactive swap failed
进系统查看fstab文件
[root@exlchina root]# cat /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda8 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
原来swap分区对应的是hda7,但在这里却成了hda8(也是往后错了一位),改回来就可以了。
第五步 波折 windows又起不了了
中间在修改grub的时候,我做了一个误操作
grub> root (hd0,4)
Filesystem type is ext2fs,partition type 0x83
grub> setup (hd0,1)
这里我居然鬼使神差的试了一把,在(hd0,1) 里安装grub,而这个分区是windows的c盘,结果把windows下的nt loader给冲掉了,windows又起不来了:(
现象是进入windows修复控制台,map显示不了c盘的分区,dir也报错“枚举目录出现错误”,而在linux下可以看到c盘的分区格式仍为ntfs,但就是mount不了(我装了kernel-ntfs,mount d盘是可以的)。
这时iwait大侠指出可以试试fixboot
但我太怕再出错了(因为linux里面装的一个系统及其数据太重要了),没敢轻易尝试。
害得水木windowstech版的几位大侠又帮我分析了好长时间,iwait甚至不惜修改自己的硬盘文件系统来做测试,在此再次对几位大侠表示深深的敬意和歉意!
在备份了linux下一部分重要参数之后,我决定重装windows
就在按下回车就可以执行重装的那一刹那,我想何不试试fixboot呢?
于是退出安装程序,重新进入控制台,执行fixboot命令,居然就这么修复了!
第六步 再次安装grub引导
这下轻车路熟了,狠easy就搞定了。
最后再分别检查了一边两个系统里面的数据和程序,都还安然无恙,此时已经第二天晚上将近8点,吃了早就送过来的丽华快餐,发现不像往常那么难吃了。
总结
借用水木wd大侠告诫我的话“一定要在清楚自己在干吗的情况下再操作,要不然数据丢了哭都来不及了”
赠送给其他做类似简单而又危险的操作的菜鸟们。
再次感谢水木、linuxfans、kyxk的大侠们! |
|