Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

Ubuntu各种衍生版本
Glyx
帖子: 15
注册时间: 2006-10-27 11:57

Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#1

帖子 Glyx » 2009-03-12 11:27

menu.lst 文件内容:

代码: 全选

default saved
timeout 1
hiddenmenu

title Microsoft Windows 6.0 SP3 2002-06-16
root (hd0,0)
savedefault
makeactive
chainloader +1

title Microsoft Windows 7.0 048 2009-03-09
root (hd0,4)
chainloader +1

title Hiweed GNU/Linux 2.0 RC3 2009-02-28
root (hd0,7)
kernel /boot/vmlinuz root=/dev/sda8 ro quiet splash
initrd /boot/initrd.img-2.6.27-7-generic
引导XP出现不能引导的错误,引导WIN7则一直停留在STARTING UP ...界面,引导海薇没问题。

我先安装的XP,前段时间装了hiweed,一直用grub引导没问题,WIN7048出来了后用虚拟光驱安装了WIN7。
由于WIN7接管了MBR,于是用BCDEDIT添加了GRUB记录,并将GRUB.MBR拷到C盘,同时也将GRLDR和GRUB4DOS自带的menu.lst也都拷到C盘,以为这样子就可以安装启动记录了。
重启后发现实模式下不能SETUP,于是无奈用hiweed光盘启动进入LIVECD,用GRUB下的ROOT和SETUP命令添加了挂载/根目录的分区(HD0,7)的GRUB记录。这样子HIWEED是可以启动了,但是WINDOWS却被挂掉!

用XP安装光盘FIXMBR后为了修复WIN7引导,用了BOOTSECT /NT60 SYS /MBR 命令(有无/MBR参数我忘记了),但是启动失败。只好用VISTA 安装光盘修复WINDOWS 7048引导,但是事情又回到了原点:我重新添加了记录,但是还是只能引导海薇。

我想问一下问题出在哪里?如何修复?由于我对LINUX的了解基本上处于空白,对GRUB和WIN7的BCD的工作原理也毫无头绪,恳求各位帮帮忙,再用一次XP安装光盘修复太猥琐了。

其实RC3之前我也有过这样的操作,引导3个系统是没问题的,我这三个系统的引导过年前也是没问题的。可能最近安装7048后我想把三个系统都用GRUB直接引导(WIN7的引导导致进XP比较猥琐,三层。。。),所以操作上可能出了问题,但是我不知道问题出在哪里。

我也有在两个WINDOW里面通过control userpasswords2设定了自动登录,不知道会不会是这里的问题?

谢谢各位大大了!!!

附上我的FDISK结果:

Disk /dev/sda: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x7fefdd92

Device Boot Start End Blocks Id System
/dev/sda1 * 1 1339 10755486 7 HPFS/NTFS
/dev/sda2 1340 19457 145532835 f W95 Ext'd (LBA)
/dev/sda5 1340 4681 26844583+ 7 HPFS/NTFS
/dev/sda6 4682 8691 32210293+ 7 HPFS/NTFS
/dev/sda7 8692 16711 64420618+ 7 HPFS/NTFS
/dev/sda8 16712 17792 8683101 83 Linux
/dev/sda9 17793 17900 867478+ 82 Linux swap / Solaris
/dev/sda10 17901 19457 12506571 83 Linux

SDA1是XP(C盘),SDA5是WIN7048(D盘),SDA6(E盘),SDA7(F盘),SDA8是/,SDA9是swap,SDA10是/home。

GRUB下输入:

代码: 全选

chainloader (hd0,0)+1
boot
是可以进入WIN7的选单的。

更新:
感谢 Climbing 。

原因出在grub4dos没有装到MBR上,小弟学到了。遇到多系统启动的问题,请移步grub4dos的官方wiki:
http://grub4dos.sourceforge.net/wiki/in ... 9.E7.A8.8B
里面有很详细的中文教程。


就我而言,最关键的地方是图方便,用liveCD里面的grub程序安装到了MBR,而这个grub没有grub4dos好用,大家注意一下。
上次由 Glyx 在 2009-03-29 12:15,总共编辑 1 次。
Climbing
帖子: 27
注册时间: 2008-11-19 9:39

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#2

帖子 Climbing » 2009-03-12 13:51

