无法用grub2引导逻辑分区上的windows 7

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: 无法用grub2引导逻辑分区上的windows 7

#61

帖子 smallapple » 2011-03-24 8:52

正常win7的pbr是nt60的,可以由grub或grub2从逻辑分区引导,是nt50的再用 bootsect /nt60 改写引导的话,不能从逻辑分区引导。你可以用xp的fixboot写入nt50代码后再用bootsect /nt60写入试试。
bootice写入代码是否可以从逻辑分区引导我没做过测试,如果你做的没问题,那应该是可以的。
头像
sddzcuigc
帖子: 55
注册时间: 2009-03-08 12:24

Re: 无法用grub2引导逻辑分区上的windows 7

#62

帖子 sddzcuigc » 2011-03-24 9:04

stroller2008 写了:够费劲的!
如果当初你装完系统,GHOST个镜像就简单多了,提取到任意你想要的分区,然后引导用GRUB4DOS!
这样做的好处,是可以任意调整,安全可退回,可前进!模块化的,这样你GURB2那天不好了,又要麻烦。

我的c盘xp后,D的引导代码也会自动成52,后来要在D放个WIN7PE,就BOOTSECT一下引导代码类型让他找BOOTMGR就ok了
win7镜像是随意提取,考虑使用的情况,多数直接到c盘。

好用的很。
原来是这样呀。

我是这样操作的,先在硬盘(未分区)装XP,然后用Acronics对硬盘分区,分为两个ntfs与1个空白区,在第二个ntfs逻辑分区中光盘装Win7,在空白分区中光盘装ubuntu10.04。这样操作,D盘,也就是第二个NTFS分区的PBR就是nt52的,因为不是主分区的原因,MBR被装载后,直接到C盘主分区nt60的PBR进行引导,因此进入XP和Win7的bootmgr双启动菜单。
我的QQ是553052416花月痕,欢迎加我为好友,一起解决问题。或者一起打KOF。
头像
sddzcuigc
帖子: 55
注册时间: 2009-03-08 12:24

Re: 无法用grub2引导逻辑分区上的windows 7

#63

帖子 sddzcuigc » 2011-03-24 9:13

smallapple 写了:正常win7的pbr是nt60的,可以由grub或grub2从逻辑分区引导,是nt50的再用 bootsect /nt60 改写引导的话,不能从逻辑分区引导你可以用xp的fixboot写入nt50代码后再用bootsect /nt60写入试试
bootice写入代码是否可以从逻辑分区引导我没做过测试,如果你做的没问题,那应该是可以的
首先,我不是用Win7自动分区的,而是用Acronics分区的,我分区和安装的方式,这个在我上面的贴子里有。这样分区,产生的逻辑分区的PBR均为nt50。

目前可以确定的是bootice改写PBR是没问题,可以成功从逻辑分区引导Win7;
至于红字部分,我测试一下。
我的QQ是553052416花月痕,欢迎加我为好友,一起解决问题。或者一起打KOF。
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: 无法用grub2引导逻辑分区上的windows 7

#64

帖子 smallapple » 2011-03-24 9:22

你现在的win7又改回逻辑分区吗?
bootsect写入不能从逻辑分区引导的好象不单是我的,从前面几个人的回复看来基本上都没成功。
现在懒得做测试,都是用grub4dos引导的 :em05
头像
sddzcuigc
帖子: 55
注册时间: 2009-03-08 12:24

Re: 无法用grub2引导逻辑分区上的windows 7

#65

帖子 sddzcuigc » 2011-03-24 12:03

