无忧启动论坛

标题: 报告一个特例,不知eltorito.sys (built along with g4d) 是否可以再次改进? [打印本页]

作者: wuwuzz    时间: 2016-1-22 18:27
标题: 报告一个特例,不知eltorito.sys (built along with g4d) 是否可以再次改进?
一、环境:
1、G4D:最新版0.4.6a、稳定版0.4.5c
2、ISO:使用mkiso制作,非仿真模式,grldr引导。含下面的IMG。
3、IMG:1.44M。使用Win98SE原版IO.SYS、himem.sys,grub.exe。
        在批处理里用devload /v /h eltorito.sys语句来加载eltorito.sys。

4、U盘:
SK6221和SMI3260主控固件USB3.0盘,为了模拟最常用的情况,都量产为
usb-cd+usb-hdd两驱模式。usb-cd使用上述ISO。usbhdd做DOS引导盘,
含有IO.SYS,grub.exe,eltorito.sys和IMG。

5、BIOS:
AMI BIOS:神舟A350-T45笔记本;
Phoenix UEFI/BIOS(BIOS优先):联想笔记本,
Insyde  UEFI/BIOS(BIOS优先):惠普G4-2022TX笔记本。

以上BIOS,均能正常识别usb-cd、usb-hdd。在设备菜单中同时
显示两驱条目。



二、现象描述
从USB-HDD引导:
在C>下,grub.exe调用IMG,再加载eltorito.sys,
或C>下,直接devload /v /h加载eltorito.sys,

结果:
AMI BIOS、Phoenix BIOS下,No booted CD (正常结果?)
但是,Insyde BIOS下,特例出现:eltorito.sys找到了可引导CD,
Drive A0 returns 0800h bytes...


三、问题
能不能再次改进eltorito.sys,让AMI BIOS、phoenixBIOS环境下,
也能得到Insyde BIOS下那样的效果。即:从USB-HDD引导并调用
eltorito.sys,也能驱动USB-CD。

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

再次改进的事不急,各位可以在时间、身体健康允许的情况下再考虑。

题外话:
这个Insyde BIOS,在上次是作为Bad BIOS出现的,后置USB-CD
eltorito.sys将不能支持。不点改进eltorito.sys后,此问题已解决。

现在,Insyde BIOS下,从USB-HDD引导,eltorito.sys可找到USB-CD,
此特性,似乎是它的一个优点。 “失之东隅,收之桑榆”,矛盾体啊!
作者: 不点    时间: 2016-1-22 19:06
bios 根本不挂载 cd ,没戏。就是说,int13/DL=CDROM 的接口被 bios 屏蔽掉,没门——除了放弃,就是洗洗睡吧。

Insyde 的 bios 没把 cdrom 屏蔽掉,也许是违反了微软等巨头的意愿,属于 bug,将来修复 bug 后,可能就屏蔽掉了。

另外,bios 本身也正在被取缔,bios 本身已经成了微软、intel、amd 的敌人了。算了,清静一点,少折腾吧。
作者: wuwuzz    时间: 2016-1-23 08:26
收到,谢谢指点。

说这个话题,主要还是为了一些同学的DOS USBCD驱动,一键GHOST更方便。没这个功能也不影响大局。
作者: 2011yaya2007777    时间: 2016-1-23 09:31
eltorito.sys 不能通过 bios 驱动真正的光驱。但是可以驱动映射的光盘(.iso)。
作者: 不点    时间: 2016-1-23 13:03
本帖最后由 不点 于 2016-1-23 13:09 编辑
2011yaya2007777 发表于 2016-1-23 09:31
eltorito.sys 不能通过 bios 驱动真正的光驱。但是可以驱动映射的光盘(.iso)。


错。

eltorito.sys 本来就是利用 int13 接口来在 dos 下驱动光驱的。它的名字就说明了这个目的。

凡是符合 eltorito no-emulation mode 可启动规范的光盘,都可以驱动。


当主板从一个 no-emulation mode 可启动光盘启动时,它会为该光盘分配 DL 盘符,并提供相应的 int13 接口。

eltorito.sys 就是利用这个 int13 接口来访问光盘扇区的,达到给 dos 提供光盘驱动的目的。


作者: 2011yaya2007777    时间: 2016-1-23 20:13
嗷 弄错了。 usb-hdd模式启动,执行usb --init,可以驱动usb-cd,为它分配盘符。grub4dos可以访问它。之后进入dos,执行那个.sys,挂载usb cd。
作者: wuwuzz    时间: 2016-1-26 07:29
2011yaya2007777 发表于 2016-1-23 20:13
嗷 弄错了。 usb-hdd模式启动,执行usb --init,可以驱动usb-cd,为它分配盘符。grub4dos可以访问它。之后 ...

在AMI BIOS,phoenix BIOS下,
usb --init 枚举失败,error 81。延时、热启已试,无效。USB3盘、USB2盘与USB3口、USB2口各种组合已试,无效。

