无忧启动论坛

标题: 求助,pe启动和dos下格式化问题 [打印本页]

作者: 807979023    时间: 2010-3-21 15:26
标题: 求助,pe启动和dos下格式化问题
我的160g并口硬盘,用pq分区格式化为cdefg,全部是fat32。将pe文件拷贝到g盘根目录;
grldr内置菜单:timeout 0 ,find --set-root /peldr,chainloader /peldr;
boot.ini 增加一行:c:\grldr="Win PE";能够引导g盘根目录上的PE。
为试验dos下的ntfs4dos程序,pe下将g盘格式化为ntfs,由于对ntfs不了解,曾启动c盘上
的pe删除g盘上的文件夹 system Volume Information(好像是这个名称),在dos下加载
ntfs4dos拷贝删除过g盘上的文件,后来发现pe文件拷贝到g盘根目录,不能引导g盘的PE了。

  随后进行了以下操作:xp和pe下格式化g盘为fat32,用dg删除g分区再重建分区格式化为fat32。
结果拷贝到g盘根目录的xp2pe和2003pe均不能引导,提示以下错误:
inf  file  txtsetup.sif  is  corrupt  or  missing  status  18
setup  cannot  continue. press  any  key  to   exit
但同样的pe文件拷贝到cdef盘根目录都能引导,拷贝到g盘根目录的win7pe能引导。

  更奇怪的是g盘巳经是fat32,在dos下用win98的format格式化g盘,格式化中显示的全是
g盘信息,顺利完成后,结果却是格式化的c盘;而格式化c盘又能正确的格式化c盘,
以前dos下格式化g盘是正常的。

  目前xp和pe下所有操作正常,dos下除格式化g盘外其它操作未见异常,也能dos下对g盘ghost。
查主引导扇区与原先的备份相同,只发现cdef盘引导扇区版本是mswin4.1,而g盘是msdos5.0,
不知哪个版本高。
  以上两个问题百思不得其解,为什么格式化为ntfs后再格式化为fat32不能完全还原,
