无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: 66369
打印 上一主题 下一主题

NTFS和FAT32 互转 / 北斗.H3.Pauly.netwinxp.haiou327.dvd008 ..win7启动技术探讨中..

[复制链接]
151#
发表于 2009-12-12 21:49:09 | 只看该作者
原帖由 dvd008 于 2009-12-12 21:20 发表
上面说的nt5的mbr是怎么写入的 ?

bootsect只提供了一个 /mbr 参数,并没有指明是nt6还是nt5 ?


/mbr    Updates the Master Boot Record without changing the partition table on
        sector 0 of the disk that contains the partition specified by SYS, ALL,
        or drive letter.  When used with /nt52 option, the master boot record
        is compatible with operating systems older than Windows Vista.  When
        used with the /nt60 option, the master boot record is compatible with
        Windows Vista, Windows Server 2008 or later.

这是有关bootsect的参数的帮助,说明还是有区别的。
回复

使用道具 举报

152#
发表于 2009-12-12 22:00:44 | 只看该作者
原帖由 北斗 于 2009-12-12 21:08 发表


今晚还有时间,我再折腾下我那可怜的硬盘,再次验证下dvd008大大和haiou327大大的建议

稍后我来汇报


按dvd008大大和haiou327大大的方法,测试通过,在提取gho到目标盘C后不能引导时,进PE中运行如下命令:

bcdboot c:\windows /s c: /l zh-CN

重启后,win7引导界面出现两个相同的windows 7菜单,选择第一个,可以正常引导Win7,选第二个还是出现0XC000000E的错误提示界面,不知多出一个菜单是不是因为加了/S的参数的原因,这个s参数我不知作用是什么

运行bcdboot c:\windows /s c: /l zh-CN命令前后,C:\BOOT\BCD文件的变化见附件

BCD.rar (9.51 KB, 下载次数: 34)
回复

使用道具 举报

153#
发表于 2009-12-12 22:02:29 | 只看该作者
原帖由 66369 于 2009-12-12 21:39 发表
向北斗.H3......学习了.仔细看下...


不是因为水大叔和sunhl大大的原因,不会有这么热烈的讨论的,哈哈
回复

使用道具 举报

154#
发表于 2009-12-12 22:12:16 | 只看该作者
原帖由 北斗 于 2009-12-12 22:00 发表


按dvd008大大和haiou327大大的方法,测试通过,在提取gho到目标盘C后不能引导时,进PE中运行如下命令:

bcdboot c:\windows /s c: /l zh-CN

重启后,win7引导界面出现两个相同的windows 7菜单,选择第 ...


/s                Specifies an optional volume letter parameter to designate
                   the target system partition where boot environment files are
                   copied.  The default is the system partition identified by
                   the firmware.

以上是有关s参数的说明,只是指定一个系统区所在的盘符。
回复

使用道具 举报

155#
发表于 2009-12-12 22:14:29 | 只看该作者
原帖由 hhh333 于 2009-12-12 22:12 发表


/s                Specifies an optional volume letter parameter to designate
                   the target system partition where boot environment files are
                   copied.  The ...


好的,谢谢h3大大
回复

使用道具 举报

156#
发表于 2009-12-12 23:41:45 | 只看该作者
以下是个人猜测:
1、MBR除了磁盘签名外,应该和PBR引导哪个文件没瓜葛。
2、win7的PBR引导的文件应该是BOOTMGR,而不会去管NTLDR(酱紫也就结识了删除BOOTMGR,NTLDR也没得加载),个人认为NTLDR是BOOTMGR加载的,它还会根据BCD去尝试加载其他引导文件(和GRLDR有点类似,只不过GRLDR是根据MENU.LST而不是BCD文件)。
3、至于运行bcdboot ....产生多条菜单,应该是在BCD文件上已经多余了一条,应该可以通过清理BCD条项来解决(ms一直有这个"优良传统",比如以前装xp多次也会产生多条boot.ini里面的项)。

[ 本帖最后由 netwinxp 于 2009-12-12 23:43 编辑 ]
回复

使用道具 举报

