无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: Climbing

[讨论]发现一个MS-DOS 7.10的bug:不能访问FAT32分区

[复制链接]
发表于 2007-7-11 15:11:15 | 显示全部楼层 |阅读模式
这里的MS-DOS 7.10是指DOS联盟论坛站长Wengier发布的MS-DOS 7.10,据我了解,它是Win98所带的DOS的改进版,去掉了98的启动logo。

事情是这样的:我在给硬盘分区时,经常会分出多个主分区(因为我一直喜欢将操作系统独立安装到某个主分区的方式,比多个操作系统共享主分区维护起来要简单),当然,总要保留一个扩展分区用于存放用户的数据(我的习惯是主分区安装操作系统及常用应用软件,而扩展分区的逻辑盘用来保存用户的数据和软件),在这些主分区中,我总是习惯使用FAT32文件系统,其中的某个主分区,我一般是为MS-DOS 7.10保留的,在上面我会放一些常用的DOS工具(例如ghost、pqmagic等)以用于系统维护,然后多分区启动菜单我习惯使用BootStar来管理(当然,现在用grub4dos也应该很不错,不过习惯是很难改变的,我还是一直使用BootStar),但这个分区上的DOS很容易出现启动故障:首先,DOS的引导扇区好像不是通用的,某个主分区只能使用特定的引导扇区(当然,我对DOS的引导扇区并不了解,不知道这样说对不对);其次,如果我在启动主操作系统时不用BootStar将这个DOS分区隐藏,那么可以使用BootStar自由的两个分区的操作系统之间切换,但一旦我在启动主操作系统分区时将DOS主分区隐藏了,再次从BootStar进入这个DOS主分区时就可能遭遇启动失败的情况(DOS的引导过程出现了问题,原因不明),这时候只能通过sys命令重新传送DOS系统才能修复这个启动错误,但这很麻烦。第三,很多时候,DOS不认这个DOS主分区,症状就是在XP下能够看到这个分区的所有内容,但进入DOS后,这个分区却是乱码或者根本不能访问(Invalid Media之类的提示),如果我在DOS下格式化这个分区,DOS可以访问了,但DOS下看到的内容和进入XP后看到的内容却不相同,真是奇哉怪也。

前天,我给同事的一台Sony VAIO笔记本重新安装系统,第一主分区是FAT32,安装XP Pro,第二主分区就是这个DOS分区,剩下的空间是扩展分区,由于我以前不断遭遇到DOS启动失败的情况,因此这次我就想改进这个DOS分区,尝试让它不再遇到启动失败的故障,办法当然就是不再使用不稳定的DOS引导扇区,怎么办呢?将引导扇区换成grub4dos的引导扇区(这个引导扇区是不会变化的),然后在用grubinst安装引导扇区到该DOS分区时使用-b命令指定一个特别的引导文件名(如myldr,也就是一个被我自定义了内置引导菜单的grldr),这样启动过程就变成了:grub4dos引导扇区 -> myldr -> MS-DOS 7.10,当然,myldr的内置菜单中使用这样的方式引导DOS:

title MS-DOS 7.10
find --set-root /myldr
chainloader /io.sys

真奇怪了,这样做能够正常引导起来DOS,但却提示输入command.com的路径,怎么会这样呢?

我突然发现,无论以何种方式引导到DOS状态,都无法看到DOS所在主分区的内容(内容是乱码),而在XP下这个分区的内容却可以正常显示,在grub4dos的命令行方式下用cat命令也可以正常访问这个DOS分区的所有内容,只有DOS自己访问不了它。

不知道经常使用DOS的各位有没有发现过这种问题,或者有没有什么好的解决办法,欢迎大家在这里提出来讨论。
发表于 2007-7-11 15:22:25 | 显示全部楼层
呵呵,终于有碰见出现这个情况的朋友了,以前就是看中Wengier的DOS体积小,但是使用后多次出现类似的情况,曾经在DOS论坛询问,但是几乎没人反映有类似情况出现,今天终于碰见了,呵呵,改MS原来的IO.SYS就OK了。
回复

使用道具 举报

发表于 2007-7-11 15:32:38 | 显示全部楼层
看来还是老老实实用原版的好。
改得再好,也难免会出问题。
回复

使用道具 举报

 楼主| 发表于 2007-7-11 16:01:17 | 显示全部楼层
是这样吗?看来我要督促Wengier再修改一下他的MS-DOS 7.10了。
回复

使用道具 举报

发表于 2007-7-11 20:41:16 | 显示全部楼层
那个是解除逻辑锁专用的。
回复

使用道具 举报

发表于 2007-7-12 01:14:16 | 显示全部楼层
没遇到这种情况,当然io.sys也不知道是哪个版的,同样是没logo的。

我经手的机器几乎全部都是多主分区的,不过我用的引导管理器是spfdisk的,一切正常。
回复

使用道具 举报

发表于 2007-7-12 08:12:35 | 显示全部楼层
路过............帮顶一下啦!
回复

使用道具 举报

 楼主| 发表于 2007-7-12 09:09:03 | 显示全部楼层

回复 #6 laozhao 的帖子

看来你遇到的还是少啦,这么多人都反映有问题,DOS联盟论坛还有人反映win9x全系列的DOS对多主分区支持都不太好,甚至都不能算是bug,而是缺陷。而且,这个跟启动管理软件没有什么关系了,因为启动管理软件只不过是在MBR中的分区表作手脚,启动到DOS后,跟它们就没有什么关系了。
回复

使用道具 举报

发表于 2007-7-12 09:21:49 | 显示全部楼层
DOS联盟论坛还有人反映win9x全系列的DOS对多主分区支持都不太好

