zsqzsqzsq 发表于 2012-8-2 16:44:34

关于32位Windows XP系统支持3TB硬盘的测试

关于32位Windows XP系统支持3TB硬盘的测试
-----------------------------------------------------------
1.测试的硬件环境
THINKPAD X61
X6系列底座
X6系列底座光驱位硬盘托架
ST3000DM001希捷3TB硬盘 +ORICO 7618SUS3硬盘盒(USB3.0+ESATA)
WD20EARS西数2TB硬盘 + 元谷科技存储巴士T280硬盘盒(USB3.0)
自制的SATA硬盘供电电源(12V转5V1.2A)
2.题外功课:破解X6系列底座光驱位硬盘托架(首创)
a. X6系列底座光驱位硬盘托架有一个功能,会检测硬盘是会装在托架上,如果没有检测到,
   则BIOS程序不会探测挂在这个SATA口上的硬盘,对于2.5英寸SATA硬盘没有问题,但对于3.5英寸SATA硬盘
   则没办法通过SATA延长线(数据线)接入硬盘托架SATA口。
b. 2.5英寸SATA硬盘和3.5英寸SATA硬盘供电不一样,前则只需要+5V,后者需要+12V和+5V,
   这就是为什么要自制的SATA硬盘供电电源的原因。
c. 通过拆开硬盘托架检查电路板发现,检测硬盘是否装入是通过SATA电源口第5脚做到的,如果第5脚对地短路
   则系统会认为硬盘已装到托架上,如果开路,系统则认为硬盘没有装到托架上。因此破解办法是把第5脚对
   地短路。这样3.5英寸SATA硬盘也可以接入了。
d. 使用3.5英寸SATA硬盘有一个前提:就是在开机要把硬盘先接上并上电,否则BIOS程序会侦测硬盘错误。
   另还发现一个特别之处就是无法通过硬盘盒(ORICO 7618SUS3)的ESATA口接入,必须是裸硬盘接入。
   而X61的主SATA口则可以通过硬盘盒(ORICO 7618SUS3)的ESATA口接入
   
3.测试的软件环境
a.Windows 7 sp1 x64 + Windows SP3双系统,并装好X61的所有驱动。
b.DiskGenius 3.8专业版
c.Windows 2003 SP2的disk.sys文件
d.Paragon_GPT_Loader.msi
4.测试准备
将ST3000DM001和WD20EARS硬盘用DiskGenius 3.8专业版分别格式化为一个GPT分区。
5.原系统的测试情况
a.将ST3000DM001接入硬盘托架SATA口.
    硬件管理器能识别ST3000DM001,但在磁盘管理器中被识别为一个746.52G的GPT保
    护分区,无法为这个磁盘分配盘符。
b.将WD20EARS接入硬盘托架SATA口.
    硬件管理器能识别WD20EARS,在磁盘管理器中被识别为一个1863.02G的GPT保
    护分区,但无法为这个磁盘分配盘符。
c.将ST3000DM001通过硬盘盒接入USB口.
    硬件管理器能识别ST3000DM001,但在磁盘管理器中无法识别这个磁盘。
d.将WD20EARS通过硬盘盒接入USB口.
    硬件管理器能识别WD20EARS,在磁盘管理器中被识别为一个1863.02G的GPT保
    护分区,但无法为这个磁盘分配盘符。
6.disk.sys替换法的测试情况
    在Windows 7 sp1 x64系统将Windows SP3系统%windir%\system32\drivers\disk.sys
    替换为Windows 2003 SP2的disk.sys文件,替换前做好原disk.sys备份。
    同时将%windir%\Driver Cache\i386\driver.cab和sp3.cab重命名,防止系统将disk.sys恢复。
a.将ST3000DM001通过硬盘盒接入USB口.
    硬件管理器能识别ST3000DM001,但在磁盘管理器中无法识别这个磁盘。
b.将WD20EARS通过硬盘盒接入USB口.
    硬件管理器能识别WD20EARS,在磁盘管理器中被识别为一个1863.02G的分区,
    会为这个磁盘分配盘符,可以正常使用。
c.将ST3000DM001接入硬盘托架SATA口.
    硬件管理器能识别ST3000DM001,但在磁盘管理器中被识别为一个2794.52G的分区,
    会为这个磁盘分配盘符,可以正常使用。
d.将WD20EARS接入硬盘托架SATA口.
    硬件管理器能识别WD20EARS,在磁盘管理器中被识别为一个1863.02G的分区,
    会为这个磁盘分配盘符,可以正常使用。
7.Paragon_GPT_Loader法的测试情况
    恢复Windows SP3系统原版的%windir%\system32\drivers\disk.sys,
    安装Paragon_GPT_Loader.msi
a.将ST3000DM001接入硬盘托架SATA口.
    硬件管理器能识别ST3000DM001,但在磁盘管理器中被识别为一个2794.52G的分区,
    会为这个磁盘分配盘符,可以正常使用。
b.将WD20EARS接入硬盘托架SATA口.
    硬件管理器能识别WD20EARS,在磁盘管理器中被识别为一个1863.02G的分区,
    会为这个磁盘分配盘符,可以正常使用。