157#
发表于 2009-12-13 00:02:16 | 只看该作者
刚做完实机测试,先在PE下格式化,写入完美者U+文件(为syslinux引导),重启失败,再次进入PE用bootice写入分区引导syslinux,重启OK,再次格式化,用镜像浏览器打开备份提取到C盘,完成后重启OK
回复

使用道具 举报

158#
发表于 2009-12-13 00:09:13 | 只看该作者
问题:为何在syslinux引导完美者U+后格式化写入备份镜像(为NTLDR)却不用写分区引导,而之前原系统NTLDR引导格式化写入完美者U+(syslinux)却要写分区引导
回复

使用道具 举报

159#
发表于 2009-12-13 10:24:18 | 只看该作者
不过,GhostExp支持命令行操作更好。
回复

使用道具 举报

160#
发表于 2009-12-13 10:42:39 | 只看该作者
原帖由 netwinxp 于 2009-12-12 23:41 发表
以下是个人猜测:
win7的PBR引导的文件应该是BOOTMGR,而不会去管NTLDR(酱紫也就结识了删除BOOTMGR,NTLDR也没得加载),个人认为NTLDR是BOOTMGR加载的,它还会根据BCD去尝试加载其他引导文件(和GRLDR有点类似,只不过GRLDR是根据MENU.LST而不是BCD文件)。


如果是 NTFS 分区,WIN7 的 PBR 在没有找到 BOOTMGR 的情况下会尝试启动 NTLDR 的,NTLDR 不是 BOOTMGR 加载的,BOOTMGR 只会检查 BCD 和 BOOT.INI
回复

使用道具 举报

161#
发表于 2009-12-13 10:48:11 | 只看该作者
看不过来了
无忧启动
此贴给我学了许多
回复

使用道具 举报

162#
发表于 2009-12-13 11:05:28 | 只看该作者
NTLDR 不是 BOOTMGR 加载的,BOOTMGR 只会检查 BCD 和 BOOT.INI

如果谁能提供一下ntfs下的win7 bootrecord就好分析了,如果它里面包含有ntldr字串,那就是ntfs win7 bootrecord($boot)能引导ntldr。不过从hhh333的实验可以看出来fat32的win7 bootrecord(只有一个扇区)肯定是不包含引导ntldr的(删除bootmgr会导致不加载ntldr),那就是说bootmgr也会加载ntldr(有bootmgr可以加载ntldr,启动nt5.x是需要加载ntldr的,因为它里面包含有32位的osloader.exe,而osloader是启动nt5.x的一个重要环节,仅仅加载boot.ini恐怕是不够的。PS:相对于PE来说是setupldr.exe)。
***令人疑惑的是,照道理win7只能安装在ntfs分区上,那么fat32的win7 bootrecord又是怎样折腾出来的?是不是可以这么理解——所谓的fat/fat32上的win7 bootrecord其实只是winnt5.x的变形(仅仅将ntldr改成bootmgr可能另外还作了一小部分修改)。***
BTW:ms一直有保留引导以前操作系统接口的传统,比如:win9x通过加载io.dos、msdos.dos引导dos6.x,nt5.x通过加载bootsec....dos引导win9x或者早期dos。bootmgr会不会也保留引导ntldr的接口呢?从hhh333的实验来看,应该是有的。

[ 本帖最后由 netwinxp 于 2009-12-13 11:29 编辑 ]
回复

使用道具 举报

163#
发表于 2009-12-13 12:00:29 | 只看该作者
Here you are.

bootmgr.rar

3.94 KB, 下载次数: 29, 下载积分: 无忧币 -2

回复

使用道具 举报

164#
发表于 2009-12-13 13:29:58 | 只看该作者
我觉得可以尝试另外一种BT的备份方案,用7-ZIP来备份~~因为7-ZIP本来就不是备份工具~~
这样可以避免GHOST或者IMAGEX等等的操作嫌疑

清零
7-ZIP恢复
然后尝试删除或者更改一些引导文件
回复

使用道具 举报