在Insyde BIOS下,usb --init 能枚举成功。
作者: 2011yaya2007777    时间: 2016-1-26 20:11
辛苦了。我没有这么多测试条件。但是有一台笔记本,通过usb3.0接口,再连接usb2.0集线器,再连接usb2.0u判,每次启动都枚举失败。探测设备不在端口,没有找到解决办法。但是重启后枚举正常。
作者: wuwuzz    时间: 2016-1-27 12:54
本帖最后由 wuwuzz 于 2016-1-27 12:56 编辑
2011yaya2007777 发表于 2016-1-26 20:11
辛苦了。我没有这么多测试条件。但是有一台笔记本,通过usb3.0接口,再连接usb2.0集线器,再连接usb2.0u判 ...



yaya客气了,开发USB驱动、排障才是真辛苦。我这个工作量很小,不能相提并论的。
8#这种连接方式有点复杂,USB2盘先直接插USB3口,不经过USB2 HUB,让BIOS自己auto,
试试USB --init行不行?
============================================================
订正7#测试结果:

联想笔记本phoenix bios下,
USB2盘接USB2口,BIOS setup中 USB3.0模式设为auto,G4D用usb delay=3,再init,能枚举成功。
其他USB2盘、USB3盘与USB3口组合不能枚举成功。

现在就剩下神舟笔记本AMI BIOS。它只有USB2口,且BIOS没有USB参数调整选项。
加延时,USB2盘、USB3盘均不能init枚举成功。[init时能看到U盘灯闪烁,随即熄灭,然后error81]
===============================================================

G4D的USB2驱动,不知有没有   与BIOS USB驱动握手过程(移交USB控制权)。
即:先卸载BIOS USB驱动,再加载G4D USB驱动核心的动作。

如果没有这个过程,将很容易产生冲突,出现各种问题。

这个知识点,我也是很久以前在国内BIOS讨论网站,看到那些BIOS开发者说的一句话,具体细节不知。
不过,高版本Linux自举时有这个过程,不知是否可以借鉴Linux源代码的思路和命令细节?

作者: 2011yaya2007777    时间: 2016-1-27 16:46
8#的连接方式,是在我现有读设备上,好不容易发现错误81提示。用于代码测试。
你说读很对,移交USB控制权是重要的。松下的usb驱动,内部设置了好几个参数,在我以前的电脑上启动,第一次总是死机,就是死在没有移交控制权,但重启后可以正常启动。
后来参考了另一个范例,改成现在这个样子。有些机子可以正常移交控制权,我那台机子虽然没有移交控制权,但是不死机,可以枚举成功。
8#那台机子是正常移交了控制权,但是从集线器端口检测不到设备,测试30秒也不行,必须重启才正常。就是他自己,启动也非常困难,开机需要20几秒,才能出现启动画面。(只有1个U盘是这样的)。
作者: wuwuzz    时间: 2016-1-28 14:49
“……就是他自己,启动也非常困难,开机需要20几秒,才能出现启动画面。(只有1个U盘是这样的)……"

这段话看得不是很明白。
是指有多个测试u盘,分别测试,均不经过hub,直接插usb3口,然后只有1个u盘困难,其他u盘都正常?

==
我这边测试情况则不容乐观。
Phoenix和Ami bios环境,
Usb3盘全失败,暂缓测试。

Usb2盘,ami  bios环境全失败。
Phoenix bios环境,大部分失败。
只有smi3252b主控盘init成功。

参加测试的u盘,均为口碑最好的名盘,包括群联,慧荣,擎泰,太烂的主控不参加测试。

现在情况有些复杂,不太好定位问题所在。是bios问题,g4d 问题,还是u盘固件问题。


作者: 2011yaya2007777    时间: 2016-1-28 18:01
我是说,有一个usb2.0u盘,256Mb,格式化为usb-fdd模式,插入笔记本上的2.0或3.0接口,启动时20多秒才进入启动画面。第一次启动肯定是错误81。重启成功。
作者: wuwuzz    时间: 2016-1-28 18:27
2011yaya2007777 发表于 2016-1-28 18:01
我是说,有一个usb2.0u盘,256Mb,格式化为usb-fdd模式,插入笔记本上的2.0或3.0接口,启动时20多秒才进入 ...

这个笔记本是什么bios呢?  AMI?
格式化是格不成fdd的,容量256M才是bios看重的、决定设备类型的因素。

如果其他u盘没这种症状,则可考虑该u盘固件可能存在bug。
作者: 2011yaya2007777    时间: 2016-1-28 20:54
这个bios的类型是AMI。 u盘在其他电脑上启动正常,没有延时。
作者: wuwuzz    时间: 2016-1-28 23:02
本帖最后由 wuwuzz 于 2016-1-28 23:03 编辑
2011yaya2007777 发表于 2016-1-28 20:54
这个bios的类型是AMI。 u盘在其他电脑上启动正常,没有延时。


AMI  BIOS的话,问题解决难度
可能就要降低了。因为有bios源码可供参考。

《bios研发技术剖析》第二版,光盘附带的汇编源码。支持usb2。

有兴趣的话,可以搜搜看。








作者: 2011yaya2007777    时间: 2016-1-29 17:11
有时间的话,看一看。




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3