c.将ST3000DM001通过硬盘盒接入USB口.
    硬件管理器能识别ST3000DM001,但在磁盘管理器中无法识别这个磁盘。
d.将WD20EARS通过硬盘盒接入USB口.
    硬件管理器能识别WD20EARS,在磁盘管理器中被识别为一个1863.02G的分区,
    会为这个磁盘分配盘符,可以正常使用。
8.结论
要在32位Windows XP SP3下使用3TB硬盘(数据盘),必须具备以下条件:
    a.使用GPT硬盘格式
    b.Paragon_GPT_Loader或disk.sys替换法
    c.硬盘必须是内置硬盘(SATA或IDE接口接入),不能是外置硬盘(USB接口接入)


                                                               ZSQZSQZSQ
                                                                  2012.08.02

katar1024 发表于 2013-1-26 14:42:30

回复 #1 510819776 的帖子

自用1.0PE集成与测试成功!
感谢楼主!

gzadsl 发表于 2013-1-30 18:42:17

学到野了,谢谢

2013happyicon 发表于 2013-2-5 13:42:22

XP32 用 disk.sys+GPT格式+内置硬盘 (在W7下分割再拿到XP32用)
做一分割,写资料超过2T就出问题,要重做分割
做二分割(2000+747),一写资料到747这个分割就出问题,要重做分割 (写到2T这里没问题)

copy 2T要很久,我搞了4次,总有一天还是要用W7。

[ 本帖最后由 2013happyicon 于 2013-2-6 14:59 编辑 ]

2011150 发表于 2013-2-22 17:00:41

一个文件的原因,知道也好。

斐扉 发表于 2013-3-26 20:30:26

正好买了个3T硬盘,xp下死活只认7百多G,试试了。

tlze 发表于 2013-4-12 15:20:18

谢谢!下载来用用。

peihong998 发表于 2013-4-12 15:34:24

谢谢楼主分享!下载试试看。

夜夜夜夜 发表于 2013-7-5 16:33:55

楼主 您好 我按你写的 替换了文件 还是不能识别啊 4T移动硬盘用的GTP分区 分了4个去 插上了为什么没有反应?USB可以认 但是在硬盘管理里面看不到硬盘

zds1210 发表于 2013-7-6 10:47:41

这个简单真正有效,我测试过成功了。我的全打包统一PE,就是用原版的老毛桃扬州PE,不识别gdt磁盘,后来自己更新后搞定,也可以挂载esp
分区了、

youxihehe 发表于 2013-7-8 09:13:29

来试试,这个东东!

chumu2012 发表于 2013-7-8 12:35:55

我看了一下相关的教程
替换后启动XP会检测这个是不是自己的DISK.SYS吧
貌似是那个什么SFC之类的东西作怪

CMVCMV 发表于 2013-7-17 11:58:22

希望能够正常使用

StoneYU 发表于 2013-7-17 12:30:56

楼主,有一个问题请教,如果把03的disk.sys直接整合到xp的iso启动光盘里,即放到i386文件夹下,是否可以直接可以支持gpt分区

fukystone 发表于 2013-7-24 11:35:09

貌似有这样一个问题,各位老大看看怎么解决:
1、不替换disk.sys,在xppe下可以用diskgenius对gpt硬盘进行分区操作--虽然分好的区不能被xppe识别
2、替换disk.sys,在xppe下用diskgenius对gpt硬盘进行分区操作会报错(0000001,函数不正确),但是可以识别已经分好区的gpt硬盘。

NicTense 发表于 2013-7-24 12:05:04

fukystone 发表于 2013-7-24 11:35 static/image/common/back.gif
貌似有这样一个问题,各位老大看看怎么解决:
1、不替换disk.sys,在xppe下可以用diskgenius对gpt硬盘进行 ...

disk.sys貌似从classpnp.sys调用某些函数,你试一下把这个文件也换成2003同版本的看行不行

2010techon 发表于 2013-7-24 13:15:19

最好不要直接文件替换,内核里还有哪些东西可能需要修改,否则可能导致稳定性或兼容问题

fukystone 发表于 2013-7-24 14:12:00

NicTense 发表于 2013-7-24 12:05 static/image/common/back.gif
disk.sys貌似从classpnp.sys调用某些函数,你试一下把这个文件也换成2003同版本的看行不行

不行。
这个文件牵涉就大了,它会造成cdrom.sys文件版本不对,即使把cdrom.sys替换为2003的也不行

NicTense 发表于 2013-7-24 15:05:02

fukystone 发表于 2013-7-24 14:12 static/image/common/back.gif
不行。
这个文件牵涉就大了,它会造成cdrom.sys文件版本不对,即使把cdrom.sys替换为2003的也不行



搞不懂这种底层级别的关系
这个storport.sys不知道你驱动里有没有
这个按理说xp是不支持的,所以正常情况下应该是用不着的
但是换了disk.sys之后我就不清楚了
虽然解决的可能性不大,不过如果驱动力没这个文件不妨试一下

fukystone 发表于 2013-7-24 19:08:07

