无忧启动论坛

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

(原创)理论上回答《USB CDROM+fbinst双启动大量失败》

[复制链接]
跳转到指定楼层
1#
发表于 2010-2-1 21:01:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

有感而发。

忆小北的《USB CDROM+fbinst双启动大量失败》这个帖中问题
都是老生常谈的问题。实际上在以前其他帖子的回复中,答案说了
不下N遍。


感觉USB版一个比较突出问题就是,BOOT帖子多,而对底层USB、BIOS
资料搜集、研究偏少,导致无法再上升一个层次。唉,怀念victor888
版主ing......

-------------------------------------------------------------
一、影响BOOT成功与否的因素,按作用大小、优先顺序,我认为应是:
(一)BIOS  
(二)U盘主控/固件
(三)最后才是fbinst/U+之类的启动盘制作软件。
换句话说,所谓的兼容性问题、启动失败问题等等,责任主要在(一)BIOS与
(二)U盘主控/固件,基本上与fbinst/U+关系不大。



二、有关解释

(一)量产后兼容性下降问题
主要是由于BIOS对Multi-Lun设备支持不佳造成的。

一般情况下,U盘出厂都是单一移动盘设备,即单Lun DISK设备。这种设备
BIOS一般还是能够正常识别支持。这时,剩下的问题就是启动盘制作问题了
(换句话说,就属于用fbinst/U+等软件处理介质格式方面的问题了)。

量产之后,至少变成2个Lun:CD+DISK,三启的更复杂。这涉及2个问题:

一是USB-CD BOOT支持问题,有些BIOS根本就不支持USB-CD这种BOOT方式
(或者说,UFI模块里不支持05H这种CD设备);

二是对Multi-Lun识别支持问题。这个问题非常复杂。
在BIOS层面,BIOS BOOT规范附录E,有比较大的篇幅说明。
很多BIOS(包括很新机器的BIOS)就是由于不能正常识别处理Multi-Lun,
卡在这上面,当然也就不能正常启动了。

(OS层面也有Multi-Lun支持问题,包括WIN和Linux,下面再说)


[ 本帖最后由 wuwuzz 于 2010-2-1 21:10 编辑 ]
2#
 楼主| 发表于 2010-2-1 21:01:47 | 只看该作者
(二)BIOS F功能键调用启动菜单问题
在BIOS内部,与平时保存开机项BOOT处理不尽相同,主要牵涉到
ROM里几个数组处理、INT调用。



(三)U盘主控/固件兼容性问题

很多同学已经发现,某些主控U盘启动兼容性好/有些则较差,但说不上理由。
我经过一段时间学习、测试,认为这是有理论根据的。那就是:


1、由于U盘主控/固件差异,同样的设备,对同一UFI指令,处理结果不完全相同。
2、有的就没有完全按已定的USB标准来实现。
3、存在BUG,对BIOS的指令回应有问题。
......

想想看,这些因素累加到最后会有什么后果!

[ 本帖最后由 wuwuzz 于 2010-2-1 21:05 编辑 ]
回复

使用道具 举报

3#
 楼主| 发表于 2010-2-1 21:02:00 | 只看该作者
(四)为什么Win开机后U盘使用正常

Win带有完整的USB驱动实现(内容很庞大、层次很多)。
BIOS阶段则是把大象塞进钥匙孔里,很难实现太多功能。

但要指出,对Multi-Lun设备,Win也是经过补丁之后才得以支持的。
比如W2K,大概是SP3之后才提供支持。Linux也是经过多个版本之后,
内核才提供相应的支持选项。



[ 本帖最后由 wuwuzz 于 2010-2-1 21:06 编辑 ]
回复

使用道具 举报

4#
发表于 2010-2-2 06:05:41 | 只看该作者
专业性较强!一是没办法完全读懂 二是就算完全搞明白,这些硬件问题也是无法解决的!

我做U启就是为了一种好奇!就算成功,其实也没太大的用武之地!所以剩下问题留给楼主这样的高手去探讨吧!

不过还是十分感谢楼主的回答!谢谢!