首先,将grub4dos使用bootlace(运行在纯DOS或者linux环境,在NT环境下需要配合第三方工具,例如winhex、DISKRW之类的工具)安装到硬盘的MBR上,安装之前,注意备份原来的MBR,这主要是为了保留MBR中Win7所设置的微软磁盘标识四个字节的内容。

xp的引导应该很简单。用grub4dos直接如下操作即可:

代码: 全选

title Microsoft Windows 6.0 SP3 2002-06-16
root (hd0,0)
chainloader /ntldr
savedefault
使用上面的引导方法,只要你的XP是正常的且引导文件正常,应该就可以正常引导XP。C:\下必须有ntldr、ntdetect.com、boot.ini这三个文件,如有必要,请将boot.ini内容帖上来。另外,如果有可能,请进入grub4dos的命令行方式,然后执行:geometry (hd0),然后将屏幕结果用数码相机拍下来并上传图片。

至于Win7,我没有安装过,以我对引导Vista的经验来说,Vista会修改MBR中的微软磁盘标识(0x1B8开始处的四个字节),而且,Vista的引导程序会通过这四个字节来寻找自己所在的磁盘,如果这四个字节被改动(一般来说,重新分区或者修复引导都会改变它,最好的办法就是装好后立刻备份MBR,必要时恢复这四个字节即可),肯定就导致引导失败。估计Win7应该使用的也是类似的策略,所以,你现在的办法就是想办法修复好这四个字节的磁盘标识或者重新安装Win7。至于你引导Win7的菜单项,在我看来根本就是错误的,你的Win7安装在逻辑分区上,逻辑分区按道理来说应该是没有引导扇区的。照你的情况,你的bootmgr应该是安装在(hd0,0)(也就是C:盘的XP所在的分区上),BCD在c:\boot目录下。引导菜单应该类似这样:

代码: 全选

title Win7
root (hd0,0)
chainloader /bootmgr
savedefault
至于Hiweed的启动,只要在kernel命令行中指定了正确的根分区(最好用UUID方式指定),用grub4dos怎么都可以正常加载的,没有太多的限制,用你原来的菜单项不是就可以正常启动嘛。
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#3

帖子 adagio » 2009-03-12 14:15

代码: 全选

title Microsoft Windows 7.0 048 2009-03-09
root (hd0,4)
chainloader +1
win7怎么引导不知道,但是这个root肯定错了,应该是(hd0,5)
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
Climbing
帖子: 27
注册时间: 2008-11-19 9:39

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#4

帖子 Climbing » 2009-03-12 17:22

adagio 写了:

代码: 全选

title Microsoft Windows 7.0 048 2009-03-09
root (hd0,4)
chainloader +1
win7怎么引导不知道,但是这个root肯定错了,应该是(hd0,5)
呵呵,(hd0,4)用来指Win7所在的分区,这是没错的,grub4dos的逻辑分区编号是从4开始的,而分区编号是从0开始,0-3用来指MBR中的四个分区表项,而从4开始用来给逻辑分区编号。但问题就在于,这种用法根本不正确。
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#5

帖子 adagio » 2009-03-12 17:50

你搞错了,(hd0,4)永远是extend,逻辑分区从(hd0,5)开始
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
Climbing
帖子: 27
注册时间: 2008-11-19 9:39

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#6

帖子 Climbing » 2009-03-13 8:15

adagio 写了:你搞错了,(hd0,4)永远是extend,逻辑分区从(hd0,5)开始
不要抬杠,亲自试一下。

进入grub4dos命令行,执行一个geometry (hd0)命令,然后再来一个ls (hd0,4)/之类的命令就可以验证了。
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#7

帖子 adagio » 2009-03-13 12:05

晕了,看来是经验有问题,多谢ls
前几天还写教程呢,改改去,祝lz好运
:em06
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
Glyx
帖子: 15
注册时间: 2006-10-27 11:57

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#8

帖子 Glyx » 2009-03-13 21:02

When boot from the WINXP title of the grub:

error 17: Cannot mount selected partition
Press any key to continue

I'm here come to modified the menu.lst from:

chainloader (hd0,0)+1
chainloader (hd0,4)+1

to

chainloader /ntldr
chainloader /bootmgr

still, I encountered the previous error, even the error code kept the same.

grub>geometry (hd0)

drive 0x80: C/H/S=1023/255/63, The number of sectors=312581808, LBA
Partition num: 4 FIlesystem unkown, partition type 0x7
Partition num: 5 FIlesystem unkown, partition type 0x7
Partition num: 6 FIlesystem unkown, partition type 0x7
Partition num: 7 FIlesystem is ext2fs, partition type 0x83
Partition num: 8 FIlesystem unkown, partition type 0x82
Partition num: 9 FIlesystem is ext2fs, partition type 0x83
Glyx
帖子: 15
注册时间: 2006-10-27 11:57

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#9

帖子 Glyx » 2009-03-14 10:13

哥们,问题还是一样,C盘下面文件齐备,menu.lst也按照你说的改了,但是仍然启动失败。

至于你说的将哥伦布安装到MBR里,我已经在WIN7下通过bcdedit完成了,参照GRUB4DOS里面的README关于VISTA那章改的。

昨天我把启动的错误也贴了出来,麻烦您再看看哪里的问题,谢谢了。

现在每次启动到WINXP,都要输入一堆命令,看着怪吓人的。。。
Climbing
帖子: 27
注册时间: 2008-11-19 9:39

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#10

帖子 Climbing » 2009-03-16 11:48

@ Glyx

事实上,很长时间没有看到你的回复,以为你已经将问题解决了。

从8楼的geometry (hd0)来看,很显然你的分区表有问题了,在grub4dos看来,你的硬盘上根本没有主分区(也就是分区编号为0-3的分区),实际上,分区编号为4、5、6的分区编号本应该是0,1,2,我不知道为什么会出现这种情况,但很显然问题就出在这里。

而且,一旦出现Filesystem Unknown的提示,就意味着grub4dos无法识别你的分区文件系统,当然更无法访问分区上的文件,所以chainloader /ntldr之类的命令就全部失效了。

你现在首先要解决的就是你的分区表问题,建议你用Partition Magic或者Acronis Disk Director Suite之类的分区软件来进行修理。必要时将全部分区删除,然后使用分区表恢复软件重新恢复所有的分区(或者完全重建所有分区)。

问题出在哪里我不知道,但我可以肯定是你的分区表出了严重故障。
Climbing
帖子: 27
注册时间: 2008-11-19 9:39

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#11

帖子 Climbing » 2009-03-19 10:57

楼主太不厚道了,别人关注你的问题,你却迟迟没有回应,让人是多么失望啊。
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#12

帖子 adagio » 2009-03-19 11:09

算了吧,很多人都这样,解决掉问题就跑了 :em01
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
Climbing
帖子: 27
注册时间: 2008-11-19 9:39

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#13

帖子 Climbing » 2009-03-19 16:25

谢谢楼上的安慰,感觉好多了,呵呵 :em06
Glyx
帖子: 15
注册时间: 2006-10-27 11:57

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#14

帖子 Glyx » 2009-03-21 19:43

最近在做项目一直不敢弄,将就着每次输入命令进系统。看着你这个解决方法蛮吓人的,我手头有paragon partition manager,目前还不确定删掉分区表再重建一定没问题。

哥们,不好意思。

我没按照你的方法备份MBR,也没有用bootlace安装grub到MBR,因为我是通过Hiweed的liveCD进的系统,在那里setup的grub。

是不是这里出错了?必须用你的方法安装到MBR?

谢谢了!!
Glyx
帖子: 15
注册时间: 2006-10-27 11:57

Re: Grub引导WINXP,WIN7和HIWWED失败,求GRUB完美引导三系统方案

#15

帖子 Glyx » 2009-03-21 19:51

另,我在WIN7下通过grub4dos的readme把grub安装到了WIN7启动选单,将默认的menu.lst拷到C盘根目录,进入WIN7 启动选单后是可以通过进入GRUB并选取windows 98/XP入口进入XP的。

这样看来可能应该没有涉及到分区表的严重错误(但我也没有头绪),我怀疑是因为没有按照你的方法安装grub(用livecd的方式安装的grub可能与你说的方法有区别),导致解决思路出现了偏差。

又及,我没有及时回帖,实在是不好意思 :em06 。其实主要还是不敢采用你的方法,所以在等这个项目做完了后再试试看。在此谢谢你啦。
回复