无忧启动论坛

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

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

[复制链接]
跳转到指定楼层
1#
发表于 2011-10-26 11:31:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
进行磁盘交换后,map --memUD区的ISO无问题,但直接map时会在chainloader (0xff)时出现读磁盘错误,求解。
问题源于fbinst 启动后U盘被识别为fd0的问题!
G4D版本2011-10-19
刚刚重新整理测试几十次的数据,发现我晕了。
u盘被识别为hd0的时候,交换后没有问题。
u盘被识别为fd0的时候,交换后会出现该问题。
重新修改可以重现问题的代码!
文件如下:
tangope.iso 未压缩100%文件无碎片。位于(ud)/boot/下
wvblock.gz   压缩的标准1.44M软盘镜像文件,位于U盘可见区根目录
U盘在VM中启动会被识别为hd0
  1. map (fd0) (hd0)
  2. map --mem (fd0,0)/wvblock.gz (fd0)
  3. map --hook
  4. write 0x8280 0x80 && calc *0x82b9=*0x82b9&0xffffff00|0x80
  5. map --mem (ud)/boot/tangope.iso (0xff)
  6. map --hook
  7. chainloader (0xff)
  8. 成功!
  9. map (ud)/boot/tangope.iso (0xfa)
  10. map --hook
  11. chainloader (0xfa)
  12. error 25: Disk read error!
复制代码
map --mem除了不要求文件连续,允许压缩,读取到内存外和直接map有什么不同?为什么map不可读电脑上map --mem可读?

--------------------------------------------------------------------------------------------------------------------------------------------
没有write 0x8280 0x81 && calc *0x82b9=*0x82b9&0xffffff00|0x81 这句的结果:

-------------------------------------------------------------------------------------------------------------------------------------
有write 0x8280 0x80 && calc *0x82b9=*0x82b9&0xffffff00|0x80 这句的结果:




[ 本帖最后由 hotdll 于 2011-10-26 14:24 编辑 ]
2#
发表于 2011-10-26 11:44:35 | 只看该作者
map 要求文件在磁盘上连续存放,不能有碎片,会不会这个问题?
回复

使用道具 举报

3#
 楼主| 发表于 2011-10-26 11:46:29 | 只看该作者

回复 #2 sht123960585 的帖子

文件不连续的提示不是error 25: Disk read error

并且不会出现在chainloader 处,而是直接map的时候提示错误。
回复

使用道具 举报

4#
发表于 2011-10-26 11:50:41 | 只看该作者
fbinst fba做启动后,u盘的读写速度很杯具啊。。。。不用它了,直接用grldr启动。
我的是sd卡+读卡器。
回复

使用道具 举报

5#
发表于 2011-10-26 11:52:19 | 只看该作者

回复 #1 hotdll 的帖子

tangope.iso 是否经过gz压缩?
回复

使用道具 举报

6#
 楼主| 发表于 2011-10-26 11:55:26 | 只看该作者

回复 #5 zxw 的帖子

没有经过压缩。。。。
FD2HD 执行后
如果覆盖fd0,也会出现这个提示。
以前一直找不到原因。昨天做了几十次测试,终于发现是map 和 map --mem的差别。
回复

使用道具 举报

7#
发表于 2011-10-26 11:57:47 | 只看该作者

回复 #6 hotdll 的帖子

也许是你自己处理的问题。

先试试不修改再说吧。
回复

使用道具 举报

8#
 楼主| 发表于 2011-10-26 11:58:18 | 只看该作者
原帖由 135956 于 2011-10-26 11:50 发表
fbinst fba做启动后,u盘的读写速度很杯具啊。。。。不用它了,直接用grldr启动。
我的是sd卡+读卡器。

哪是因为您的u盘被识别为zip了
不用fb,很多机器启动不了。
回复

使用道具 举报

9#
 楼主| 发表于 2011-10-26 12:00:21 | 只看该作者
原帖由 chenall 于 2011-10-26 11:57 发表
也许是你自己处理的问题。

先试试不修改再说吧。

能不能具体点?
不修改哪里?
如果没有这句write 0x8280 0x81 && calc *0x82b9=*0x82b9&0xffffff00|0x81
则map 和 map --mem 会出现同一个提示:error 25: disk read error
回复

使用道具 举报