至于我的安国6983已经搞明白了-----安国6983在Award主板上无法启动(已经在4台同主板的电脑用同U盘测试)。

两方面原因!

1.电脑主板

2.U盘芯片

要达成无法启动的条件我想这两点是缺一不可的!

再次感谢LZ的回答!谢谢!

[ 本帖最后由 忆小北 于 2010-2-2 06:08 编辑 ]
回复

使用道具 举报

5#
发表于 2010-2-2 19:09:06 | 只看该作者
好文章,值得学习,谢谢楼主。
回复

使用道具 举报

6#
发表于 2010-2-3 00:04:48 | 只看该作者
呵呵。。学习了。谢谢楼主啦。。。。。。。。。。
回复

使用道具 举报

7#
发表于 2010-2-3 10:42:04 | 只看该作者
对于U3,出厂就是CD+DISK,做CD+fb是不是兼容性方面有优势呢?
回复

使用道具 举报

8#
发表于 2010-2-3 10:53:47 | 只看该作者
分析有道理,所以所谓一U走天下是不可能的
回复

使用道具 举报

9#
 楼主| 发表于 2010-2-3 12:16:29 | 只看该作者
原帖由 冷山 于 2010-2-3 10:42 发表
对于U3,出厂就是CD+DISK,做CD+fb是不是兼容性方面有优势呢?


我的看法: BOOT兼容性方面没有优势。

我在上面已经说了,multi-lun支持、CD BOOT支持,
对BIOS而言,处理起来很麻烦。
-----------------------------------------------------------------------
U3的特点主要是:一个完整的平台(已订出工业标准)。
它那个出厂CD,主要是用于保密。
回复

使用道具 举报

10#
发表于 2010-2-3 13:16:24 | 只看该作者
的确,由于主板的 BlOS不同,现在还很难实现—盘走天下.
回复

使用道具 举报

11#
发表于 2010-2-22 11:53:26 | 只看该作者
其实不仅“USB-CDROM+FBINST”这种双启动方式,以前热门的“三区三启”也是如此,都不会在本质上提高启动成功率,反而把启动问题复杂化了。
回复

使用道具 举报

12#
发表于 2010-2-22 13:09:10 | 只看该作者
看来安国的主控兼容性太差了,我的优盘就是安国主控的,启动不了使用win2003.is_这样的打包内核,量产成CDROM+HDD后,就无法使用fbinst了
回复

使用道具 举报

13#
发表于 2010-2-22 16:11:23 | 只看该作者
言之有理,深有体会。支持楼主!!!!!
回复

使用道具 举报

14#
发表于 2010-2-22 21:47:22 | 只看该作者
的确应该深层次地研究U盘启动问题,而不是简单的YY之类的!
我们这个版面应该多些这样的话题,谢谢楼主。
回复

使用道具 举报

15#
发表于 2010-2-22 22:02:39 | 只看该作者
这是重要的学习帖,得顶起做标记!
回复

使用道具 举报

16#
发表于 2010-2-23 07:36:04 | 只看该作者
如果要加强固件编程方面的讨论,我认为应该整合国内论坛这方面的高手进来,但这个难度非常的大。高手都是为公司工作的,程序是保密的,他们会不会出来回答问题呢?硬件方面涉及到了BIOS与主控,BIOS厂家少,程序规范,用户多,而对于U盘主控,这就比较难了,主控厂家多,程序互不兼容且保密,没有统一的标准,这使得解决U盘启动难题的难度就非常的大。

但也并非没有办法,BIOS目前都是新的,也有标准可以参考,我们可以选择一家或几家的主控来解决启动兼容性问题,但是这样的人才在哪儿呢?如果国内找不到,国外有吗?据我了了解,也非常的少,MSFN论坛很久也来都不知道USBCDROM是什么东西,后来虽然有少数讨论,但也不深入,没有我们的量产区发展的好。

话说回来,如果U盘主控方面真能出一个像不点一样的无私的乐于奉献的高手出来,U盘启动的兼容性问题会大为改观的。
回复

使用道具 举报

