QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 730|回复: 1

菜鸟的双系统引导恢复记——折腾了两天的一个小结

[复制链接]
发表于 2005-8-3 22:02:34 | 显示全部楼层 |阅读模式
这次真是被折腾得够了,整整两天时间,幸得水木、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的大侠们!
发表于 2005-8-4 01:22:56 | 显示全部楼层
  
建议楼主下载置顶的教程,自己看看
楼主一定是灌水高手
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-14 21:36 , Processed in 0.056338 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表