无忧启动论坛

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

[20100626正式版]SRS_F6 公用性SRS驱动的F6模块—XP/2003安装及PE 1.x的SRS驱动不愁缺

[复制链接]
1591#
发表于 2010-5-24 19:30:33 | 只看该作者
@zhaohj

hhh333 所说的问题,与你想象的完全无关。他的死机出现在 grub.exe 试图恢复 BIOS 中断向量的阶段。与命令行参数的解释也完全无关。

hhh333 的报告,证实了我前几次的猜测。正是 CPU 的 bug 引起的。我们唯一能做的,就是设法避免诱发 CPU 的 bug。

在 grub.exe 执行之前,是否执行过 HIMEM 或者 EMM386 等其他常驻内存的程序?如果执行过,就可能导致这个问题的出现。

请彻底注释掉所有的不必要的命令。除了运行 DOS 内核以外,别的任何代码都不要运行,例如 config.sys 和 autoexec.bat 中,除了 grub 以外,其余的全部注释掉。然后再试试,如果问题不再发生,则证明,确实是 grub 之前运行的某个程序代码触发了 CPU 的 bug。

也就是说,从机器启动一直到 grub.exe 的运行,这期间,不要运行任何多余的代码。只在 autoexec.bat 中加上 grub 命令,看看死机不死机。如此测试才能找到病根。

=========

DOS 文件名前不加 #@ 的有时候也能识别出来。比如,你带有 C:\ 字样,就能够被识别为 DOS 文件名了。当然,加上 #@ 就更好一些。

[ 本帖最后由 不点 于 2010-5-24 19:35 编辑 ]
回复

使用道具 举报

1592#
发表于 2010-5-24 19:35:53 | 只看该作者

回复 #1591 zhaohj 的帖子

DOS中不能这么写吧?

确实如不点所说,与你想象的并无关系,况且前面的写法用call调用是成功的

[ 本帖最后由 hhh333 于 2010-5-24 20:06 编辑 ]
回复

使用道具 举报

1593#
发表于 2010-5-24 19:44:12 | 只看该作者

回复 #1592 不点 的帖子

明天我再在不加载任何驱动下再试。
真有点诡异:
1、用call调用批处理中的grub.exe --configfile=xxxx就可以
2、在命令行状态执行这个语句也可以。
3、拔掉一个硬盘(这个机器硬盘接口均是SATA,目前挂了两个硬盘,再多挂情况如何就未测试了)也可以。

[ 本帖最后由 hhh333 于 2010-5-24 20:04 编辑 ]
回复

使用道具 举报

1594#
发表于 2010-5-24 20:09:21 | 只看该作者
就像见鬼了一样。这是我们早在 2008-11-19 就弄明白了的。正是 CPU 的 bug 引起的。这个 bug 从来没人注意到。

我们有时候在即将死机之前执行一个暂停 5 秒的命令,这样在很多情况下就可以避免死机。你也可以试试,在执行 grub.exe 之前,先执行一个类似于 sleep 5 的 DOS 命令。

而且有的人即使这样做了,仍然不能避免死机。

唯一可靠的办法,就是完全避免碰触 CPU 的 bug。也就是把碰触这个 bug 的 DOS 命令删除掉。

------------

明天我再在不加载任何驱动下再试。


不仅仅是任何“驱动”,而是任何“程序”。不要运行任何多余的程序,干干净净地,只运行 IO.SYS 和 grub.exe。

如果你的 io.sys 和 grub.exe 是在一个 img 中,你也不能够用 memdisk 来启动它,而只能用 grub4dos 的 map,因为 memdisk 也有可能碰触 cpu 的 bug。

[ 本帖最后由 不点 于 2010-5-25 07:41 编辑 ]
回复

使用道具 举报

1595#
发表于 2010-5-24 21:25:50 | 只看该作者
不懂
菜鸟一个
等稳定了我重新刻盘
回复

使用道具 举报

1596#
发表于 2010-5-24 22:40:52 | 只看该作者
“如果将这一行挂起,到命令行状态去执行可以通过。”这句话相当于暂停后再执行GRUB.EXE
不过对修改为CALL后能正常运行又有点不理解了。

从H大的测试看,纯净的只运行IO.SYS和grub.exe应该也是一样的。
回复

使用道具 举报

1597#
发表于 2010-5-25 09:57:52 | 只看该作者

回复 #1597 zhaohj 的帖子

刚才测试了一下:
1、用zhaohj新改的方式可以启动
if "%PXE%"=="Yes" (
grub --keep-pxe --config-file="#@C:\KERNEL\MENU.USR"
) else (
grub --config-file=="#@C:\KERNEL\MENU.USR"
)


