U盘量产网

专题:金士顿U盘安卓系统工具精品工具

您所在的位置: 首页 > U盘教程 > U盘启动教程 > U盘怎么都启动不了怎么办,是MBR/BIOS问题还是bios固件缺陷?
推荐内容

U盘怎么都启动不了怎么办,是MBR/BIOS问题还是bios固件缺陷?

2013-11-06 来源:本站整理 作者:U盘量产网 浏览量:5660次

一、U启的初始处理

量产/未量产的U盘、外置USB移动硬盘、外置USB-FDD/CD/DVD/ZIP
驱动器等都属于UMSD(Usb Mass Storage Device,USB海量存储设备)。
部分手机、MP3、MP4具备Usb Mass Storage属性,也视同UMSD。

U启初始阶段的大致处理过程是:枚举、获取描述符信息结束后,BIOS
发固定的SCSI/UFI指令,UMSD固件接收执行,并向BIOS反馈结果,提供
原始数据。比如,报告自己是DISK还是CD/DVD,报告自己的LBA、原始
CHS值(注:这个CHS是固件提供的CHS,与使用fbinst/U+...软件格式化无关)。

但是,如果UMSD固件存在缺陷,不完全支持那些本应支持的指令,则会有多种
可能的错误:
1、严重错误,真死机或挂起等待唤醒;
2、超时响应,假死机或被BIOS忽略;
3、命令执行成功,但提供的原始数据不正确。比如:H/S为空、H/S为0、C>1024。
则BIOS会补BUG--结合其他指令结果,尝试修改--甚至强行硬编码,重新伪造生成
新的CHS,使之看上去更合法。INT 13 F8/F48内部处理实际上就是这样。
......

很不幸,现实中,UMSD固件存在缺陷,不是个别现象,而是普遍现象。这其实
也不十分奇怪。UMSD固件的开发者,很大程度上只考虑了普通存储用途(实现
基本的SCSI指令要求即可),压根就没认真考虑BOOT用途! 其固件开发当然
也就没有遵守USB启动标准--《UMS Spec for bootability》要求,去实现
对BOOT至关重要的UFI指令。

二、我为什么不对MBR/PBR/fbinst/U+/HP格式化...的讨论投入很大
精力,为什么不赞成不点的BIOS阴谋论

(一)第1个问题,要看是什么情况
从一中的说明可知,有些UMSD固件缺陷造成的错误太严重,U启还没到
读MBR/PBR阶段就焦头烂额了,甚至早就Game Over了。在这种情况下,
考察UMSD的MBR/PBR...这些内容,有点马后炮,意义不大。

另外,在Phoenix BIOS的世界里,BIOS主要是从驱动器设备获取参数,而不是
从介质(含有MBR/PBR)上来获取参数。所以,在这种环境中,就不要把过多的
精力投到倒腾介质格式上了......

(注:AMI BIOS则不同,它要用MBR的内容作为生成参数的考虑因素之一,在这种
环境中,MBR/PBR...这些内容有讨论下去的价值。)


(二)第2个问题
这在一中已经涉及到了。BIOS的“异常”表现,与其努力弥补UMSD固件缺陷
有关,而不是阴谋、设陷阱,这在CHS问题上尤其突出。从已知的AMI、Phoenix
BIOS源代码来看,BIOS的努力还远不止CHS这些。例如:

AMI BIOS定义了名为“INCMPT_FLAGS”的不兼容UMSD标志位结构,
对多种有固件缺陷UMSD,专门进行特别处理;Phoenix BIOS会对一些UMSD
固件造成的超时问题,多加指令试图唤醒或确认其准备好,再进行下一步
处理......

从实践上看,BIOS阴谋论也容易让人陷入思维定势,不利于问题的解决。
事实上,重点考虑2点就可以了:
1、USB供电问题;2、UMSD固件缺陷。还没到担心EB、fbinst的地步。