smallapple 写了:你现在的win7又改回逻辑分区吗?
bootsect写入不能从逻辑分区引导的好象不单是我的,从前面几个人的回复看来基本上都没成功。
现在懒得做测试,都是用grub4dos引导的 :em05
果然,不能引导,正如你说的现象一样。
在XP下我手动执行了bootedit store和bootsect命令,均成功执行,并在XP下用bootice查看分区PBR,确认Win7所在的逻辑分区确实已经被转换为bootmgr类型(即nt60启动扇区类型)
同时,我在ubuntu下运行boot_info_script的前后对比结果,注意PBR的确是更改了。但是仍然无法引导进入Win7,显示a disk read error accured,可见cmd下手动执行的更改PBR类型的命令不等价于bootice直接修改PBR类型的操作,(具体差在什么地方哩 :em06
2011-03-24_115716.png
我的QQ是553052416花月痕,欢迎加我为好友,一起解决问题。或者一起打KOF。
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: 无法用grub2引导逻辑分区上的windows 7

#66

帖子 smallapple » 2011-03-24 12:15

和引导扇区代码有关,标准 nt52 代码应该是从主分区查找启动文件ntldr,而nt60 代码是从当前分区查找启动文件 bootmgr - ntldr,
bootsect 估计是修改引导文件 bootmgr 或ntldr,并没有对查找位置代码进行修改,这样的话逻辑分区的bootmgr 不能被加载引导。

bootice 是用来修改grub4dos的图型化程序,grldr 本来就可以任何分区下,bootice 写入的代码应该就可以从逻辑分区启动。

以上纯属猜测 :em01
头像
sddzcuigc
帖子: 55
注册时间: 2009-03-08 12:24

Re: 无法用grub2引导逻辑分区上的windows 7

#67

帖子 sddzcuigc » 2011-03-24 12:28

smallapple 写了:和引导扇区代码有关,标准 nt52 代码应该是从主分区查找启动文件ntldr,而nt60 代码是从当前分区查找启动文件 bootmgr - ntldr,
bootsect 估计是修改引导文件 bootmgr 或ntldr,并没有对查找位置代码进行修改,这样的话逻辑分区的bootmgr 不能被加载引导。

bootice 是用来修改grub4dos的图型化程序,grldr 本来就可以任何分区下,bootice 写入的代码应该就可以从逻辑分区启动。

以上纯属猜测 :em01
我还尝试要用XP中的fixboot d:命令,将D盘先弄成nt52再用bootsect搞回nt60,但无奈,不会用这个程序。好像不能在ms-dos方式下成功执行。
我的QQ是553052416花月痕,欢迎加我为好友,一起解决问题。或者一起打KOF。
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: 无法用grub2引导逻辑分区上的windows 7

#68

帖子 smallapple » 2011-03-24 14:54

fixboot是在xp修复控制台下才有,正常系统中没有,试过了,没办法从控制台中提取出来
头像
sddzcuigc
帖子: 55
注册时间: 2009-03-08 12:24

Re: 无法用grub2引导逻辑分区上的windows 7

#69

帖子 sddzcuigc » 2011-03-24 19:45

smallapple 写了:fixboot是在xp修复控制台下才有,正常系统中没有,试过了,没办法从控制台中提取出来
我百度到的。下载了一个20KB的fixboot.exe文件。
2011-03-24_203219.png
FIXBOOT.rar
(12.63 KiB) 已下载 47 次
上次由 sddzcuigc 在 2011-03-24 20:35,总共编辑 1 次。
我的QQ是553052416花月痕,欢迎加我为好友,一起解决问题。或者一起打KOF。
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: 无法用grub2引导逻辑分区上的windows 7

#70

帖子 smallapple » 2011-03-24 19:51

下来看看满足好奇心 :em09
头像
sddzcuigc
帖子: 55
注册时间: 2009-03-08 12:24

Re: 无法用grub2引导逻辑分区上的windows 7

#71

帖子 sddzcuigc » 2011-03-25 13:09

好像是grub2的问题,我用grub1测试了一下,可以引导通过bootsect /nt60 d:命令重建PBR的Win7。 :em11
我的QQ是553052416花月痕,欢迎加我为好友,一起解决问题。或者一起打KOF。
头像
sddzcuigc
帖子: 55
注册时间: 2009-03-08 12:24

Re: 无法用grub2引导逻辑分区上的windows 7

#72

帖子 sddzcuigc » 2011-03-25 13:11

smallapple 写了:下来看看满足好奇心 :em09
我在03内核PEcmd下运行不了这个文件,显示找不到文件fixboot.exe。在Win7下运行显示fixboot不是内部或外部命令。在Xp下运行,无显示,跳出新的cmd窗口。 :em04
我的QQ是553052416花月痕,欢迎加我为好友,一起解决问题。或者一起打KOF。
头像
sddzcuigc
帖子: 55
注册时间: 2009-03-08 12:24

Re: 无法用grub2引导逻辑分区上的windows 7

#73

帖子 sddzcuigc » 2011-03-25 14:23

引导学习与测试
测试环境:Virtualbox4.04、系统盘XPMSDN原版ISO、Windows7_tiny7_rev1太阳鸟论坛修正版ISO、Ubuntu10.04LTS原版ISO、深山红叶PE工具箱V32经典版ISO、Easybcd2.02、Bootice7.8经典版、Bcdedit.exe(提取自Win7的/windows/system32目录)、bootsect.exe(提取自Easybcd的/bin目录)、bootrec.tar(包含bootrec.exe和bootrec.dll)、fixboot.exe(提取自Xp的安装盘)。
测试过程:
1、用Virtualbox创建20GB大小的新虚拟硬盘,光盘安装XP至虚拟硬盘,进入PE,用Acronics进行分区,主分区C:5GB、逻辑一区D:8GB、空白分区7GB,此时重启后,引导为Xp默认的nt52 loader即ntldr并写入MBR(主引导记录),同时,所有分区的boot sector(引导扇区)的类型,即PBR(分区引导记录)类型,都被默认写入ntldr类型。
2、光盘安装Win7至逻辑一区,此时,引导被Win7的nt60 loader即bootmgr接管,并写入MBR和主分区的PBR,即此时C盘的PBR类型为bootmgr,但未更改逻辑分区的PBR类型,即此时D盘的PBR类型仍为ntldr类型。重启后,nt60 loader会自动识别XP,并建立“以前版本的Windows”项菜单。
3、光盘并以默认方式安装Ubuntu至空白分区(即不进行任何配置修改,在这种情况下,Ubuntu会自动分为一个Ext4分区和一个Swap分区,grub2会被安装进MBR)。重启后,grub2会自动识别Win7的nt60 loader并建立该项菜单。
4、经过以上步骤,grub2可以成功生成以下引导菜单,并成功引导进入各系统。
grub2------Ubuntu
------nt60 loader(bootmgr)------nt52 loader(ntldr)------Xp
------Win7
5、此时,进入Win7,安装Easybcd,添加ubuntu的启动项,配置并保存BCD信息。注:添加完启动项后,一定要正常关闭Win7才能使启动项生效。为了不至于重复和循环,此处选择把Win7启动管理器bootmgr写入MBR,见图1 :em05 ,覆盖原来的grub2。
0重写MBR功能.png
4删除BCD及重建boot功能.png
9Gurb4dos启动项功能.png
6、经过以上步骤,bootmgr可以成功生成以下引导菜单,并成功引导进入各系统。
bootmgr------ntldr-----Xp
------Win7
------grub2------Ubuntu
------bootmgr------ntldr------Xp
------Win7
7、此时可以进入Ubuntu编辑掉grub2的多余启动项,生成单级启动菜单。
*8、测试,未在Ubuntu环境中安装grub1情况下:进入Win7添加三个neo linux启动项,如下表,测试结果也如图示。
1依次用Add New Entry添加3个linux方式启动项.png
2添加后.png
3添加后view settings.png
0重启后.png
0重启后.png (10.26 KiB) 查看 3173 次
1未勾选.png
1未勾选.png (3.84 KiB) 查看 3173 次
2勾选.png
3grub2的三引导菜单.png
3grub2的三引导菜单.png (8.96 KiB) 查看 3173 次
然后通过第3项进入ubuntu卸载grub2及grub-pc,安装grub1,后两项均可成功引导进入ubuntu。问题(目前未解决中)是:
<1>、如果只有第3项可以进入Ubuntu的原因是因为:grub2还存在于linux分区,那为何grub2未成功卸载?
<2>、如果只有第3项可以进入Ubuntu的原因是因为:Easybcd建立了grub2引导,却为何只有grub2才能进入ubuntu,而同样由Easybcd建立的grub1却未成功引导进入ubuntu。如果是menu.lst的问题,那又应该怎样修改呢?
8grub1和grub2并存奇怪现象.png
*9、测试尝试用grub1单级引导多系统:进入Ubuntu编辑menu.lst,加入xp及win7及ubuntu的启动信息如下
title Xp
root (hd0,0)
chainloader +1
boot

title Win7
root (hd0,4) //因为Win7在/dev/sda5分区,即E盘
chainloader +1
boot

title Linux
root (hd0,5)
kernel /vmlinuz root=/dev/sda6 ro
然后update-grub(不知道对于grub1这一步是否必须)。
1)重启后选择进入XP,直接回到bootmgr,原因很简单,因为C盘作为主分区,PBR已经改为bootmgr类型,ntldr已被bootmgr接管;进入PE,用bootice把XP的PBR改回ntldr,重启后,由ntldr引导进入XP。
2)选择进入Win7,提示A disk read error accured,因为Win7所在的E盘的PBR类型为ntldr;然后到XP下用bootice把E盘的PBR改为bootmgr,重启后,再次选择进入Win7,提示bootmgr is missing,原因是E盘没有boot文件夹和bootmgr文件;再次到XP下复制boot文件夹及bootmgr文件至E盘根目录,这下可以终于进入bootmgr并引导进入Win7了,进入Win7后用Easybcd备份一份BCD信息,进入Easybcd选择不显示bootmgr启动选择菜单,以便接下来MBR被grub1接管。
5用boot_info_script查看用Bootice修改E盘PBR前后对比.png
3)选择进入Ubuntu,启动正常,但不出现ubuntu的前期logo,整个启动过程是文字界面;在Ubuntu下运行grub install /dev/sda将grub1写入MBR。
重启后即得到由grub1引导的单级引导菜单。

