中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-10-24 14:18
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » [讨论]纯dos下如何准确判断系统盘位置 查看 2,677 回复 12
楼 主 [讨论]纯dos下如何准确判断系统盘位置 发表于 2010-10-08 09:23 ·  中国 湖北 武汉 电信
新手上路
★
积分 18
发帖 13
注册 2010-08-30 17:27
16年会员
UID 173270
性别 男
状态 离线
多硬盘环境,多活动分区,已知各分区和各盘符等。
在纯dos下采用什么方法可以判断出要备份的系统盘位置?
我想到的一个方法就是通过xp或win7下专有的文件来判断,不知道准确度如何,想听听大伙的想法。
第 2 楼 发表于 2010-10-09 23:06 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
这种情况下建议不要做什么智能判断
让用户自己选择是最好的办法

因为智能选择针对的都是初级用户
而这类用户绝难出现上述复杂情况

而对使用上述环境的进阶用户
通常也不需要自作主张去替对方做决定
因为对方可能有自己独特的需求
比如数据区或者多分区备份

况且分区情况简单起来可以很简单
复杂起来也可以很复杂
多硬盘、多活动分区、多文件系统、多系统、跨分区系统
等种种复杂的情形难以尽数
第 3 楼 发表于 2010-10-10 09:20 ·  中国 湖北 武汉 电信
新手上路
★
积分 18
发帖 13
注册 2010-08-30 17:27
16年会员
UID 173270
性别 男
状态 离线
的确是这么回事,感觉很复杂。
谢谢!

如果用唯一的文件或目录来判断应该比通用的windows这种形式要准备多了吧!

[ Last edited by bugs on 2010-10-10 at 09:22 ]
第 4 楼 发表于 2010-10-10 09:55 ·  中国 上海 浦东新区 电信
金牌会员
★★★★
积分 3,467
发帖 1,616
注册 2004-06-21 00:00
22年会员
UID 27148
状态 离线
在windows下先在系统盘建一个临时识别文件或文件夹。然后重启进入dos,操作完后删除这个标识文件
第 5 楼 发表于 2010-10-12 23:54 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
我的建议仍然是不要考虑什么多硬盘、多分区
智能选择只需要将目标指向第一硬盘第一分区即可
毕竟这是超过90%的用户情况
而对于其它10%的用户留一个手动选项就足够了

须知越智能的程序通常越复杂
也就意味着越容易出BUG
你往往会发现
在你花费90%的精力解决10%的问题之后
你的代码的体积增大了10倍甚至更多
这就意味着出现新问题的概率增加了100倍甚至更多
舍,得之间的平衡把握是需要足够的考量
第 6 楼 发表于 2010-10-13 14:49 ·  中国 湖北 武汉 电信
新手上路
★
积分 18
发帖 13
注册 2010-08-30 17:27
16年会员
UID 173270
性别 男
状态 离线
感谢回复!
如果在系统盘设定了唯一的文件存在,判断有什么可能性会出错呢?
第 7 楼 发表于 2010-10-13 16:06 ·  中国 北京 门头沟区 光环新网联通数据中心
银牌会员
★★★
积分 1,455
发帖 712
注册 2006-01-20 10:26
20年会员
UID 49246
状态 离线
Originally posted by qzwqzw at 2010-10-12 23:54:
我的建议仍然是不要考虑什么多硬盘、多分区
智能选择只需要将目标指向第一硬盘第一分区即可
毕竟这是超过90%的用户情况
而对于其它10%的用户留 ...

嘿嘿,严重同意!
第 8 楼 发表于 2010-10-13 20:38 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
Originally posted by bugs at 2010-10-13 14:49:
感谢回复!
如果在系统盘设定了唯一的文件存在,判断有什么可能性会出错呢?

还真是执着啊

“如果在系统盘设定了唯一的文件存在”
既然已经知道系统盘又何须判断系统盘
这岂不是一个逻辑上的佯谬?

我知道你的意思是
做文件标记在WIN下
读文件标记在DOS下

但是我想问你你又是如何在WIN下确认系统盘的呢?
环境变量、WMIC、系统文件或者其他更高级的技术吗?
须知这些所有的技术都无法解决多系统的问题
尤其是跨平台多系统的问题

你在引导到第X分区的Windows系统下
敢确认第Y分区就一定不是系统分区
从而不需要备份吗?

如果你在WIN下都确认不了系统盘
又如何去做让DOS下程序去识别的标记?

况且使用文件作为分区标记
其实是殊为不智的行为
因为这样在程序设计上
就不得不把分区操作与文件操作混为一坛
而我们知道他们实际上是两个层面的东西
在这两个层面的关系对应上
即时专业软件都未必能做的很好
何况自编代码
分区号对盘符是那么简单的吗?

[ Last edited by qzwqzw on 2010-10-13 at 20:44 ]
第 9 楼 发表于 2010-10-13 22:33 ·  中国 湖北 武汉 电信
新手上路
★
积分 18
发帖 13
注册 2010-08-30 17:27
16年会员
UID 173270
性别 男
状态 离线
我假设个环境吧。
有3块硬盘,每块硬盘都各有2个分区,对应关系如下:
1-1 C xp
1-2 D win2003
2-1 E
2-2 F
3-1 G win7
3-2 H

如果要对win2003系统做备份,启动到系统里,获知了对应分区是1-2 D盘,然后我在D盘里生成一个标记文件,然后在dos检测标记文件,检测到就是需要备份的系统,这样判断有问题吗?

我没看明白你说的问题在哪里,请指点下,感谢!
第 10 楼 发表于 2010-10-14 22:09 ·  中国 山西 运城 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线
那你的意思
用户要决定备份哪个系统
就需要首先启动到对应系统下
然后运行你的软件重启到DOS下再进行备份
而不是在某一个系统下备份其它系统所在的分区