请高手们指点一二。
作者: dvd008    时间: 2010-3-21 16:24
ms的bug
dos和 win的格式化版本不同


 如果有朋友问:“我在用DOS启动盘启动后格式化了C盘,重启后照样进入了原先C盘的操作系统,反而D盘的内容全部不见了。”你会毫不犹豫地回答:“那是因为你的C盘在装系统时或装了系统后被转换成了NTFS格式,而NTFS格式的C盘在实DOS模式下不可见,所以你在DOS中见到并格式化的C盘其实是WIN里面的D盘。”事实如此,NTFS格式的分区在实DOS模式下的不认盘符已经是大多数朋友掌握的知识。

  但如果反过来问:“我在用DOS启动盘启动后格式化了D盘,重启后硬盘居然进不了系统,经查看D盘的数据还在,反而C盘的数据没有了。”相信会被搞得一头雾水。下面我们就通过一个实验来解决这个故障现象。为方便说明,对Win2000(NT5.0)/WinXP(NT5.1)/Win2003(NT5.2)我们在下面简称“NT系统”;而“DOS启动盘”则指的是我们现在最常用到的Win98版本的DOS启动盘(MSDOS7.1)。为避免在说清楚问题时盘符上的混淆以及我们针对的故障现象,硬盘的分区格式也定为最常用的FAT32格式。

  现在我们以标准格式进行操作来做实验。

  第一步:DOS启动盘启动,用FDISK对硬盘进行分区:主分区(C盘)、扩展分区、逻辑分区1(D盘)、逻辑分区2(E盘)、激活主分区。重启后对三个分区用FORMAT进行格式化。(这一步操作也可用PQ或DM进行)

  第二步:继续用NT系统光盘启动安装系统至C盘。

  第三步:安装完成后进入NT系统。打开我的电脑,右击D盘,选择“格式化”(文件格式仍旧选择FAT32)。完成格式化后再往D盘随便复制几个文件,以方便后来查看格式化结果。

  第四步:重启后用DOS盘启动系统,再用FORMAT命令对D盘进行格式化:A:\>format d:或A:\>format d:/q

  第五步:重启,故障出现:C盘数据全部丢失,D盘文件仍然存在。

  分析:只要跳过上面第三步的操作,无故障发生,那我们就从执行第三步操作的前后找起,执行完第二步后我们先不急于执行第三步,而是用DOS启动盘启动,用DEBUG调入D盘的0扇区数据,查看其BPB表中的变化(一些无影响的BPB表数据这里不介绍了)

  A:\>debug
  -L 100 3 0 1
  -D 11C L4
  B7 72 13 02
  -Q

  上面操作显示的字节十六进制值在BPB表中定义为特殊隐含扇区数,下面略述一下其在FAT32和FAT16格式上的不同之处:

  FAT32格式中:该值为该逻辑盘起始扇区相对于第一张分区表(也有称为主引导扇区或硬盘0柱0道1扇区)的扇区数,分区大小不同该值不同。

  FAT16格式中:该值为该逻辑盘起始扇区相对于该盘分区表(每个逻辑盘对应一张分区表)所在扇区的扇区数,值一般固定,等同于硬盘参数中的每磁头扇区数,现在的硬盘中的每磁头扇区数都为63个,即十六进制3F,在BPB表中体现为3F 00 00 00。

  在实际使用中发现,这个四字节的值除了与活动分区引导系统和格式化有关外,其它的读写操作并未发现有不良影响。

  记下刚才的BPB表中的四个字节后继续我们的第三步操作,并且在第四步操作中用DOS盘启动后不先进行FORMAT操作,而再次用DEBUG检查一下第三步的执行结果:

  A:\>DEBUG
  -L 100 3 0 1
  -D 11C L4
  3F 00 00 00
  -Q

  我们发现该值竟然被NT系统的格式化以FAT16的标准重写,而DOS启动盘中的FORMAT命令在针对FAT32格式的分区进行格式化时是通过该值进行确定逻辑盘的起始位置,被重写为3F 00 00 00后就刚好与我们的C盘的起始位置相同。现在执行完FORMAT D:或FORMAT D:/Q后,你的C盘的文件就只能看数据恢复软件有无回天之术了。

  在这里还发现NT系统的一个奇怪的现象,懂汇编的朋友可以在NT系统的命令提示符中用DEBUG查询一下虚拟DOS的版本号,居然为5.0版,在实DOS模式中的MSDOS5.0正好只支持FAT16而不支持FAT32,相信在其格式化FAT32格式分区时与填写BPB表中的四个字节有一定的联系。

  不只是在NT系统的窗口状态下的格式化,还包括在NT系统安装过程中的格式化、控制台中的格式化操作都会使FAT32格式分区的BPB表中的该值转写为FAT16标准,这就给习惯在DOS下处理问题的朋友留下的隐患。当你准备在实DOS模式下对FAT32格式的非主分区进行格式化时就得慎重了。上面实验的例子中,就算C盘已经转化成NTFS格式(FORMAT D:改成FORMAT C:),也难逃一劫。在网上不时会有朋友提起这类故障现象,希望上面的实验和分析,各位朋友能引以为鉴。

  预防:在不清楚自己或朋友机器上的FAT32格式的逻辑分区有没有经过NT系统格式化的情况下,如果真的需要在实DOS模式下进行格式化,可以先执行SYS命令(会修复上面提到的影响FORMAT的BPB表中的四个字节),再执行FORMAT命令,以减少不必要的损失。上面的第四步我们如果先执行A:\>sys d:再执行A:\>format d:/q,就可以正确无误地格式化D盘了。
作者: 不才    时间: 2010-3-21 18:50
嘿嘿,按楼上的介绍文章在虚拟机上试验了一把,结果显示文中所言不虚!
幸亏到目前为止,偶未曾有过上文所述的危险环境并实际操作,否则岂非要哭他个昏天黑地?
谢谢楼上的老兄将该文介绍给大家!
作者: 807979023    时间: 2010-3-21 20:33
dvd008真是高手,非常感谢你详细的解答。

经查,果然只有c盘和g盘引导扇区的1Ch-1fh字是3F 00 00 00,其它盘pq分区格式化后未动过,
1Ch-1fh字未被改;c盘我一般是dos下格式化,是否在pe下格式化过记不清了,也无影响。
按照你介绍的方法巳修复成功,现在dos下能正常格式化g盘,能够引导拷贝到g盘根目录上的PE。
看来xp2PE和2003PE的引导也虽要读取引导扇区的1Ch-1fh字,才能找到PE文件的位置,不知这
个结论是否正确。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3