(注:以上写法是错误的,看后面的帖子)

2、原来的只要在grub后加.exe也可以:
if "%PXE%"=="Yes" grub.exe --keep-pxe --config-file=C:\kernel\MENU.USR
if not "%PXE%"=="Yes" grub.exe --config-file=C:\kernel\MENU.USR
3、就是前面讲的方式,上面两句建一个批处理(grub可以不加.exe)再在menu.bat中调用也行。

[ 本帖最后由 hhh333 于 2010-5-25 11:27 编辑 ]
回复

使用道具 举报

1598#
发表于 2010-5-25 10:09:39 | 只看该作者
很奇怪啊!这个结论超出我们的想象。
回复

使用道具 举报

1599#
发表于 2010-5-25 10:22:32 | 只看该作者
量产成USBcdrom会返不回主菜单

也就是说加载到menu菜单后,就找不到USB-CDROM了
是不是这样啊
回复

使用道具 举报

1600#
发表于 2010-5-25 10:52:06 | 只看该作者
原帖由 zhangze 于 2010-5-25 10:22 发表
量产成USBcdrom会返不回主菜单

也就是说加载到menu菜单后,就找不到USB-CDROM了
是不是这样啊


你是从USB-CDROM启动的?如果从其他地方启动无能为力。
回复

使用道具 举报

1601#
发表于 2010-5-25 10:59:33 | 只看该作者
是从USB-CDROM启动的

用于量产的ISO镜像用虚拟机可以的
回复

使用道具 举报

1602#
发表于 2010-5-25 11:15:37 | 只看该作者

回复 #1599 zhaohj 的帖子

if "%PXE%"=="Yes" (
grub --keep-pxe --config-file="#@C:\KERNEL\MENU.USR"
) else (
grub --config-file="#@C:\KERNEL\MENU.USR"
)
这种写法是错误的,这个是windows中命令写法在DOS中是不行的。实际执行的是第二行。

经过改正的写法如下:

  1. @echo off
  2. REM 考虑到原版装机(如光盘),保护模式下A盘空、B盘为默认本机驱动,可以不用FIRADISK。
  3. copy A:\*.* B:\
  4. del a:\*.???
  5. del a:\disk
  6. copy C:\MENU A:\
  7. >>MENU.USR echo map --unmap=2:3,0x80
  8. >>MENU.USR echo map --rehook
  9. if "%PXE%"=="Yes" echo write 0x8280 0x21 >>MENU.USR
  10. if "%UD%"=="Yes" echo write 0x60100 1 >>MENU.USR
  11. if not "%USBHDD%"=="Yes" goto skip
  12. echo map (hd0) (hd1) >>MENU.USR
  13. echo map (hd1) (hd0) >>MENU.USR
  14. echo map --rehook >>MENU.USR
  15. :skip
  16. >>MENU.USR echo configfile (fd0)/MENU
  17. if "%PXE%"=="Yes" grub.exe --keep-pxe --config-file=C:\KERNEL\MENU.USR
  18. if not "%PXE%"=="Yes" grub.exe --config-file=C:\KERNEL\MENU.USR
复制代码

[ 本帖最后由 hhh333 于 2010-5-25 11:17 编辑 ]
回复

使用道具 举报

1603#
发表于 2010-5-25 11:34:37 | 只看该作者
USB-CDROM又是一种特例,与BIOS有关。
在GRLDR转IO.SYS后,USB-CDROM就不能访问了。没办法啊!
回复

使用道具 举报

1604#
发表于 2010-5-25 11:43:43 | 只看该作者
那么如果用于量产
在里边加上USB的DOS驱动可以解决???
回复

使用道具 举报

1605#
发表于 2010-5-25 11:43:48 | 只看该作者
呵呵,纯DOS下不行,虚拟机测试真不可靠。
加个.EXE就行,有点不可思议!
回复

使用道具 举报

1606#
发表于 2010-5-25 11:47:51 | 只看该作者
原帖由 zhangze 于 2010-5-25 11:43 发表
那么如果用于量产
在里边加上USB的DOS驱动可以解决???


你USB-CDROM启动,在命令行查看一下0x82a0,0x8280是什么值,另外USB-CDROM的驱动是什么,会不会与GRUB.EXE产生冲突,这都需要测试的。
你自己先测试一下
回复

使用道具 举报

1607#
发表于 2010-5-25 11:52:52 | 只看该作者

回复 #1606 zhaohj 的帖子

这个与虚拟机无关。虚拟机中的DOS里也是不行的。(我印象中那么写是不行的,以为这个DOS改进了具有了CMD.EXE的能力,被LZ误导!)
回复

使用道具 举报

1608#
发表于 2010-5-25 12:43:40 | 只看该作者
原帖由 zhaohj 于 2010-5-25 11:34 发表
USB-CDROM又是一种特例,与BIOS有关。
在GRLDR转IO.SYS后,USB-CDROM就不能访问了。没办法啊!


有办法。

USB-CDROM 和 CDROM 是一样的。只要光盘的格式是 no-emulation,并且从光盘启动,那么 BIOS 都要给光盘一个盘号。在 GRUB 下可以检测到这个盘号,用 (cd) 来访问它。

注意,这个盘号不需要用 cdrom --init 来产生。这个 (cd) 就代表由 BIOS 提供的 no-emulation 模式的 cdrom 设备。

cdrom --init 所产生的是 (cd0), (cd1) ... 这些。

(cd) 这个光盘,在 DOS 下也可以识别,需要 eltorito.sys 这个驱动。

但是,eltorito.sys 有个问题,当碰到(很多)恶意的 BIOS 的时候,它被这些恶意的 BIOS 欺骗,停止在 0xff 处,无法搜索到真正的光盘。

此时,可以试试

map (cd) (0xff)
map --rehook

然后再把控制权交给 io.sys,如此,DOS 下的 eltorito.sys 和 mscdex 就可以成功访问 (cd) 了。看看 grub4dos 的 readme,再搜索网络找到相关的信息。

--------

进一步补充说明,eltorito.sys 已经开源了,现在归 syslinux 管辖。非常好的消息。但是,究竟开源后是否解决了以前 0xff 的问题,还不清楚。如果解决了恶意 BIOS 攻击的问题,那么就不再需要 map (cd) (0xff) 这个步骤了。
回复

使用道具 举报

1609#
发表于 2010-5-25 13:02:37 | 只看该作者
由于我要为中考准备,我暂时更新,更多的问题可以询问zhaohj
更新方面可以看看后面的帖子




这段话可不可以去掉?


再见意提供一个115下载。谢谢!

[ 本帖最后由 callc 于 2010-5-25 13:05 编辑 ]
回复

使用道具 举报

1610#
发表于 2010-5-25 13:05:49 | 只看该作者
看到这个消息比较振奋。
在DOS下我已经不需要读(cd)了,因为在启动IO.SYS前所有要处理的文件已经拷贝完毕。这个设备会不会继承给GRUB,这是关键。

另外,真实的光盘与USB-CDROM没法区分,加载eltorito.sys会不会对真实的光驱产生影响。

-----------------------------
Like normal disk emulations, the CDROM emulation also (mainly) works with
real-mode OSes. After a protected-mode OS kernel (such as
WinNT/2K/XP/VISTA/LINUX) gains control, the OS would have no ability to access
the virtual CDROM through BIOS int13.

DOS/Win9x users may google for ELTORITO.SYS and use it in CONFIG.SYS as a
device driver for the virtual cdrom.
Example usage of eltorito.sys in CONFIG.SYS:
        device=eltorito.sys /D:oemcd001
Corresponding MSCDEX command which can be placed in AUTOEXEC.BAT:
        MSCDEX /D:oemcd001 /L:D
Due to some bugs found in eltorito.sys, the driver could fail to load. If you
encounter such problems, then you may replace (hd32) with (0xFF) for the
virtual cdrom drive number and try again.
回复

使用道具 举报

1611#
发表于 2010-5-25 13:37:22 | 只看该作者
原帖由 callc 于 2010-5-25 13:02 发表
由于我要为中考准备,我暂时更新,更多的问题可以询问zhaohj
更新方面可以看看后面的帖子



这段话可不可以去掉?


再见意提供一个115下载。谢谢!



没看明白什么意思  LZ是zhhsh  不是zhaohj   因为zhhsh要中考  所以现在主要是zhaohj在管理  

需要115的话我可以上传一份  不过你积分已经能够看到FTP了  直接下载FTP不更好吗

PS: 同样感谢zhaohj的辛苦付出
回复

使用道具 举报

1612#
发表于 2010-5-25 14:25:38 | 只看该作者

回复 #1611 zhaohj 的帖子

只要你的 DOS 不需要 (cd) 了,你就什么也不用管了。grub4dos 能够自动找回 (cd) 的。