需要指出一点,BIOS的补BUG努力,十分具有讽刺意味,让人哭笑不得。
很多同学不是一直在高呼,要遵守统一的U启标准吗? 孰不知,BIOS真要严格
按U启标准来,我们的UMSD会更难通过检查、死得更难看!  

而有固件缺陷的UMSD,经过BIOS的擦屁股,BOOT成功了,高兴么?
不高兴。因为这意味着BIOS做了妥协让步,违反了已经制订发行的U启标准。
三、关于umsdinfo

既然UMSD固件缺陷造成种种问题,能不能把相关信息取出,让大家
实际看看呢?当然可以。原理很简单:按U启标准要求,把那些对
BOOT至关重要的命令包发给UMSD,然后把UMSD固件的执行结果
放在TXT文件里。

这些命令包是固定的。发包可以在BIOS下、利用INT13 F50发包服务进行
(buldr增加pss模块重新编译可达此目的);也可以在高版本的Windows
/Linux下手动进行。甚至还可以不自己发包,而利用USB协议分析软件
查看、捕获OS的自动发包结果。

通过反复查找测试,现找到比较好的解决办法:

Linux提供了专用于发送SCSI命令包的sg软件,而且sg有windows命令行版本。
我们可以搞个shell前端界面,核心捆绑sg。这样既适合一般用户使用,又
降低了开发难度。最后的成品就是umsdinfo.exe这个小工具(XP/2K环境)。

umsdinfo.exe是个绿色软件,执行后会自动查找本机的UMSD,用户只要选择一下,
umsdinfo.exe就会发包产生结果,其标准输出、标准错误都放在TXT文件里,方便
用户上传、分析。需要说明的是:由于umsdinfo.exe捆绑了sg,可能会被杀毒软件
误报,忽略即可。

下面是umsdinfo.exe的运行示意图:

U盘怎么都启动不了怎么办,是MBR/BIOS问题还是bios固件缺陷?


工具下载:umsdinfo

每个USB存储设备,umsdinfo.exe将产生2个TXT文件:

一、info<设备名>.txt文件:
保存UMSD固件执行SCSI/UFI命令输出结果,目前共执行4条命令(4个检查点):
Inquiry查询、Read Capacity读容量、Mode Sense(10)模式感知、Mode Sense(6)。
前三条命令是USB BOOT规范要求必须实现的。

最后一个M6是我增加的。原因是:现实中由于UMSD固件缺陷,M10执行出错的可能性
非常大,需要尝试M6作为补充。

二、err<设备名>.txt文件:
记录SCSI/UFI命令执行成功与否。
执行成功:状态标记good,出错信息为空。
执行失败:状态标记非good,如check condition,会有不同的出错信息,比如:
非法请求。这表示UMSD固件不支持该命令。

根据USB BOOT规范要求,前三条命令除了good,不能有其他出错信息。


U盘怎么都启动不了怎么办,是MBR/BIOS问题还是bios固件缺陷?手机版:https://m.upantool.com/jiaocheng/boot/4330.html

软件评论

育龙高手破解版微微一笑很倾城正版手游城堡战争破解版无限金币无限钻石天天爱闯关2破解版小花仙守护天使无限钻石版创造与魔法破解版千年风华无限钻石版第7装甲师破解版无法触碰的掌心破解版城堡战争电视版破解版口袋进化破解版火柴人联盟2无限火柴破解版第7装甲师无限金条安卓变形金刚:地球之战破解版我的帝国无限元宝内购破解版乱世神将bt版蜀山战纪手游坦克大决战新版王者守卫内购无限钻石金币明星梦工厂游戏塔防西游记无限内购版汉家江湖福利版封仙之怒手机版萌菌大作战2变态版三国杀OL互通版最新点点西游最新破解版航海王启航满v版牧羊人之心内购版格斗之皇破解版无限钻石超神三国志正版

声明:U盘量产网为非赢利类网站