照这样看来
你是不准备考虑哪些Linux系统的用户了
而是单纯想做成类似Windows下一键备份还原的程序了

这个过程实际上牵涉到3个过程
写标记文件到你认为的当前系统分区
重启到一个DOS Shell下
在DOS下按顺序读所有盘符下的标记文件
最后按照盘符备份和恢复系统

先看过程1
如果系统引导程序在第一分区
系统主文件夹在第二分区
你认为该备份哪个分区?

如果系统很不巧的采用动态磁盘
那么除了简单卷
跨区卷、带区卷、RAID-5卷都会多个磁盘空间合并到一个卷中
你认为该备份哪个分区?

如果系统使用了NTFS文件系统
并且使用MountPoint将其它数据分区挂载成系统卷一个目录
你的文件标记有没有可能正好写到这个MountPoint目录中

如果启动的是一个PE系统
系统卷位于内存虚拟盘上
重启后又该如何备份?

如果启动的是一个无盘工作站Windows
那又该如何备份?

如果启动的是一个带有影子系统或者还原卡的Windows的系统又该怎么办?

再看过程2
重启后启动到DOS
看似简单
只需要想系统卷下的boot.ini写个引导入口
然后使用grldr或者bootsect.dos的方式就可以启动了
问题是引导分区必须要指定启动分区盘符或者分区号
而碰到类似的过程1的问题一样抓瞎

最后看过程3
进入DOS后读标记文件
如果硬盘有NTFS分区必须挂载NTFS驱动
而无论什么驱动基本上都是光驱驱动之后
再加上可能会插入的USB引导设备也会被加载
这就使DOS下盘符顺序与物理分区顺序大相径庭
而光驱盘符很可能会混淆在其中
如果光驱中恰好没有放光盘
那么遍历所有盘符读文件的时候
读到没有光盘的光驱必然会报错
错误处理又需要一堆代码
然后是不断地排错……
第 11 楼 发表于 2010-10-14 22:25 ·  中国 湖北 武汉 电信
新手上路
★
积分 18
发帖 13
注册 2010-08-30 17:27
16年会员
UID 173270
性别 男
状态 离线
过程1:
1.拿xp来讲,启动是通过ntldr来读boot.ini文件启动系统。我不太清楚如何可以让启动文件ntldr和windows主目录分开?
请告知你的方法,我好测试。

2.至于你讲的很不巧采用动态磁盘的系统
这点不成立。因为动态磁盘在xp,2003在安装过程中会提示无法识别,不会安装上系统。
win7下是否也如此我不清楚,稍后有空做个测试。

3.使用MountPoint将其它数据分区挂载成系统卷一个目录
这种方法我第一次听说。如果标识文件是在系统盘根目录,这个应该不是问题。

4.我不知道有多少人平常使用电脑是在PE环境下,所以的确没想过这方面,我还得再想想。

5.我认为无盘系统没有做系统备份的需求。

6.影子系统我没用过不太清楚,有空我也会安装测试下。
但是带有还原的系统,硬还原和软还原我都有接触,在还原未保护的情况下实在想不通它们和正常系统有和不一样的地方。
就算在还原开启状态下做了系统恢复,除了冰点需要做一些处理,其它还原系统都会正常运行。(我所接触过的还原系统软件比较少,只有冰点,网维,易游,迅闪等)

过徎2,3
我是不是可以理解为在dos下识别硬盘分区编号和盘符的问题?
如果是这样的话应该没问题。

[ Last edited by bugs on 2010-10-15 at 18:47 ]
第 12 楼 发表于 2010-10-16 18:36 ·  德国 巴伐利亚州 纽伦堡
金牌会员
★★★★
积分 3,467
发帖 1,616
注册 2004-06-21 00:00
22年会员
UID 27148
状态 离线
1. 选择安装系统到非激活主分区,ntldr和windows文件夹就在不同的分区

2.可以装完系统在转换成动态磁盘

3. 理论上可以把启动分区挂在一个文件夹中而不分配盘符,我以前这样用过一阶段,把ntldr所在分区挂在c:盘boot文件夹下。
第 13 楼 发表于 2010-10-21 07:19 ·  中国 湖北 武汉 电信
新手上路
★
积分 18
发帖 13
注册 2010-08-30 17:27
16年会员
UID 173270
性别 男
状态 离线
1.系统引导文件文件和系统目录分离
在虚拟机模拟的环境:
1-1 活动主分区
1-2 主分区
1-3 扩展分区

WinXP系统:1-1下有ntldr,boot.ini,bootfon.bin,ntdetect.com,msdos.sys,io.sys,其它文件目录在1-2
Win7 系统:1-1下有boot目录和bootmgr,其它文件目录在1-2

也就是说检测到是这种使用环境,只需要对相应文件做处理就可以了。
如果不在乎备份文件体积的话可以把1-1,1-2一起做备份,不过我觉得好像没这个必要。

2.动态磁盘
先说跨区卷,带区卷等...
如果采用了除了简单卷外的其它类型,ghost是识别不了的,没办法做备份。所以我觉得没必要对这种类型做处理了。

再来说简单卷
我现在用ifs,支持ntfs/ext2/ext3和隐藏分区,但不支持动态磁盘 - -!
ntfs4dos支持动态磁盘,但其它又不支持。
要在简单卷和ext2/ext3,隐藏分区之间做选择,我选后者。
如果你有更好的办法可以同时识别各种分区类型可以告诉我,谢谢!

3.启动分区挂在一个文件夹中而不分配盘符
我没找到用什么软件或方法可以模拟这种环境,请告诉下,谢谢!
论坛跳转: