无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
楼主: hotdll
打印 上一主题 下一主题

[求助] 进行磁盘交换后直接map时会在chainloader 时出现读磁盘错误,求解。

[复制链接]
61#
发表于 2011-10-27 16:12:14 | 只看该作者
后面的信息中
F1是正常的
F2是失败的

F2的TO_C _H _S数据不一样。

F3是加载到内存中的。
回复

使用道具 举报

62#
 楼主| 发表于 2011-10-27 17:19:26 | 只看该作者

回复 #61 chenall 的帖子

很佩服c大测试代码的简要和严谨。
我啰嗦了一大堆,您几句代码就揪出BUG
不过,
C大,为什么map --mem 正常?

[ 本帖最后由 hotdll 于 2011-10-27 17:21 编辑 ]
回复

使用道具 举报

63#
发表于 2011-10-27 17:50:15 | 只看该作者

回复 #62 hotdll 的帖子

map --mem是直接读取到内存中了,不需要转换,但直接map不一样,需要转换.
回复

使用道具 举报

64#
 楼主| 发表于 2011-10-27 18:08:25 | 只看该作者

回复 #63 chenall 的帖子

明白了。等c大的最新版的g4d版本。
接下来我可以专心更新我的F6IMG到将厂商打包成gz了。
先谢谢ZXW大大、C大,不点,幸运的草、百草霜、赵大等兄弟的帮测。
回复

使用道具 举报

65#
发表于 2011-10-27 18:44:02 | 只看该作者

回复 #60 chenall 的帖子

问题明了了,其实很早就怀疑是BUG,但又苦于无证据,所以我等不能随便说。
其实楼主发帖前我们就进行了很多测试,一直找不到原因。
发贴是想引起G4D高手们的注意,特别是要引起你和不点的注意,目的是要弄清问题的原因。

看了你的那个回复,对您有点小小的失望,所以给了您一个“刺激”。
望C大不要在意,对您的辛勤工作深感敬佩。
回复

使用道具 举报

66#
发表于 2011-10-27 20:18:25 | 只看该作者
越来越接近真相了,我说怎么fbinst制作的U盘的占用(fd0)处理怎么这么麻烦(都想放弃用FBINST制作的启动盘了),map交换软驱后总有问题。明明交换成功,DOS启动文件已经在(fd0),却总是启动有点问题或无法启动。不过,我上次提到的map 交换软驱后,(fd1)丢失的机器还没有机会再去测试,确定问题在哪里。

我曾经试过下面的代码:
map (fd0) (hd0)
map --hook

发现是(fd0,0)映射到了(hd0,0),而(fd0)是UD区内容
再接着
map --mem (hd0)/dos.img (fd0)
map --hook
好像是出现问题了(有点记不清了),(hd0,0)好像就不能访问了。

考虑到原(fd0)是UD区,可能有问题,再用下面的代码测试:
map (fd0) (hd0)
map (fd0) (fd1)
map --hook
发现是(fd0,0)映射到了(hd0,0)和(fd1,0),(fd0)和(fd1)均是UD区内容。发现(fd0)与(fd0,0)在map时有联动效果。
再接着
map --mem (hd0,0)/dos.img (fd0)
map --hook
可以发现(fd0)内容为DOS映像内容,但再使用chainloader (fd0)/io.sys启动,却无法成功启动DOS(可能就是C大说的C、H、S参数不正确的原因,也就是交换后(fd0)的C、H、S参数不是dos.img的C、H、S参数)。

最后没办法只能用下面的代码启动DOS。
map --mem (fd0,0)/dos.img (fd1)
map --hook
map (fd0) (fd1)
map (fd1) (fd0)
chainloader (fd0)/io.sys
难道这样(fd0)的C、H、S参数才会正确???
不过那台有问题的电脑就是在这个过程中出现了(fd1)丢失现象。

[ 本帖最后由 mygamexxx 于 2011-10-27 21:10 编辑 ]
回复

使用道具 举报

67#
发表于 2011-10-27 21:17:49 | 只看该作者
  1. Fr To Hm Sm To_C _H _S   Start_Sector     Sector_Count   DHR
  2. -- -- -- -- ---- -- -- ---------------- ---------------- ---
  3. 80 00 00 01 004F 01 52 0000000000000000 0000000000000000 F=S
  4. F1 00 FE 3F 234C 3F 7F 000000000001D29C 000000000003FDE0 F=S
  5. F2 00 FE 3F A04F 01 52 000000000001D29C 000000000003FDE0 F=S

  6. F1是正常的
  7. F2是失败的