加载 eltorito.sys 不会对真实光驱产生什么影响。它只对 BIOS 所提供的 (cd) 设备进行服务。这个 (cd) 设备既可以是真实的 cdrom,也可以是 usb 的 cdrom。

只要启动的是 no-emulation 格式的光盘,那么,eltorito.sys 都可以驱动它。由于这是利用了 BIOS 提供的 int13 接口,所以,这不会失败的,除非就像前面所说,恶意 BIOS 专门制造一个虚假的 0xff 光盘,让 eltorito.sys 上当。无论是IDE还是SCSI,无论是 PARALLEL还是SATA,或者是 USB-CDROM,或者是将来的新的介质,如 IEEE1394 等等等等,只要你采用的 ISO 格式是 no-emulation 模式的,那么在启动这个格式的光盘时,BIOS 都要赋予一个光盘号码(绝对保证,无一例外,因为这是光盘启动规范所规定了的),这就是 grub 之下的 (cd)。这样一个 (cd),对于 eltorito.sys 来说也是同样方便的,eltorito.sys 在原理上就等同于 grub4dos,它本来就是用来驱动这样一个 (cd) 的。
回复

使用道具 举报

1613#
发表于 2010-5-25 15:09:27 | 只看该作者
不点:
前次反馈的dell机器上用F6模块时出现死机的问题,只要用grub的全名就可运行,不带扩展名运行就出现死机。这个如何解释?

if "%PXE%"=="Yes" grub.exe --keep-pxe --config-file=C:\KERNEL\MENU.USR
if not "%PXE%"=="Yes" grub.exe --config-file=C:\KERNEL\MENU.USR

按DOS命令的执行规律,不带.exe则先在当前目录找grub.com-->再找grub.exe->直接执行了。
而带全名执行时应该就少一个查grub.com的情况,这对grub的运行有影响吗?

[ 本帖最后由 hhh333 于 2010-5-25 15:16 编辑 ]
回复

使用道具 举报

1614#
发表于 2010-5-25 15:13:53 | 只看该作者
这个问题解决了,就应该发正式版
回复

使用道具 举报

1615#
发表于 2010-5-25 15:20:38 | 只看该作者
原帖由 zhangze 于 2010-5-25 10:59 发表
是从USB-CDROM启动的

用于量产的ISO镜像用虚拟机可以的


兄弟用“5.20的纯驱动返回模块”测试一下,这个模块返回识别更加正确一些。等待你的测试。需要从FTP重新下载。

[ 本帖最后由 zhaohj 于 2010-5-25 15:24 编辑 ]
回复

使用道具 举报

1616#
发表于 2010-5-25 15:25:40 | 只看该作者

回复 #1614 hhh333 的帖子

你还该问的是:为什么加上 call 以后就好了?为什么拔掉一个硬盘也好了?…… 可是为什么都不问了,只问这样一个 .exe 的问题呢?

你问完了我,想没想到,我会不会问你什么?
回复

使用道具 举报

1617#
发表于 2010-5-25 16:33:50 | 只看该作者

回复 #1617 不点 的帖子

哈,这个与前面那几个问题的情况不一样吧?
回复

使用道具 举报

1618#
发表于 2010-5-25 16:45:11 | 只看该作者
论坛的服务器最近是不是出问题啦?受攻击啦?

H大的问题很难用常理解释,世界之大无奇不有啊!
回复

使用道具 举报

1619#
发表于 2010-5-26 06:21:22 | 只看该作者

回复 #1619 zhaohj 的帖子

用0525试了一下,情况略有不同:
1、grub不带exe形式第一次执行不死机,直接退出到DOS,但再运行grub死机,退出后的提示信息如下。
Failure restore ROM INT 0x08 vector. Unsupported DOS,device driver,or STR.

2、换成grub.exe出现:
An internal stack overflow has caused this session to be halted.
Change the STACKS setting in your CONFIG.SYS,and then try again.

以下三张图最后一张是以前版本死机的情况。

[ 本帖最后由 hhh333 于 2010-5-26 06:31 编辑 ]

IMG_0471.JPG (112.73 KB, 下载次数: 138)

IMG_0471.JPG

IMG_0473.JPG (97.42 KB, 下载次数: 147)

IMG_0473.JPG

err.jpg (129.56 KB, 下载次数: 140)

err.jpg
回复

使用道具 举报

1620#
发表于 2010-5-26 06:42:33 | 只看该作者
第三张图说明哪个环节访问中断了。这个问题估计最近会解决,不过还需要你最后测试。你可以同步调试:
http://bbs.wuyou.net/forum.php?m ... p;page=1#pid1958509
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-2 14:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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