|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
31 楼』:
你说用debug如何进行试验吧!
|
|
2006-7-24 12:04 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
32 楼』:
用第一个即cat --hex (fd0)2878+1就死机!
|
|
2006-7-24 12:30 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
33 楼』:
neiljoy不防先更新下BIOS
华硕系列好象都支持在线更新
|
|
2006-7-24 12:34 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
34 楼』:
从华硕网站得知,这已经是最后的BIOS版本。
|
|
2006-7-24 12:37 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
35 楼』:
再给你一个任务,找出死机和不死机的界限:
cat --hex (fd0)xxxxxx+1
已知当 xxxxxx=0 时不死机,当 xxxxxx=2878 时死机,找出最大的 xxxxxx 值,使得 cat 命令不死机。
就像你刚刚测试的那样,它如果连 1.44M 以内的扇区都不能读的话,我估计玄了,我们可能最终也无能为力。
不过,你还是在 DOS 下做以下测试,死马当活马医:
敲入 debug 进入 debug 的命令行。然后敲入以下命令:
a ;这个 a 是汇编命令
mov AH,8
mov DL,0 ;DL,0就是代表 (fd0),如果U盘是 (fd1),此处就应该是 mov DL,1
int 13
int 3
;此处多敲一个回车,结束汇编命令
g ;这个 g 是运行的意思
好了,现在把屏幕的输出结果贴上来。
最后再用一条 q 命令退出 debug 返回到 DOS 下:
q
[ Last edited by 不点 on 2006-7-24 at 16:24 ]
|
因为我们亲手创建,这个世界更加美丽。 |
|
2006-7-24 16:09 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
36 楼』:
我正在作试验,才上网看到你在楼上的内容。先说说我自己作试验的情况,然后再做楼上的试验。
1. 我分别作了含有grub.exe、menu.lst和diskgen.img文件且容量分别为1.44M和2.88M的img镜象;
2. 在虚拟机上试验,运行批处理,1.44M的可以用GRUB启动diskgen.img,但2.88M的不可以,不过不会死机;
3. 在1.44M的情况下,无论有无
map (fd0) (fd1);map --floppies=2
均可启动diskgen.img;
4. 发现一个问题,无论是用最新版还是0.4.1版,即使grub.exe与menu.lst均在软驱根目录下,运行grub.exe也没有菜单显示(在虚拟机和真实软驱中均如此),提示错误17,文件未发现。
结论:1.在U盘为FD或ZIP模式下,无法用U盘上的grub.exe启动U盘内1.44M及其以上容量的镜象文件。
2.U盘上运行GRUB死机的问题与USB_ZIP盘的数据结构(指有MBR、DBR)有关。
|
|
2006-7-24 17:24 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
|
2006-7-24 17:51 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
38 楼』:
--4. 发现一个问题,无论是用最新版还是0.4.1版,
--即使grub.exe与menu.lst均在软驱根目录下,
--运行grub.exe也没有菜单显示(在虚拟机和真实软驱中均如此),
--提示错误17,文件未发现。
这不是问题。grub.exe 不像 GRLDR 那样,能够判断出所在磁盘的分区号,因此 grub.exe 无法知道你是从软盘根目录运行的 grub.exe。运行 grub.exe 必须带有 --config-file=(fd0)/menu.lst 才行。否则就要用默认的 (hd0,0)/menu.lst
|
因为我们亲手创建,这个世界更加美丽。 |
|
2006-7-24 18:10 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
39 楼』:
现提供虚拟机中的试验结果
试验对象:1.44M和2.88M镜象,相当于容量为1.44M(简称A)和2.88M(B)的两个软驱
试验过程:
1. 运行grub.exe --config-file=(fd0)/menu.lst,A能显示菜单;B不能显示,进入GRUB命令行。
2. 对B中的文件按顺序存放至空img中:最先是io.sys,接着依次是menu.lst、diskgen.img(720K)、grub.exe,其它文件可不按序放入。
3. 重新执行grub.exe --config-file=(fd0)/menu.lst,B仍无菜单显示。
4. 执行cat --hex (fd0)2879+1全显示“F6”,表明该扇区无文件(而且前面几个扇区也是空的),但在2880+1处显示:
Error 26:Attempt to access block outside partition
疑问:按说几个关键文件均在最前面的扇区,从cat命令来看,也在GRUB读取范围之内,但仍不能显示菜单,也不能启动diskgen.img。不知是何道理?
[ Last edited by neiljoy on 2006-7-24 at 21:58 ]
|
|
2006-7-24 21:32 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
40 楼』:
很简单,虚拟机的 BIOS 不支持大于 1.44M 的软盘。
前面我说的另外一项测试也是需要的,就是找出使得 cat --hex (fd0)xxxxxxx+1 不死机的最大 xxxxxxx 来。
这个情况我估计还有解决的希望。需要你继续配合测试。
DOS 下用 debug 测试:
a ;这个 a 是汇编命令
mov AX,201
mov BX,200
mov CX,4F12
mov DX,100
int 13
int 3
;此处多敲一个回车,结束汇编命令
g ;这个 g 是运行的意思
q ;退回到 DOS
报告是否死机。如果不死机,报告右下角显示的是 NC 呢,还是 CY?
|
因为我们亲手创建,这个世界更加美丽。 |
|
2006-7-24 22:19 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
41 楼』:
1. 你说的虚拟机的BIOS不支持>1.44M的软盘,如何理解?事实上,我使用的VM同样可以正常启动2.88M的镜象。不支持何以能启动?我的试验又怎么能够进行?
2. 寻找不死机的最大XXXXX,我已经在39楼提供了2.88M(软盘)的测试结果。至于U盘,如果一死机,就要重新按复位键重启,又费时又麻烦,看情况吧,如果超过两次死机我就不想试了。
debug我过一会就试。上次是没有死机,否则无法抓图了!
[ Last edited by neiljoy on 2006-7-24 at 22:53 ]
|
|
2006-7-24 22:51 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
42 楼』:
1. 能启动,不能说明支持 2.88M,很可能你的文件都在 1.44M 以内。
2. 不要软盘测试结果,要U盘的(你不是要解决U盘不能访问的问题吗?)。测试 U 盘肯定要有死机发生,不过,如果你设计好,只需要若干次测试,就能找到最大的 xxxxx 来。这个并不麻烦,当然也许你觉得麻烦,那就罢了,继续测试 debug 吧。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2006-7-24 23:23 |
|
|
neiljoy
初级用户
积分 132
发帖 58
注册 2006-7-23
状态 离线
|
『第
43 楼』:
UM近一段时间我常使用,用它启动运行2.88M的镜象文件是常事,均能正常运行,可以肯定的是,我使用的大多数镜象文件的占有空间均接近于2.88M,今天不过是个特例。
通过在虚拟机中对2.88M的试验,我对U盘已经不太乐观了。
现在提交U盘的试验报告:三次死机。
第一次,用2875+1;
第二次,用2850+1;
第三次,严格按照你的debug程序,当执行-g后即死机,此后屏幕当然也无显示,也无必要抓图了。
|
|
2006-7-24 23:36 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
44 楼』:
你应该用一个小的值去试验,才有希望不死机。
不过,你的测试很重要,debug 的死机,表明 DOS 下也不可以按照 80/2/18 的规格来访问U盘。这很有用。如果这个测试序列能够完成,我想应该解决 U盘访问的问题的,一定行。不过,现在该休息了,明天再来。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2006-7-24 23:42 |
|
|
不点
银牌会员
不甘寂寞的人
积分 2491
发帖 1115
注册 2003-9-24
状态 离线
|
『第
45 楼』:
估计 C 最大只能是 7 和 8,所以,用 C=7,H=2,S=18 应该安全。
7 * 2 * 18 = 252
8 * 2 * 18 = 288
所以,我估计用 252 以内的值就不会死机了。最大值应该出现在 252 和 288 之间。
cat --hex (fd0)252+1
cat --hex (fd0)288+1
------------------------------------------
DOS 下用 debug 测试:
a ;这个 a 是汇编命令
mov AX,4100
mov BX,55AA
mov DX,0
int 13
int 3
;此处多敲一个回车,结束汇编命令
g ;这个 g 是运行的意思
q ;退回到 DOS
报告是否死机。如果不死机,报告右下角显示的是 NC 呢,还是 CY?还要报告显示的四个寄存器 AX,BX,CX,DX的值。
不管是否死机,上述测试完了之后,再做以下测试,那么全部的测试就都结束了。
DOS 下用 debug 测试:
a ;这个 a 是汇编命令
mov AX,4800
mov SI,180
mov DX,0
int 13
int 3
;此处多敲一个回车,结束汇编命令
g ;这个 g 是运行的意思
d 180 ;显示 180 处的数据
q ;退回到 DOS
如果没有死机,把屏幕截图发上来。
|
因为我们亲手创建,这个世界更加美丽。 |
|
2006-7-25 09:44 |
|