中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-28 20:58
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 请高手把SRCMBR改造一下 查看 2,369 回复 33
16 发表于 2005-02-14 00:00 ·  中国 浙江 台州 电信
中级用户
★★
积分 447
发帖 126
注册 2004-02-10 00:00
22年会员
UID 17150
性别 男
状态 离线
已经完成备份分区表功能,运行命令行patition.exe /backup filename
生成的文件大小应为:512*n字节,n=主分区个数+扩展分区个数+MBR分区1个,例如你的分区为C盘主分区,扩展分区1个(逻辑盘符D、E、F等),IBM_SERVICE隐藏主分区1个,那么n=4,生成的filename文件大小为2K,用二进制编辑器打开查看,应有4个对应的55AA,分别位于1FF、3FF、5FF、7FF处。
本版本只能在支持超过8.4G硬盘的电脑上使用(好像没必要支持老的486甚至386吧),仅供测试读扇区正确性与否,未加入各种出错时的提示及处理,并关闭了写扇区功能,防止损害硬盘重要数据。如果大家测试无误,将于近日发行正式版。有什么建议,请现在提出,以后不再更新。

从来不用别人的东西,要用,也先改成自己的再说!
17 发表于 2005-02-14 00:00 ·  中国 广东 河源 电信
高级用户
★★
积分 916
发帖 201
注册 2003-05-04 00:00
23年会员
UID 1849
性别 男
状态 离线
请问CRSHEN,这个程序只支持最大137G的硬盘吗?是否可以支持超过200G的硬盘呢?

经刚才测试,这个程序可以将分区表备份成一个文件,但在恢复时却无效。
在下面操作前先用PATITION /BACKUP a.dat备份了分区表。
是这样测试的:硬盘分区主分区C盘及扩展分区(其中只有一个逻辑分区D盘),用PQMAGIC从C盘划出一块未用分区,再从D盘划出一块未用分区。
然后PATITION /RESTORE a.dat 但硬盘并没有恢复到原来未经PQMAGIC分区前的状态。
18 发表于 2005-02-15 00:00 ·  中国 浙江 台州 椒江区 电信
中级用户
★★
积分 447
发帖 126
注册 2004-02-10 00:00
22年会员
UID 17150
性别 男
状态 离线
不好意思,上面已经说清楚了,仅供测试读出扇区的正确性,而关闭了写扇区功能,所以不能用restore参数。这个程序利用LBA线性寻址方式,目前大多数的主板,它们使用的都是28位寻址方式,能读写逻辑块数理论极限是2的28次方即268435456块,容量为137G。为了兼容通用,程序只支持最大137G的硬盘。
从来不用别人的东西,要用,也先改成自己的再说!
19 发表于 2005-02-15 00:00 ·  中国 浙江 台州 电信
中级用户
★★
积分 447
发帖 126
注册 2004-02-10 00:00
22年会员
UID 17150
性别 男
状态 离线
放出分区表备份/恢复情人节测试版,可以备份扩展分区及隐藏分区!restore参数已开放。
存在问题:
1.未对备份的分区信息文件进行检测,如果指定文件出错,将引起灾难性后果(当然,如果有备份在软盘或优盘上,只要再重新恢复一次就O.K.啦)
2.本程序主要设计用于批处理,故出错提示较少,下面是返回的errorlevel值含义:
0:成功、1:创建备份文件出错,写保护?、2:指定文件不存在、3:读扇区出错、4:写扇区出错
下一步可能完善的方面:
1.对备份分区文件进行保护,采用某种校验方法(未定)
2.恢复时首先校验指定文件
3.可选择恢复某个分区