17#
 楼主| 发表于 2010-2-23 13:12:38 | 只看该作者
原帖由 victor888 于 2010-2-23 07:36 发表
如果要加强固件编程方面的讨论,我认为应该整合国内论坛这方面的高手进来,但这个难度非常的大。高手都是为公司工作的,程序是保密的,他们会不会出来回答问题呢?硬件方面涉及到了BIOS与主控,BIOS厂家少,程序 ...


V版,您终于回来了,说说我的想法。

当我艰苦地啃完N多英文资料后,自我感觉对USB的认识已今非昔比。
我深刻感受到:加强对BIOS、SCSI、USB、U盘固件等相关理论性内容的研究,太重要了。


这不是着眼于解决某个细节问题,而是扩大知识面、开阔眼界。只有把理论根基打牢,
才能在遇到问题时,给出正确的方向指导,找到正确的分析、验证思路。


现在论坛许多同学的问题就在这,知识面不够广、眼界比较狭窄。我在顶楼提倡学习,
就是不希望看到同学们还是原地踏步、水平迟迟不能提高。
回复

使用道具 举报

18#
 楼主| 发表于 2010-2-23 13:13:23 | 只看该作者

固件学习问题,本质上是加深对USB的认识。我们的主要目的,不是自己动手去改
某个主控固件代码,而是为了打破神秘感,知道其框架原理,学习部分感兴趣的
细节内容(比如量产CD的实现)。因此,只需找公开的范例代码(模型)就行了,
不需要全面学习每个细节,也不需要整合公司高手。


事实上,对我们而言,最有兴趣的内容:UFI指令的实现,各主控代码是大同小异的。
这就象对1+1=?编程,无论你用MS C还是Bland C,框架是一样的,无非是具体写法有
小差别。


BIOS问题,BIOS BOOT规范、UMSD bootability规范实际上都没有得到完全遵守,
同时实现两者就更难了。


MSFN,确实是个很好的论坛,应该是侧重点不同吧,量产的内容涉及少。
回复

使用道具 举报

19#
发表于 2010-2-24 07:38:08 | 只看该作者
如果仅能从理论方面明白无法启动的原因,那么还是不能从根本上解决启动问题,在更改BIOS不太可能的情况下,U盘主控编程研究更具有意义,可是我们网站没有任何一个懂这方面编程的人出现。因此,目前的讨论也只是理论层面,虽然明白了原因,但还是找不到解决的方法。
回复

使用道具 举报

20#
发表于 2010-2-24 13:09:26 | 只看该作者
楼主言之有理,我也觉得U启成功率取决于硬件,和U+FBINST关系不大
回复

使用道具 举报

21#
 楼主| 发表于 2010-2-24 13:15:29 | 只看该作者
原帖由 victor888 于 2010-2-24 07:38 发表
如果仅能从理论方面明白无法启动的原因,那么还是不能从根本上解决启动问题,在更改BIOS不太可能的情况下,U盘主控编程研究更具有意义,可是我们网站没有任何一个懂这方面编程的人出现。因此,目前的讨论也只是 ...



呵呵,我不这样看。

事实上,我们不是为研究理论而研究理论。我在前面已经说了,
理论最重要的作用还是指出正确的方向,为下一步实践成功

提供基础。

例如:

1、正是研究了SCSI、ASPI资料,所以能进一步分析USBASPI.SYS
卡死、USBCD.SYS不支持非Lun0位置CD问题,指导我们找出
比USBCD.SYS更好的驱动;


2、正是有了BIOS、Multi-Lun方面的研究,我们才有了CD+fbinst盘
双启失败原因认识,那么我就可以在量产时把DISK设备(fbinst)放在前、
CD放在后,或干脆不要CD,量产成DISK+DISK设备来应对。


3、还有一件我感触较深的事。

“先加载USB2驱动、以加速PE启动”讨论中,您当时提到,新机器
BIOS应内置了USB 2驱动,不需要另外加DOS驱动也能高速,我当时
问您,有没有权威资料证明这一点,您回答是凭感觉,新旧机器对比。