10#
发表于 2011-10-26 12:01:20 | 只看该作者

回复 #8 hotdll 的帖子

不是启动的读写速度,
是可见区在系统中复制、删除文件,特别是大文件时,那速度相当让你郁闷。
回复

使用道具 举报

11#
发表于 2011-10-26 12:02:06 | 只看该作者
U+ v2 听说很给力。。。没试过。
回复

使用道具 举报

12#
发表于 2011-10-26 12:46:00 | 只看该作者

回复 #7 chenall 的帖子

我对你这样的回复很无语
你是专家,如果你认为是那里的问题,直接提出来,菜单很明显的,我等菜鸟不知出错的原因。。
    这样的回复不是对问题的无视就是对提问题者的蔑视, 您还不如不回答呢。至少我这样认为。
   

楼主可以换用10月前的版本来测试,看看是否正常。
回复

使用道具 举报

13#
发表于 2011-10-26 13:17:43 | 只看该作者

回复 #12 幸运的草 的帖子

每个人的理解方式都有所不同,看问题的角度也不同,当然了也是我的表达有问题。

你可以当成我没有回答。

@hotdll
我说的是不处理ud的情况,直接启动后就测试map --mem xxxx和map /xxx的对比情况。
如果这时一切正常,那就是修改了ud设备号的问题了。
回复

使用道具 举报

14#
 楼主| 发表于 2011-10-26 13:36:07 | 只看该作者

回复 #13 chenall 的帖子

@chenall
问题新进展:
刚虚拟机和真机测试。U盘被识别为hd0的情况下正常。

U盘识别为fd0的情况不正常。我修改了1楼的帖子,请C大移步重看。

对我问题没表述清楚就发帖子表示歉意。

主要是测试的机器多了。汇总后头有些晕。
回复

使用道具 举报

15#
发表于 2011-10-26 13:37:37 | 只看该作者
我刚好试了一下。不用那个(ud),一切正常。。。。社会很和谐。
回复

使用道具 举报

16#
发表于 2011-10-26 14:03:28 | 只看该作者

回复 #14 hotdll 的帖子

map (hd0) (hd1)
map --mem (hd0,0)/wvblock.gz (hd0)
map --hook
write 0x8280 0x81 && calc *0x82b9=*0x82b9&0xffffff00|0x81

这只是针对(hd0)的情况,如果是(fd0)那出错是肯定的,没有出错那才是BUG。
回复

使用道具 举报

17#
发表于 2011-10-26 14:06:55 | 只看该作者
最近怎么经常见到U盘被识别成fd0的帖子,难道旧主板又重新复兴了?
回复

使用道具 举报

18#
发表于 2011-10-26 14:16:08 | 只看该作者
真机测试,U盘为HDD,与硬盘进行磁盘交换后,map UD区ISO就出错,
而加绝对路径map (hd1)/xx.ISO则正常。
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
map (ud)/tangope.iso (0xff)
map --hook
chainloader (0xff)
Error 13: Invalid or unsupported executable format.
如果把(ud)改成(hd1)则正常。
也就是,交换磁盘后,UD区有问题了。ls (ud)/能列出ud区内的文件。

[ 本帖最后由 幸运的草 于 2011-10-26 14:31 编辑 ]
回复

使用道具 举报

19#
 楼主| 发表于 2011-10-26 14:25:51 | 只看该作者
原帖由 chenall 于 2011-10-26 14:03 发表
map (hd0) (hd1)
map --mem (hd0,0)/wvblock.gz (hd0)
map --hook
write 0x8280 0x81 && calc *0x82b9=*0x82b9&0xffffff00|0x81

这只是针对(hd0)的情况,如果是(fd0)那出错是肯定的,没有出错那才是BUG。

c大重新看下帖子。
我刚才修改帖子的时候,网络断了。。。

网络刚刚连上。。。。我访问无忧是代理服务器,经常会出现断的现象。抱歉。
回复

使用道具 举报

20#
 楼主| 发表于 2011-10-26 14:26:51 | 只看该作者
原帖由 rockrock99 于 2011-10-26 14:06 发表
最近怎么经常见到U盘被识别成fd0的帖子,难道旧主板又重新复兴了?

不是旧主板死灰复燃,而是技嘉的板子基本上都会识别小于8G的U盘为USB-ZIP

因为技嘉用的bios是award
回复