复制代码
初步怀疑是这样的:第一个映射是整盘映射,此时没有仔细计算真实磁盘 (fd0) 的 geometry。就是说,第一行的 004F 01 52 是错的。

而在仿真 0xF1 的时候,却计算了 (fd0) 的几何参数 234C 3F 7F(应该是正确的),因此 0xF1 可以正常访问。

当 (fd0) 也变成虚拟盘的时候,又影响(误导)了仿真 0xF2 时 (fd0) 的几何参数计算。导致它采纳了第一个映射中的错误几何参数值 004F 01 52 。

在第一个映射中,几何参数是用不上的,因为是整盘映射。所以,几何参数的错误,没有对 (hd0) 造成任何影响。

chenall 再研究研究,看看如何解决比较好。

============

我目前正在处理 lianjiang 以前报告的图形模式花屏问题,以及 800x600 的 6A 模式失败问题。

已经上载了新版本到时空论坛,请大家注意测试。应该没有大问题了。

等 chenall 弄好此处的 map 以后,可以一并更新到 svn 数据库里面。

[ 本帖最后由 不点 于 2011-10-27 21:27 编辑 ]
回复

使用道具 举报

68#
 楼主| 发表于 2011-10-27 22:13:28 | 只看该作者

回复 #67 不点 的帖子

谢谢不点和C大,估计要辛勤劳动了。
等g4d更新后,我就把F6IMG的单包GZ驱动版发布。
呵呵,这样USB-ZIP的F6IMG速度也是很喜人的。
回复

使用道具 举报

69#
发表于 2011-10-28 10:13:51 | 只看该作者
我怀疑不是map的BUG,而是FBINST制作的启动盘在被识别为USB-ZIP后,必须占用一个软驱,如果(fd0)被覆盖(实际是UD区,并在0x82b8中记录了位置),就会有问题。

我现在通过下列办法测试没有问题
map --mem (fd0,0)/dos.img (fd1)
map --hook
map (fd0) (fd1)
map (fd1) (fd0)
map --hook
calc *0x82b9=*0x82b9&0xffffff00|0x01    #将UD区指向(fd1)
map (fd1) (hd)
map --hook
root (fd0)
chainloader /io.sys
顺利启动DOS。
回复

使用道具 举报

70#
发表于 2011-10-28 10:15:49 | 只看该作者
先上传一个测试,,,,<br /><br />理论上应该是没有什么问题.

[ 本帖最后由 chenall 于 2011-10-28 11:10 编辑 ]
回复

使用道具 举报

71#
发表于 2011-10-28 11:03:42 | 只看该作者

回复 #70 chenall 的帖子

貌似改出问题了。正常的仿真也不行了。


[ 本帖最后由 zxw 于 2011-10-28 11:08 编辑 ]
回复

使用道具 举报

72#
发表于 2011-10-28 11:09:57 | 只看该作者
试试这个..........

grub4dos_test.zip

287.46 KB, 下载次数: 75, 下载积分: 无忧币 -2

回复

使用道具 举报

73#
发表于 2011-10-28 11:45:54 | 只看该作者

回复 #72 chenall 的帖子

真棒,我测试一切正常。
回复

使用道具 举报

74#
发表于 2011-10-28 13:26:39 | 只看该作者
新的测试版,USB-ZIP启动:
1、
map --mem (fd0,0)/dos.img (fd0)
root (fd0)
chainloader /io.sys
boot
启动DOS正常。

2、
map (fd0) (hd1)
map --hook
map --mem (hd1,0)/dos.img (fd0)
map --hook
root (fd0)
chainloader /io.sys
boot
死机
有谁能指点一下是否代码有问题吗?

[ 本帖最后由 mygamexxx 于 2011-10-28 13:30 编辑 ]
回复

使用道具 举报

75#
发表于 2011-10-28 13:36:56 | 只看该作者

回复 #74 mygamexxx 的帖子

死机有很多可能,你可以换个版本对比一下,不一定是GRUB4DOS的问题.
回复

使用道具 举报

76#
发表于 2011-10-28 13:40:50 | 只看该作者
确实如此,我用标准1.44M的软盘映像不会死机。
回复

使用道具 举报

77#
发表于 2011-10-28 13:48:15 | 只看该作者

回复 #72 chenall 的帖子

在ZIP机上测试正常。
回复

使用道具 举报

78#
发表于 2011-10-28 13:49:33 | 只看该作者

回复 #76 mygamexxx 的帖子

是不是进行了压缩处理,有时,压缩版会有点小问题。
回复

使用道具 举报

79#
发表于 2011-10-28 13:53:37 | 只看该作者

回复 #74 mygamexxx 的帖子

我测试正常。
回复

使用道具 举报

80#
发表于 2011-10-28 13:54:02 | 只看该作者
不是,将标准映像进行扩容(7.2M),还是第二种情况,无法启动DOS。


[ 本帖最后由 mygamexxx 于 2011-10-28 13:56 编辑 ]
回复

使用道具 举报

81#
发表于 2011-10-28 13:58:01 | 只看该作者

回复 #80 mygamexxx 的帖子

扩容后可能需要重新格式化一下,和MSDOS的版本也有关系,比如MSDOS6.22的就不能随意更改.

用高一点的版本比较好用.

另外很可能是C/H/S的值不对,所以启动失败.

你可以在启动前geometry --sync (fd0)也许就行了.
回复

使用道具 举报

82#
发表于 2011-10-28 14:01:29 | 只看该作者

回复 #74 mygamexxx 的帖子

对比一下两个的C/H/S的值看看是否正常

geometry (fd0)

还有map --status状态
回复

使用道具 举报

83#
发表于 2011-10-28 14:03:45 | 只看该作者
谢谢C大,加入geometry --sync (fd0) , 测试成功。再请教一下,扩容后如何格式化软盘映像?算了,用ultraiso.exe另存一下问题解决。

[ 本帖最后由 mygamexxx 于 2011-10-28 14:29 编辑 ]
回复

使用道具 举报

84#
发表于 2011-10-28 14:21:02 | 只看该作者
我测试的结果:对比普通版本运行效果会不一样
菜单如下:
title 01. 微软内存检测
map /BOOT/MWMD.IMA (fd0)
map --hook
rootnoverify (fd0)
chainloader (fd0)+1

普通版本:加载镜像后会清屏,然后出现“loading............................”
这个测试版:加载镜像后不清屏,直接在下一行显示“loading............................”
回复

使用道具 举报

85#
 楼主| 发表于 2011-10-28 14:58:37 | 只看该作者
你们大家的效率太高了
早上看这个帖子没动静,于是开始修改我的F6IMG
刚改好,发现C大已经发了两个测试版了。。。。。
ZXW的效率也很高啊。

呵呵,可以发布了。
回复

使用道具 举报

86#
发表于 2011-10-28 15:22:17 | 只看该作者

回复 #84 rockrock99 的帖子

测试版本并没有针对这个作出任何的改动.
回复

使用道具 举报

87#
 楼主| 发表于 2011-10-28 15:53:59 | 只看该作者

回复 #86 chenall 的帖子

C大,我看了下1009版的体积是279K,1028测试版的体积是252K。
小了不少了啊。

刚才测试了几个机器,完美解决map问题。谢谢C大辛勤劳动,辛苦了。
回复

使用道具 举报

88#
发表于 2011-10-28 16:04:50 | 只看该作者
奇了怪了,dos6.22的能启动,dos7.1的不能启动,加了geometry --sync (fd0)也没用。

如果不进行map (fd0) (hd0)
dos7.1的都能启动啊,用同一个映像测试的。

title   测试
map (fd0) (hd1)
map --hook
map --mem (hd1,0)/onekey/onekey.ima (fd0)
map --hook
write --offset=46 (fd0)/autoexec.bat todos
geometry --sync (fd0)
root (fd0)
chainloader /io.sys

[ 本帖最后由 mygamexxx 于 2011-10-28 16:14 编辑 ]
回复

使用道具 举报

89#
 楼主| 发表于 2011-10-28 16:17:19 | 只看该作者

回复 #88 mygamexxx 的帖子

再加一个 试试



再试:
geometry --tune (fd0)
geometry --sync (fd0)
回复

使用道具 举报

90#
发表于 2011-10-28 16:23:21 | 只看该作者

回复 #88 mygamexxx 的帖子

把能启动和不能启动的map --status信息和geometry (fd0)的信息贴上来看一下.
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 19:00

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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