我后来找到了这种权威资料,不仅说明了上述问题,附带的,BIOS-OS
USB驱动的联系/USB BOOT存在问题等我们感兴趣的信息,也都有了。


应该令我们所有人都汗颜,这个资料2002年就发表了!
看看,不及时广泛搜集资料学习,理论根基不行,
会给以后的研究造成多大困扰!
......
回复

使用道具 举报

22#
 楼主| 发表于 2010-2-24 13:16:28 | 只看该作者
================================================================
U盘固件编程本身没有太大研究价值,关键是对规范细节的了解和实现。

《Linux那些事SCSI篇》中,有句结尾的话我非常喜欢:

“我们费尽周折、处心积虑、不择手段、翻山越岭、跋山涉水、就是要
得到这两个bit的值”.

套用下面U盘固件这段代码非常合适,看上去非常平淡无奇,就是定义
一个数据结构:

u8 Standard_Inquiry_Data[] =
  {   
    0x05,         
    0x80,         
    0x02,         
    0x02,
    ...(略)
  };



但其内在含义却非常丰富---定义、实现USB-CD设备!

如果不了解规范和理论,就是这段源代码放在眼前,也看不出它到底在干什么,
是怎么定义、实现USB-CD的。


[ 本帖最后由 wuwuzz 于 2010-2-24 19:35 编辑 ]
回复

使用道具 举报

23#
发表于 2010-2-24 20:24:58 | 只看该作者
你回答的非常的好,看你的想法和决心,我可以协助找站长为你开设一个子版,也可以协助去BOOTLAND或联系PLOP的作者以及MYDIGIT的人和你一起讨论。

现在你很孤独,能和你讨论的人几乎没有,这不正常。
回复

使用道具 举报

24#
 楼主| 发表于 2010-2-25 12:26:41 | 只看该作者
原帖由 victor888 于 2010-2-24 20:24 发表
你回答的非常的好,看你的想法和决心,我可以协助找站长为你开设一个子版,也可以协助去BOOTLAND或联系PLOP的作者以及MYDIGIT的人和你一起讨论。

现在你很孤独,能和你讨论的人几乎没有,这不正常。



V版,您太高看我了,不敢当。

我也是泛读,现炒现卖,专业积累并不充分。
这点微末功夫还不足以占用论坛版块资源。

本坛很多人,如netwinxp、chenall、fujianabc、lianjiang......
内功都要比我深厚得多,可能是由于各人兴趣点不同,导致
有些话题讨论比较冷清。

前面我说啃资料,并非描述多勤奋、决心多大,主要意思还是说
水平有限、力不从心。虽耗费了大量时间,认识水平也比2年前
有改观,但总体效果还是有遗憾之处,仍存在一知半解的情形。

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

我的愿望,是搞“资料搜集/专题学习讨论”帖,内容就是紧紧围绕
“USB BOOT”这个中心,筛选BIOS、USB相关内容学习讨论,交流提高。

标题是什么、范围多大、BIOS和USB是否分列成2个帖子,都没想好,想
听听意见。

第一批要上传的必看资料,我倒是计划好了:
1、BIOS BOOT规范《BIOS Boot Specification》
2、CDROM BOOT规范《“El Torito” Bootable CD-ROM Format Specification》
3、USB BOOT规范《USB Mass Storage Specification for Bootability》


这几个家伙类似大部头的工具书,现在看似用不上,是闲棋冷子,但将来
某一天一定会派上大用场。
其他类型的资料,看大家回应如何,再确定是否
陆续归纳进去。


当然,这个帖最终命运取决于大家---要靠大家动手不断充实内容。

回复

使用道具 举报

25#
发表于 2010-2-25 16:16:41 | 只看该作者
没有感觉有解决方案在里面。
回复

使用道具 举报

26#
发表于 2010-2-26 23:44:37 | 只看该作者

回复 #21 wuwuzz 的帖子

请教楼主,我的主控是SM32X,能否如您所说把disk盘量产在前,CD盘在后呢,如何设置?谢谢。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-7-29 23:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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