165#
发表于 2009-12-13 13:59:27 | 只看该作者
这个BIN文件有点问题,它包含FAT12、FAT32和NTFS三块(经反汇编,前两者肯定没有NTLDR,第三个正在反汇编中...太长了:(),有没有直接提取的NTFS WIN7 BOOTRECORD?
  1. ;前512字节反汇编,0200H~03FFH反汇编结果和这个差不多
  2. 0000:7C00 EB3C   jmp 7c3e
  3. 0000:7C02 90     nop
  4. ;============
  5. 0000:7C03        db 'MSWIN4.1',0
  6. 0000:7C0C        db 02,08,01,00
  7. 0000:7C10        db 02,00,02,03,51,F8,08,00,11,00,04,00
  8. 0000:7C1C        dd 00000001
  9. 0000:7C20        db 00,00,00,00,80,00,29,00,00,00,00
  10. 0000:7C2B        db 'NO NAME    '
  11. 0000:7C36        db 'FAT12   '
  12. ;===以上是盘基表===
  13. 0000:7C3E 33C9     xor cx,cx
  14. 0000:7C40 8ED1     mov ss,cx
  15. 0000:7C42 BCF07B   mov sp,7bf0
  16. 0000:7C45 8ED9     mov ds,cx
  17. 0000:7C47 B80020   mov ax,2000
  18. 0000:7C4A 8EC0     mov es,ax
  19. 0000:7C4C FC       cld
  20. 0000:7C4D BD007C   mov bp,7c00
  21. 0000:7C50 384E24   cmp [bp+24],cl
  22. 0000:7C53 7D24     jge 7c79
  23. 0000:7C55 8BC1     mov ax,cx
  24. 0000:7C57 99       cwd
  25. 0000:7C58 E83C01   call 7d97
  26. 0000:7C5B 721C     jb 7c79
  27. 0000:7C5D 83EB3A   sub bx,7c3a
  28. 0000:7C60 66A11C7C mov eax,dword ptr [7c1c]
  29. 0000:7C64 26663B07 cmp eax,es:[bx]
  30. 0000:7C68 268A57FC mov dl,es:[bx-04]
  31. 0000:7C6C 7506     jne 7c74
  32. 0000:7C6E 80CA02   or dl,02
  33. 0000:7C71 885602   mov [bp+02],dl
  34. 0000:7C74 80C310   add bl,10
  35. 0000:7C77 73EB     jnb 7c64
  36. 0000:7C79 33C9     xor cx,cx
  37. 0000:7C7B 8A4610   mov al,[bp+10]
  38. 0000:7C7E 98       cbw
  39. 0000:7C7F F76616
  40. ...
  41. 0000:7DA1          db 'BOOTMGR    ',0d,0a
  42. 0000:7DAE          db 'BOOTMGR is missing'
  43. 0000:7DC0          db ff
  44. 0000:7DC1          db 0d,0a,'Disk error'
  45. 0000:7DCD          db ff
  46. 0000:7DCE          db 0d,0a,'Press any key to restart',0d,0a,00
  47. 0000:7DEB          db 00,00,00,00,00
  48. 0000:7DF0          db 00,00,00,00,00,00,00,00,00,00
  49. 0000:7DFA          db 00,AC,C1,CE
  50. 0000:7DFE          dw aa55
复制代码

[ 本帖最后由 netwinxp 于 2009-12-13 14:10 编辑 ]
回复

使用道具 举报

166#
发表于 2009-12-13 14:25:22 | 只看该作者

回复 #169 netwinxp 的帖子

这个文件是 WIN7 的 BOOTSECT.EXE(版本号 6.1.7600.16385)中的,包含了 FAT、FAT32、NTFS 三种分区的引导代码和MBR,只有 NTFS 部分会在 BOOTMGR 没有找到的情况下再启动 NTLDR

[ 本帖最后由 Pauly 于 2009-12-13 14:26 编辑 ]
回复

使用道具 举报

167#
发表于 2009-12-13 14:45:53 | 只看该作者
不支持FAT,FAT12是软盘,硬盘的是FAT16(也就是常说的FAT)。

[ 本帖最后由 netwinxp 于 2009-12-13 14:47 编辑 ]
回复

使用道具 举报

168#
发表于 2009-12-13 15:36:04 | 只看该作者

回复 #171 netwinxp 的帖子

支持的吧,FAT12 没有条件测试,FAT16 是支持的哦,别看里面有个 FAT12 字样,实际上代码是兼容 FAT12 和 FAT16 的
回复

使用道具 举报

169#
发表于 2009-12-13 16:14:21 | 只看该作者
原帖由 北斗 于 2009-12-12 22:00 发表


按dvd008大大和haiou327大大的方法,测试通过,在提取gho到目标盘C后不能引导时,进PE中运行如下命令:

bcdboot c:\windows /s c: /l zh-CN

重启后,win7引导界面出现两个相同的windows 7菜单,选择第 ...



这个命令是重新建立 bootmgr 和 bcd,可以在硬盘没有的情况下生成这两个文件,

如果先删除bcd,应该就正常了,你可以试一试,删除bcd,再执行它。

另外,由于有了 bootsect, xp下,win7下分区格式化都行,不格式化也行,用它改写对应的引导代码就可
回复

使用道具 举报

170#
发表于 2009-12-13 16:22:05 | 只看该作者
可以在ntfs的主分区, 执行bootsect /nt60 c:/mbr
得到主引导记录 和分区引导记录

应该是nt60的 分区引导记录,优先找bootmgr,没有才找ntldr

如果找到bootmgr,它会找 boot.ini,有就出现选择菜单
回复

使用道具 举报

171#
发表于 2009-12-13 17:22:18 | 只看该作者
原帖由 北斗 于 2009-12-12 22:00 发表


按dvd008大大和haiou327大大的方法,测试通过,在提取gho到目标盘C后不能引导时,进PE中运行如下命令:

bcdboot c:\windows /s c: /l zh-CN

重启后,win7引导界面出现两个相同的windows 7菜单,选择第 ...


北斗提到的出现两个相同的windows 7菜单,用JianLiuLin编写的BCDEDIT的GUI工具BcdTool查看编辑一下。




[ 本帖最后由 haiou327 于 2009-12-13 17:28 编辑 ]
回复

使用道具 举报

172#
发表于 2009-12-13 19:29:31 | 只看该作者
在FAT32分区中,我已经进行了测试,NT60的PBR不能按bootmgr-->ntldr顺序进行查找。
刚才我将这个分区转变成了NTFS分区,证明确实可以按bootmgr-->ntldr顺序查找。

我再测试MBR改成NT52形式时看能不能引导Win7

>>已经测试,是可以的,那NT60的MBR应该也可引导NT52的PBR。

现在基本搞清楚:

1、无论是NT52还是NT60的MBR,它们的作用主要是将启动的控制权转交给活动分区的PBR;虽然看MS的说明这两种MBR一个是与vista以前的系统兼容,一个是与vista及其以后的系统兼容,没有仔细比较其代码,表面上看似乎无区别。NT52的MBR照样可以引导NT60的PBR。

2、在NTFS分区上,NT60的PBR先会装载bootmgr文件,如果失败会继续装载ntldr,再失败就出错提示了。在其他的分区格式上只要bootmgr未找到就出错了,即没有这种能力,或者是说MS没有支持这种能力。

3、bootmgr除了拥有读取WIN7启动记录BCD的能力也具有NTLDR读取BOOT.INI的能力,它会将BOOT.INI中的启动项整合到开机菜单中。因此如果要在win7主导的系统启动菜单中增加启动项,可以在BCD中加,也可以象以前一样在boot.ini中加,显然在Boot.ini中加更直观更容易。现在很多的PE安装程序都采用后一种方式,也与NT52类型的系统兼容。bootmgr读boot.ini并不要ntldr支持,也即这是它内置的功能。

4、现又回到水哥原来的问题上来,这里总结一下:即利用系统自带的磁盘管理程序,在NT52的系统分区格式出的MBR和PBR就是NT52的;NT60的系统分区格式出的就是NT60的,这种方式做出的分区是直接可引导的,都可以用拷文件的方式来恢复系统,也即nt52可以用来引导vista以前的系统,nt60可以用来引导vista及其以后的系统。如果是分区是NTFS格式,NT60是向下兼容的,即NT60格式出的盘照样可以用来恢复NT52的系统,其他分区格式不行。

[ 本帖最后由 hhh333 于 2009-12-13 21:03 编辑 ]
回复

使用道具 举报

173#
发表于 2009-12-13 20:16:28 | 只看该作者
FAT、FAT32肯定只找BOOTMGR,NTFS好像有NTLDR字样(UNICODE内码)。
其实不用管它会不会找NTLDR,最保险的就是把NTLDR加入到BCD中就可以了。
BOOTMGR--NTLDR照样会启动NT5.X。

[ 本帖最后由 netwinxp 于 2009-12-13 20:20 编辑 ]
回复

使用道具 举报

174#
发表于 2009-12-13 20:23:37 | 只看该作者
原帖由 hhh333 于 2009-12-13 19:29 发表
在FAT32分区中,我已经进行了测试,NT60的PBR不能按bootmgr-->ntldr顺序进行查找。
刚才我将这个分区转变成了NTFS分区,证明确实可以按bootmgr-->ntldr顺序查找。
我再测试MBR改成NT52形式时看能不能引导Wi ...


有BOOTMGR和BOOT.INI并且没有NTLDR(可以先把NTLDR改名)能否启动NT5.X?如果不行,那不管BOOTMGR读不读BOOT.INI都没多少意义。

[ 本帖最后由 netwinxp 于 2009-12-13 20:25 编辑 ]
回复

使用道具 举报

175#
发表于 2009-12-13 20:29:07 | 只看该作者
原帖由 netwinxp 于 2009-12-13 20:23 发表


有BOOTMGR和BOOT.INI并且没有NTLDR(可以先把NTLDR改名)能否启动NT5.X?如果不行,那不管BOOTMGR读不读BOOT.INI都没多少意义。


刚才试了,NTLDR改名后bootmgr照样显示boot.ini中的启动项。这还是有点意义的,可以不动BCD而增加启动项,当然不是用来启动XP或03,但可启动PE等。

[ 本帖最后由 hhh333 于 2009-12-13 20:34 编辑 ]
回复

使用道具 举报

176#
发表于 2009-12-13 20:31:18 | 只看该作者
无NTLDR,进启动项后能不能启动NT5.X?我猜测有点悬。
把启动项加到BCD并不比加到BOOT.INI麻烦多少。

[ 本帖最后由 netwinxp 于 2009-12-13 20:38 编辑 ]
回复

使用道具 举报

177#
发表于 2009-12-13 20:37:53 | 只看该作者

回复 #180 netwinxp 的帖子

肯定不能,因bootmgr的菜单有一项是调用NTLDR来进入原来的NT52系统中的菜单的,NTLDR不在了,当然不能启动了。
回复

使用道具 举报

178#
发表于 2009-12-13 20:40:39 | 只看该作者
那就没必要去折腾boot.ini,因为启动项同样可以弄到BCD里面,专心致志搞BCD就可以了,越多文件可能出现的故障就越多,而且越麻烦。
回复

使用道具 举报

179#
发表于 2009-12-13 21:50:35 | 只看该作者
启动nt5,ntldr好像是不能少的

如果只是多一个nt5选项,boot.ini更简单

但是,好像只能识别boot.ini里面最后的启动项(也许是第一个,忘了)

对多个nt5的情况,用bcdedit加入到 bcd是最好的办法。具体步骤,我的维护工具里面,
手动安装修复win7目录里面的文档有,几条命令
回复

使用道具 举报

180#
发表于 2009-12-13 22:13:14 | 只看该作者
原帖由 haiou327 于 2009-12-13 17:22 发表


北斗提到的出现两个相同的windows 7菜单,用JianLiuLin编写的BCDEDIT的GUI工具BcdTool查看编辑一下。


77207


已经收了jianliulin大大的bcdtool,可以修改多余的启动菜单了,谢谢haiou327大大
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-1 04:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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