使用道具 举报

21#
 楼主| 发表于 2011-10-26 14:27:56 | 只看该作者
原帖由 chenall 于 2011-10-26 14:03 发表
map (hd0) (hd1)
map --mem (hd0,0)/wvblock.gz (hd0)
map --hook
write 0x8280 0x81 && calc *0x82b9=*0x82b9&0xffffff00|0x81

这只是针对(hd0)的情况,如果是(fd0)那出错是肯定的,没有出错那才是BUG。

如果u盘被识别为fd0
我将fd0交换到hd0,
如何处理该部分的代码?让ud区能直接map?
回复

使用道具 举报

22#
发表于 2011-10-26 14:38:07 | 只看该作者
根据测试,如果进行磁盘交换,则要定位到交换后的盘符则无问题;如果再引用ud则会出现错误,即交换后UD区会出问题。
回复

使用道具 举报

23#
 楼主| 发表于 2011-10-26 14:41:46 | 只看该作者
原帖由 幸运的草 于 2011-10-26 14:38 发表
根据测试,如果进行磁盘交换,则要定位到交换后的盘符则无问题;如果再引用ud则会出现错误,即交换后UD区会出问题。

如果识别为hd0,在不同的机器上测试不同。我刚测试了几个机器。识别为hd0,和hd1交换。处理0x8280和0x82b9的值后,没有问题。

但是识别为fd0,我测试的几个机器都会有map不行,但是map--mem正常的问题。
回复

使用道具 举报

24#
发表于 2011-10-26 14:49:42 | 只看该作者

回复 #21 hotdll 的帖子

如果U盘是(fd0)不要前面的交换代码就行了。

也不要随意修改0x82b9那个字节的值(这个值关系到ud的正常读取)

这个值代表着读取(ud)时从哪个设备读取。

因为(ud)有缓存,所以你修改了之后ls等看起来是正常的(因为缓存的关系),实际上的文件都是不可访问的。
回复

使用道具 举报

25#
 楼主| 发表于 2011-10-26 15:11:11 | 只看该作者

回复 #24 chenall 的帖子

因为我需要占用软驱fd0

如果不交换到其他分区,映射到镜像到fd0,原来的usb设备和ud会被覆盖,变成不可读。

当然有变通方法。不过我想交换到hd0,这样和识别为usb-hdd的时候盘符一致。

方便使用我代码的人使用。
回复

使用道具 举报

26#
发表于 2011-10-26 15:17:34 | 只看该作者
原帖由 hotdll 于 2011-10-26 14:41 发表

如果识别为hd0,在不同的机器上测试不同。我刚测试了几个机器。识别为hd0,和hd1交换。处理0x8280和0x82b9的值后,没有问题。
但是识别为fd0,我测试的几个机器都会有map不行,但是map--mem正常的问题。


从楼主的几个帖子来看,总结一下:
恰恰是处理0x8280和0x82b9的值后才正常,或接近正常。
fbinst盘启动后被识别为(hd0),如上处理后完全没有问题。如不处理,则有问题。
fbinst盘启动后被识别为(fd0),如不处理,则有问题。如处理后,接近正常。
回复

使用道具 举报

27#
发表于 2011-10-26 15:36:47 | 只看该作者

回复 #25 hotdll 的帖子

思路适应任意情况保证ud可以使用
1.先读取0x82b9处一个字节的值。设为变量比如%ud%
2.映射到新的设备map (%ud%) (xx)
3.修改0x82b9的值为新的设备号xx

当然了这其中还有一些需要考虑的问题,比如如果是(hd0)需要交换等,这些需要另外处理。
回复

使用道具 举报

28#
发表于 2011-10-26 15:58:50 | 只看该作者

回复 #27 chenall 的帖子

这些情况都处理了的。
回复

使用道具 举报

29#
发表于 2011-10-26 16:28:47 | 只看该作者

回复 #20 hotdll 的帖子

我现在都是指定购买技嘉的主板,从945开始,U盘都是识别为USB-HDD的
回复

使用道具 举报

30#
发表于 2011-10-26 16:53:15 | 只看该作者
识别为zip的情况,不用wrie, 用cat写入试试。我试过write写入后有问题,用cat倒是没有问题。错了,原来楼主是写入内存地址,当我没说!!!

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-30 20:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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