如果是酱紫,那么win98自带的系统启动软盘也会出这问题啰?原版的IO.SYS会对已经在内存7c00段的分区表扫描了一遍,所以会死在循环分区上,而改过的IO.SYS会跳过分区扫描,也许问题就出在这。看来修改IO.SYS并不是一个好主意,也许我们在IO.SYS之前扫描在内存7c00段的分区表,把不良的分区表项从内存7c00段的分区表清掉才是一个好地解决办法。

[ 本帖最后由 netwinxp 于 2007-7-12 09:23 AM 编辑 ]
回复

使用道具 举报

发表于 2007-7-12 09:44:48 | 显示全部楼层
其实ms操作系统并不是直接从MBR读取分区表DPL(DOS Parameter List)和从分区引导扇区直接读驱动器参数块DPB(Drive Parameter Block),它是在启动过程中把内存中相应的参数信息保存到系统数据区,而像GHOST和一些分区软件则从MBR和分区引导扇区直接读,酱紫对于具有非常规的启动管理器,使用磁盘工具和一键还原有可能导致灾难性后果。这种情况经常发生在具有恢复光盘的笔记本和高端原装机、安装硬盘厂家提供的大硬盘支持工具、硬盘加密锁等。
回复

使用道具 举报

发表于 2007-7-12 09:50:24 | 显示全部楼层
下面是一些重要的DOS系统参数:
BPD       BIOS参数块(INT 21H/AH =53h)
CDS       当前目录结构(INT 21H/AJ=52h)
DPB       驱动器参数(INT21H/AH=32h)
DPL       驱动器分区表(INT 21H/AX=5D00h)
DTA       磁盘传输地址
FAT       文件分配表
FCB       文件控制块
SFT       系统文件表
SDA       DOS 可对换数据区
PSP         程序段前缀
回复

使用道具 举报

发表于 2007-7-12 10:43:43 | 显示全部楼层
原帖由 Climbing 于 2007-7-12 09:09 AM 发表
看来你遇到的还是少啦,这么多人都反映有问题,DOS联盟论坛还有人反映win9x全系列的DOS对多主分区支持都不太好,甚至都不能算是bug,而是缺陷。而且,这个跟启动管理软件没有什么关系了,因为启动管理软件只不过 ...



还有一个问题就是DOS7在多主引导分区和NTFS分区混合存在的情况下也会出现部分FAT32分区在实模式无法访问。
回复

使用道具 举报

发表于 2007-7-12 11:18:31 | 显示全部楼层
原帖由 紫狐 于 2007-7-12 10:43 发表



还有一个问题就是DOS7在多主引导分区和NTFS分区混合存在的情况下也会出现部分FAT32分区在实模式无法访问。

原版的IO.SYS应该不会吧?估计原版的IO.SYS会在扫描DBL时把不认识的分区项去除。
回复

使用道具 举报

发表于 2007-7-12 11:33:10 | 显示全部楼层
原帖由 Climbing 于 2007-7-11 15:11 发表
这里的MS-DOS 7.10是指DOS联盟论坛站长Wengier发布的MS-DOS 7.10,据我了解,它是Win98所带的DOS的改进版,去掉了98的启动logo。

事情是这样的:我在给硬盘分区时,经常会分出多个主分区(因为我一直喜欢将操 ...

你可以酱紫实现:
1、把DOS分区去掉隐藏,并激活
2、把MBR备份下来成为DOS.DAT
3、激活XP分区,并把DOS分区隐藏
4、把DOS.DAT放到XP分区的根目录下,在boot.ini中加入C:\DOS.DAT=DOS71
启动NTLDR菜单时选DOS71应该可以进入隐藏分区的DOS71,不过记得慎用它带的分区管理软件。

[ 本帖最后由 netwinxp 于 2007-7-12 11:35 AM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2007-7-12 12:16:55 | 显示全部楼层

回复 #14 netwinxp 的帖子

逻辑错误,你这种方法俺用了N年了,不是将MBR备份为文件,而是DOS引导扇区。你这只是提供了一种从NT启动菜单引导DOS的方法,就好像使用bootsect.dos类似,这没有用的,我现在并不是在启动DOS时遇到问题,而是DOS启动后看不到FAT32主分区的内容。

还有一点儿需要注意的就是:对于逻辑分区中的FAT32,DOS从来没有出过问题,都可以正常使用,只有在访问作为主分区的FAT32时才会遇到问题,当然,一般这个主分区都不是第一个主分区,而是第二个或者第三个。
回复

使用道具 举报

发表于 2007-7-12 14:27:09 | 显示全部楼层
windows98自带的DOS系统会不会遇到这个问题?(不是DOS71)
回复

使用道具 举报

 楼主| 发表于 2007-7-12 16:17:45 | 显示全部楼层
暂时来没有来得及测试98 DOS的兼容性,机器不在手边啊。
回复

使用道具 举报

发表于 2007-7-14 10:16:54 | 显示全部楼层
原帖由 netwinxp 于 2007-7-12 11:18 AM 发表

原版的IO.SYS应该不会吧?估计原版的IO.SYS会在扫描DBL时把不认识的分区项去除。



原版的IO.SYS也会,我碰见的情况和小石头的差不多,就是用第二个主分区启动DOS后,有一个主分区的文件不能访问,dir的时候出现乱码。
回复

使用道具 举报

发表于 2007-7-14 10:42:52 | 显示全部楼层
难怪一键还原要把隐藏分区创建到第一个:L。

[ 本帖最后由 netwinxp 于 2007-7-14 10:47 AM 编辑 ]
回复

使用道具 举报

发表于 2007-7-19 15:57:00 | 显示全部楼层
看来还是老老实实用原版的好。
改得再好,也难免会出问题。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 21:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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