*10、测试,在步骤9的“1)”中,弃用bootice,使用“WindowsXP故障处理器”中的fixboot.exe(这个文件居然无法提取出来),可以用fixboot.exe fix /N2命令重置Xp所在NTFS格式盘上的PBR为ntldr类型。在步骤9的“2)”中,弃用bootice,提取Easybcd/bin目录下的bootsect.exe及bcdedit.exe,可以用bootsect.exe /nt60 E: 命令将Win7所在分区的PBR改为bootmgr类型(注:这里也可以用bootsect.exe /nt52 C:重建XP所在分区的PBR为ntldr类型),用bcdedit.exe /store E:\boot\bcd /set {bootmgr} device partition=E: 命令,可以把bootmgr所在分区定义为E盘(但实际测试时,根本没必要这个命令,根本没碰到bcd被识别为在C:的情况,不知为何呀),然后就可以顺利进入Win7了。
6是否真正地更新了PBR类型.png
6是否真正地更新了PBR类型.png (10.26 KiB) 查看 3173 次
7Bootedit store前后对比.png
*11、测试,在grub1建立引导的基础上,升级为grub2。进入Ubuntu,apt-get install grub2,接着update-grub,接着grub-install /dev/sda,启动后无法进入Win7,显示"A disk read error occured",说明grub2无法引导逻辑一区上建立的Win7,验证了smallapple所说的现象。
install grub前后PBR对比.png
*12、测试,忽略步骤10,直接进行步骤11,也就是用bootice替代手工修改Win7分区的PBR,结果启动手可以顺利引导进入win7。通过步骤11和12的对比,说明bootice重建PBR和bootsect重建分区PBR是不等价的,bootice重建的PBR兼容性更好。
注:笔者去论坛问Bootice的作者Pauly大,回复截图如下
2011-03-27_082458.png
我的QQ是553052416花月痕,欢迎加我为好友,一起解决问题。或者一起打KOF。
回复