NicTense 发表于 2013-7-24 15:05 static/image/common/back.gif
搞不懂这种底层级别的关系
这个storport.sys不知道你驱动里有没有
这个按理说xp是不支持的,所以正 ...

还是不行。
比较搞笑的是,跟踪diskgenius的结果,发现它既没有调用disk.dll,也没有调用classpnp.dll。
跟踪的结果,所谓的函数大概就是“ioctl_disk_set_drive_layout_ex”,唉,果然超出我的能力范围啦……

fukystone 发表于 2013-7-24 19:19:07

本帖最后由 fukystone 于 2013-7-24 19:20 编辑

嗯,进一步的分析,发现虽然报错,但是分区其实是已经完成的--重启后发现分区正常。
所以报错应该是diskgenius重新读取分区表信息失败造成的……
所以这个修改还是值得的,天使可以考虑加入这个补丁。同时包括那个mountesp,只有6k,值得加入

NicTense 发表于 2013-7-24 20:08:14

mountesp和显示隐藏分区的处理方式一样需要的时候手动点比较好,不去操作他的时候还是不要挂载efi分区比较好,避免误操作
$IOCTL_DISK_SET_DRIVE_LAYOUT_EX不知道是不是在user32.dll里,我电脑上没有任何编程工具,我现在也不知道用啥个工区去查那些库文件包含了哪些函数了
这个函数处理GPT分区的时候要用到,而xp本身不支持GPT分区,所以可能完美的处理方式是把2003的这个函数提出来,加到(或者替换)xp里的这个函数,对应的文件不知道是不是user32.dll,我好多年没编程了,全忘光了,现在也没可能花时间去学习这些用不着的东西了,等编程高手来弄吧
官方对这个函数的介绍有这么一段
When specifying a GUID partition table (GPT) as the PARTITION_STYLE of the CREATE_DISK structure, an application should wait for the MSR partition arrival before sending the IOCTL_DISK_SET_DRIVE_LAYOUT_EX control code.

freesoft00 发表于 2013-7-25 13:14:57

NicTense 发表于 2013-7-24 20:08 static/image/common/back.gif
mountesp和显示隐藏分区的处理方式一样需要的时候手动点比较好,不去操作他的时候还是不要挂载efi分区比较好 ...

DLL Export Viewer这个软件可以看它的函数吧

NicTense 发表于 2013-7-25 13:30:15

freesoft00 发表于 2013-7-25 13:14 static/image/common/back.gif
DLL Export Viewer这个软件可以看它的函数吧

呵呵,下载了,有空研究一下

guid分区表对硬盘大小有没有限制的,我有一堆没用的几十G的硬盘可以拿来玩,坏了就直接丢了,也不怕弄坏数据

kcyou 发表于 2013-7-26 00:51:26

我发现tangope新老版本里disk.sys和这个是一样的,本事就支持GPT分区,我将U盘分成这种分区类型,能完美识别和操作。

NicTense 发表于 2013-7-26 01:21:54

列了3万多个函数出来,竟然没有那个函数

fukystone有没有试过原版TangoPE有没有这个问题?

fukystone 发表于 2013-7-26 10:17:19

NicTense 发表于 2013-7-26 01:21 static/image/common/back.gif
列了3万多个函数出来,竟然没有那个函数

fukystone有没有试过原版TangoPE有没有这个问题?

试过,原版也是一样的。
不过其实不影响使用,这个不改也可以,只是报个错而已。一般情况下,我们分完区也会重启一下的……

lorhorn 发表于 2013-7-27 14:58:10

DISK.SY_文件替换法太给力了,xppe重新焕发了生机,可以识别guid 分区硬盘。昨晚自己连续测试了两块小硬盘,用DG专业版分别无损转换guid 分区,xppe 就不能识别和读写了,只能通过分区软件看到。把DISK.SY_替换进的xppe,就能正常读写和操作guid分区的硬盘(现在就差拿真正的GPT大容量硬盘来测试替换后的xppe)。   
   这对于winxp操作系统同样也绝对给力。

lorhorn 发表于 2013-7-27 15:47:42

fukystone 发表于 2013-7-24 11:35 static/image/common/back.gif
貌似有这样一个问题,各位老大看看怎么解决:
1、不替换disk.sys,在xppe下可以用diskgenius对gpt硬盘进行 ...

昨天测试时,也是这个思路,2块小硬盘,不替换disk.sy_- xppe,DG分为GPT区,xppe不能识别和操作该硬盘了,但DG和其他分区软件能识别该硬盘的存在。然后xppe替换了disk.sy_,进行正常读写操作,于是用DG想无损转回原来的分区格式,出现错误提示(参数溢出),点自动查找错误并恢复按键,DG自动查找给出的原因是从guid转回mgr,硬盘未确认活动分区 。   正常转回mgr,数据安好。

lorhorn 发表于 2013-7-27 15:49:38

两块硬盘都出现错误提示,从guid转回mgr 确认下活动分区就OK,DG错误提示就没了
页: 1 [2] 3 4 5
查看完整版本: xp系统支持gpt分区硬盘启动