从来不用别人的东西,要用,也先改成自己的再说!
20 发表于 2005-02-15 00:00 ·  中国 贵州 遵义 移动
中级用户
积分 286
发帖 33
注册 2003-06-22 00:00
23年会员
UID 5696
性别 男
状态 离线
可用 Spfdiskhttp://spfdisk.sourceforge.net/
21 发表于 2005-02-15 00:00 ·  中国 广东 河源 电信
高级用户
★★
积分 916
发帖 201
注册 2003-05-04 00:00
23年会员
UID 1849
性别 男
状态 离线
谢谢crshen的努力!测试版经下面的测试方法:硬盘分区主分区C盘及扩展分区(其中只有一个逻辑分区D盘),用PQMAGIC从C盘划出一块未用分区,再从D盘划出一块未用分区。测试结果:恢复备份文件后,C盘能回到原来的样子,但D盘不能回到原来的样子,即依然有一块未用分区。
22 发表于 2005-02-16 00:00 ·  中国 浙江 台州 椒江区 电信
中级用户
★★
积分 447
发帖 126
注册 2004-02-10 00:00
22年会员
UID 17150
性别 男
状态 离线
在我自己的机子上测试是没问题的,昨天拿到单位的机子上时,也出现类似你说的情况,分析两台电脑分区不同点在于C盘即第一分区的大小有别,我的机子C盘>8.4G,故考虑当C盘太小时,导致后面的扩展分区表不能用扩展int 13写。而第一分区可以恢复,是因为专门加强了对MBR的保护。主要原因是我偷懒,判断分区类型只要不是00,就采用扩展int 13,测试又没问题,现在看来不行,等我修改一下。
从来不用别人的东西,要用,也先改成自己的再说!
23 发表于 2005-02-16 00:00 ·  中国 浙江 台州 电信
中级用户
★★
积分 447
发帖 126
注册 2004-02-10 00:00
22年会员
UID 17150
性别 男
状态 离线
分区表备份/恢复兼容版
改进:
凡是不能用扩展int 13读写的扇区,均改为int 13读写,兼容旧机子、小硬盘
对备份分区文件进行保护,恢复时首先校验指定文件
附带checksum.exe程序,用于在对备份的文件进行修改后,重新生成校验信息
返回的errorlevel值含义:0:成功、1:创建备份文件出错,写保护?、2:指定文件不存在、3:读扇区出错、4:写扇区出错、5.文件校验出错
从来不用别人的东西,要用,也先改成自己的再说!
24 发表于 2005-02-16 00:00 ·  中国 广东 河源 电信
高级用户
★★
积分 916
发帖 201
注册 2003-05-04 00:00
23年会员
UID 1849
性别 男
状态 离线
crshen兄,当C盘小于8.4G时正常,但调整至12G时,依然出现:恢复备份文件后,C盘能回到原来的样子,但D盘不能回到原来的样子,即依然有一块未用分区。
25 发表于 2005-02-16 00:00 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
强烈建议楼主再次公布源程序。很长时间没有接触C语言了,在前面的源程序中知道了使用Int 13访问硬盘的方法,但还不知道在TC 2.0中如何使用扩展的Int 13,因此,很希望看到新的源程序,以便继续学习。估计楼主也不反对让自己的程序越来越完善的吧?干脆就做成开源的得了。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
26 发表于 2005-02-16 00:00 ·  中国 浙江 台州 电信
中级用户
★★
积分 447
发帖 126
注册 2004-02-10 00:00
22年会员
UID 17150
性别 男
状态 离线
已找到问题所在,可能有些主板BIOS不支持校验并写盘,故现改为不校验直接写扇区,在两台电脑不同分区大小的情况下均按照walu的方法测试成功,放出的版本仍有不完善的地方,但已不影响使用。
应climbing要求,正在整理源程序,并加注释,即将发布,请大家共同完善。
从来不用别人的东西,要用,也先改成自己的再说!
27 发表于 2005-02-16 00:00 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
好东东啊好东东!期待源程序。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
28 发表于 2005-02-16 00:00 ·  中国 浙江 台州 电信
中级用户
★★
积分 447
发帖 126
注册 2004-02-10 00:00
22年会员
UID 17150
性别 男
状态 离线
硬盘分区表备份/恢复最终发行版
2005-02-16
by CRSHEN
使用方法:
patition.exe </backup|/restore|checksum> filename
/backup:备份分区表
/restore:恢复分区表
/checksum:如果对备份的分区表文件进行必要的修改,则用此参数重新计算校验值,对于文件末两位为55AA的禁止校验,因文件可能是其它程序备份的分区表。确信需要时,可用十六进制编辑器改为其它值再校验。
说明:
1. 生成的文件大小应为512*n+2)字节,n=主分区个数+扩展分区个数+MBR分区1个,两个字节为校验信息
2. 凡是不能用扩展int 13读写的扇区,均改为int 13读写,兼容旧机子、小硬盘
3. 对备份分区文件进行保护,恢复时首先校验指定文件
用于批处理:
返回的errorlevel值含义:
0:操作成功、1:创建备份文件出错,写保护?、2:指定文件不存在、3:读扇区0出错、4:写扇区0出错、5.文件校验出错
免责声明:
本程序仅供研究参考,如果不明白用途,建议不要随便尝试
对使用不当,造成数据丢失等后果者,概不负责。

从来不用别人的东西,要用,也先改成自己的再说!
29 发表于 2005-02-16 00:00 ·  中国 浙江 台州 椒江区 电信
中级用户
★★
积分 447
发帖 126
注册 2004-02-10 00:00
22年会员
UID 17150
性别 男
状态 离线
源程序已发布,需要者可自行下载修改
从来不用别人的东西,要用,也先改成自己的再说!
30 发表于 2005-02-17 00:00 ·  中国 河北 石家庄 联通
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
23年会员
UID 1565
性别 男
来自 河北保定
状态 离线
发现了crshen程序中的一个大漏洞(希望真的是漏洞,我水平太洼,暂时只是感觉如此),相关资料发在了51ct.net论坛了,希望crshen朋友再接再励,继续完善程序,相关帖子链接如下:http://www.51ct.net/bbs/read.php?tid=500&fpage=1再次感谢你付出的辛苦劳动,如果我再年轻5岁,估计这个程序我可以自己改善一下。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
论坛跳转: