无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: wuwuzz
打印 上一主题 下一主题

[原创] (长帖)U启故障关注MBR/BIOS是不够的,更深的病根在固件缺陷。附umsdinfo工具。

  [复制链接]
31#
 楼主| 发表于 2011-3-24 20:43:22 | 只看该作者
原帖由 sgw888 于 2011-3-24 10:01 发表
非常希望楼主可以把USB的相关知识跟楼主提供的程序得到的信息具体来讲解一下。得到的信息分别是什么意思。

下面是上传的两个U盘的信息,楼主有空给具体解释一下,谢谢了。


得到的信息是:
UMSD BOOT规范要求的、必须实现的几个指令执行结果。他们将为BIOS BOOT
提供重要信息。例如:CHS、总扇区数等等。


从TXT文件看:
adata:SMI主控 4G   移动盘   固件CHS参数16h/63s/7872c  C>1024有问题
Lenovo:SMI主控 2G  移动盘   固件CHS参数16h/63s/3936c  C>1024有问题
回复

使用道具 举报

32#
 楼主| 发表于 2011-3-24 20:44:43 | 只看该作者
原帖由 sratlf 于 2011-3-24 12:38 发表
我的两个U盘的测试结果  慧荣smi325x主控 以及 联盛ut165主控

唯一能看懂的是 err.txt文件里  四条命令状态标记都是good



ut165:量产了2个固定盘
2.7G盘     固件CHS参数08h/32s/500c 算出容量62M偏小 CHS不可用
12.8G盘     固件CHS参数08h/32s/500c 算出容量62M偏小 CHS不可用

-----------------------------------------------------------------
SM325X:量产了CD+固定盘

    6.5G固定盘  固件CHS参数16h/63s/15744c  C>1024有问题

    以下信息存疑(主要是不同主控固件CD取值算法不同,我无法确定):
       CDROM容量疑似1.1G(或者,另一可能值为280M)?
       这个盘总容量疑似8G ?

还请sratlf证实一下。

[ 本帖最后由 wuwuzz 于 2011-3-24 20:45 编辑 ]
回复

使用道具 举报

33#
发表于 2011-3-24 21:45:30 | 只看该作者

回复 #32 wuwuzz 的帖子

别的我都大概明白了,想问一下你是怎么确定固定盘还是移动盘的?
另外,我注意到前面lmle量产的cd里Rcap里是正确的0x800字节每扇区,但m10里是错误的0x200字节每扇区。
发现m10和m6都不可靠,只有Rcap才可靠。
另外m10的前8byte怎么解释?完全看不懂前8byte。
我也贴下我的u盘,给楼主参考吧。

[ 本帖最后由 wannaknow 于 2011-3-24 21:50 编辑 ]

3个u盘.zip

2.3 KB, 下载次数: 30, 下载积分: 无忧币 -2

回复

使用道具 举报

34#
发表于 2011-3-24 21:59:39 | 只看该作者

回复 #32 wuwuzz 的帖子

kingston 8g是个8g的u盘,kingston DataTraveler 8G,主控SSS6691(好像是),不能量产cd。
lenovo 512m是个小u盘,量产成了固定盘。好像是SM32X的主控
sd是个山寨读卡器。叫Kawau SDHC Card Reader
回复

使用道具 举报

35#
发表于 2011-3-24 23:03:27 | 只看该作者
支持楼主以USB设备启动的标准制作程序供我们去筛选手头的U启兼容性最好的U盘或读卡器等设备
回复

使用道具 举报

36#
 楼主| 发表于 2011-3-25 06:11:54 | 只看该作者
原帖由 wannaknow 于 2011-3-24 21:45 发表
别的我都大概明白了,想问一下你是怎么确定固定盘还是移动盘的?
另外,我注意到前面lmle量产的cd里Rcap里是正确的0x800字节每扇区,但m10里是错误的0x200字节每扇区。发现m10和m6都不可靠,只有Rcap才可靠。 ...


1、固定盘/移动盘区分,由介质位取值确定。

2、那不是M10信息错误。M10可以提供多种信息,umsdinfo.exe只选了一小部分我们有兴趣
的DISK数据,USB-CD/DVD不使用(USB-DISK才使用),这在规范里也有说明。
在umsdinfo.exe的下一版里,将进行调整,不再对USB-CD/DVD发M10命令包。

3、Rcap信息可靠与否,暂时还不能下定论。标准是固定的,但实践中发现,不同主控
固件算法还是有差异,不能一概而论。这也是我在32#询问sratlf的原因。
回复

使用道具 举报

37#
发表于 2011-3-25 07:02:24 | 只看该作者

回复 #36 wuwuzz 的帖子

1.这个“介质位”是什么?是哪个命令返回的哪个byte的哪个bit?
2.也就是说理论上cd不应该对m10返回05 1e?或者说返回任何内容都可以?
3.Rcap应该是普遍有效的,尤其是总扇区数肯定是有效的,记得你以前发过一个Rcap返回0x200字节每扇区的量产的光盘,按我的观点,这种u盘就是垃圾得没下限的东西,“扔了”算了。(拿它存东西还是可以的,就别量产cd丢人了)。
4.简单的说,找原始c/h/s还是比较简单的啊。在m10里从第八byte开始找05 1E,找到了就套用05 1E xx xx HH ST By pS No Cy xxxx的格式,
xx是没用的东西,HH是Number of Headers,ST是sectors per Track,By pS是Bytes per Sector,一般是02 00,意思就是0x200字节,也就是512byte。No Cy 就是Number of Cylinders,注意这里都是大端序,也就是说,你看见dump出来的是12 3f,那它就是0x123f,这点和mbr不一样。
5.Rcap返回的东西最简单,LB LB LB LB xx xx By pS ,前面的LB LB LB LB 就是总扇区数,By pS是Bytes per Sector,一般是02 00,意思就是0x200字节,也就是512byte。例:00 0f 1b ff 00 00 02 00 。0xf1bff扇区,0x200字节每扇区。换算一下,才483M小u盘
请wuwuzz指正,我说的有啥误导人的地方吗?
回复

使用道具 举报

38#
发表于 2011-3-25 08:26:49 | 只看该作者
不懂,但支持!我把我的USB也贴上楼主看看!!!
USB现在是FB启动!


芯片制造商: SMI(慧荣)
  芯片型号: SM321~SM325

usb.rar

624 Bytes, 下载次数: 35, 下载积分: 无忧币 -2

回复

使用道具 举报

39#
发表于 2011-3-25 10:17:44 | 只看该作者
原帖由 快雪时晴 于 2011-3-23 13:07 发表
今天上午在时空看过这个话题了,很期待革命性的工具,这个会有吗?
昨天扫盲了一下UEFI知识, 可能这个就是BIOS终结者,以后不存在u盘启动问题了,或者说启动不是个大问题了

如果已经扫盲了efi的知识,就会知道,efi启动式全新的方式,和执行一个可执行文件差不多,不会碰到bios启动那么多问题,但这样无法兼容传统的系统启动(相信只能启动64位bootmgr.efi或者grub2的不能满足大家的要求)。

如果要在uefi主板启动传统的io.sys/ntldr/grldr等,还是需要bios模拟层的,这样问题依旧出现

[ 本帖最后由 fujianabc 于 2011-3-25 10:18 编辑 ]
回复

使用道具 举报

40#
发表于 2011-3-25 10:32:59 | 只看该作者
原帖由 wuwuzz 于 2011-3-24 20:44 发表
ut165:量产了2个固定盘
2.7G盘     固件CHS参数08h/32s/500c 算出容量62M偏小 CHS不可用
12.8G盘     固件CHS参数08h/32s/500c 算出容量62M偏小 CHS不可用

-----------------------------------------------------------------
SM325X:量产了CD+固定盘

    6.5G固定盘  固件CHS参数16h/63s/15744c  C>1024有问题

    以下信息存疑(主要是不同主控固件CD取值算法不同,我无法确定):
       CDROM容量疑似1.1G(或者,另一可能值为280M)?
       这个盘总容量疑似8G ?

还请sratlf证实一下。



smi325x的U盘确实是8G  ut165的U盘是16G

smi325x的U盘是量产了1.6G的cdrom  其余为hdd固定盘

ut165的U盘量产信息没错
回复

使用道具 举报

41#
发表于 2011-3-25 11:24:53 | 只看该作者
--《UMS Spec for bootability》楼主,这个可否提供一下资料?
回复

使用道具 举报

42#
发表于 2011-3-25 13:39:14 | 只看该作者

回复 #41 sgw888 的帖子

这是我自己google的,不知道和楼主看的一样不一样:
http://www.usb.org/developers/devclass_docs里有基本上所有研究需要的Spec,在http://www.usb.org/developers/devclass_docs/usbmass-ufi10.pdf里有所有使用ufi命令集的u盘应该支持的命令。
http://www.usb.org/developers/devclass_docs/usb_msc_boot_1.0.pdf集中列出了“支持启动”的u盘“应该”支持的命令,其中包含3条umsinfo探测的指令。
不过好像现在的u盘都不是ufi的,而是scsi的。scsi command set貌似更复杂,你可以自己也试试google下,我找到了个http://hackipedia.org/Hardware/S ... ommands%20-%204.pdf,不过我觉得内容不好,看不懂,而且我没找到返回值的标准。
回复

使用道具 举报

43#
发表于 2011-3-25 14:45:01 | 只看该作者
测试了下,群联主控u盘,目前暂只能看懂4个good……
期待更新版本……
回复

使用道具 举报

44#
发表于 2011-3-25 18:17:01 | 只看该作者
这个话题值得深入,至少可以作为买U盘、移动硬盘的参考啊。
回复

使用道具 举报

45#
发表于 2011-3-25 21:03:57 | 只看该作者
有一定的道理,下载来实践一下,谢谢!
回复

使用道具 举报

46#
发表于 2011-3-25 22:07:49 | 只看该作者

清华紫光1G,很老的u盘了

------------------------------------ pd2: I------------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 36 bytes of data:
------------------------------------ pd2: Rcap---------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 8 bytes of data:
------------------------------------ pd2: M10----------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 8 bytes of data:
------------------------------------ pd2: M6-----------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 4 bytes of data:




PD2     [I]     <Usb  >  Alcor     Flash Disk        8.07  
------------------------------------ pd2: I------------------------------------
00     00 80 02 02 1f 00 00 00  41 6c 63 6f 72 20 20 20    ........Alcor   
10     46 6c 61 73 68 20 44 69  73 6b 20 20 20 20 20 20    Flash Disk      
20     38 2e 30 37                                         8.07
------------------------------------ pd2: Rcap---------------------------------
00     00 1e 7f ff 00 00 02 00                             ........
------------------------------------ pd2: M10----------------------------------
00     00 06 00 00 00 00 00 00                             ........
------------------------------------ pd2: M6-----------------------------------
00     03 00 00 00                                         ....
回复

使用道具 举报

47#
 楼主| 发表于 2011-3-26 08:19:06 | 只看该作者
原帖由 wannaknow 于 2011-3-25 07:02 发表
1.这个“介质位”是什么?是哪个命令返回的哪个byte的哪个bit?
2.也就是说理论上cd不应该对m10返回05 1e?或者说返回任何内容都可以?
3.Rcap应该是普遍有效的,尤其是总扇区数肯定是有效的,记得你以前发过一 ...


原帖由 wannaknow 于 2011-3-25 13:39 发表
这是我自己google的,不知道和楼主看的一样不一样:
http://www.usb.org/developers/devclass_docs里有基本上所有研究需要的Spec,在http: //www.usb.org/developers/devclass_docs/usbmass-ufi10.pdf里有所有 ...




很惭愧,对USB BOOT,我也是在摸索、对照理解,指正不敢当。
你总结得非常好,可以作为诸位同学的参考。

有一点待定。USB-CD,Rcap值不同主控算法不同。其LBA,有的是以2K字节扇计数,
有的是按512字节扇计数。且两种情形的USB-CD都能BOOT成功,囧...........

---------------------------------------------------------------------
天下武功出少林,SCSI指令集就是那个少林。

存储类设备,不管其是USB还是ATAPI、SCSI......都可参照使用SCSI指令集
UFI可以看成是经过简化、修改的SCSI子集

问题的关键是:用于存储用途,你遵从SCSI标准、采用SCSI指令集没问题。
但用于USB BOOT呢? USB BOOT规范要求如何,你就得如何。

[ 本帖最后由 wuwuzz 于 2011-3-26 08:40 编辑 ]
回复

使用道具 举报

48#
 楼主| 发表于 2011-3-26 08:19:47 | 只看该作者
原帖由 sgw888 于 2011-3-25 11:24 发表
--《UMS Spec for bootability》楼主,这个可否提供一下资料?


wannaknow在42楼给出了链接,就是usb_msc_boot_1.0.pdf那本
回复

使用道具 举报

49#
 楼主| 发表于 2011-3-26 08:20:26 | 只看该作者
原帖由 amwwc 于 2011-3-25 08:26 发表
芯片制造商: SMI(慧荣)
  芯片型号: SM321~SM325


4G 移动盘  CHS=16h/63s/7872c ,C>1024
回复

使用道具 举报

50#
 楼主| 发表于 2011-3-26 08:20:59 | 只看该作者
原帖由 快雪时晴 于 2011-3-25 22:07 发表
------------------------------------ pd2: I------------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 36 bytes of data:
--------------------- ...



安国主控,固件BUG严重,其USB DISK/CD都不满足USB BOOT规范要求。

你贴出来的是DISK信息,固件对M10指令不回应CHS信息。需“完全依赖”BIOS补BUG。
回复

使用道具 举报

51#
 楼主| 发表于 2011-3-26 08:21:48 | 只看该作者
原帖由 fujianabc 于 2011-3-25 10:17 发表

如果已经扫盲了efi的知识,就会知道,efi启动式全新的方式,和执行一个可执行文件差不多,不会碰到bios启动那么多问题,但这样无法兼容传统的系统启动(相信只能启动64位bootmgr.efi或者grub2的不能满足大家的 ...


欢迎fujianabc老师来做科普。希望能多听到您的指导。
回复

使用道具 举报

52#
 楼主| 发表于 2011-3-26 08:23:00 | 只看该作者
1、因忙于下一版本的制作,可能无法及时回复诸位,敬请见谅。

2、在制作中发现一些比较囧的问题:

如严格按照USB BOOT标准来,可能会造成问题太多。

比如,按标准,固件应返回标志"AA BB",但有的USB移动硬盘固件不按标准来,
它不返回"AA BB",而返回"AA CC",这就会造成umsdinfo.exe查找失败,不能
提取后续参数。初步打算,象BIOS一样的策略-----做妥协让步,放宽条件查找,比如
只查"AA",以努力获取后续参数;

还有,有的UMSD(比如手机)固件----对M10指令支持不好,会超时甚至重试,
这就可能会造成err.txt文件中的记录混乱,既有GOOD信息,又有出错信息。

[ 本帖最后由 wuwuzz 于 2011-3-26 08:26 编辑 ]
回复

使用道具 举报

53#
发表于 2011-3-26 15:18:56 | 只看该作者

回复 #53 wuwuzz 的帖子

我求你了,告诉我怎么判断u盘是固定盘还是移动盘吧!告诉我怎么看吧。。。。。看Spec我晕死了。这个“介质位”是什么?是哪个命令返回的哪个byte的哪个bit?
我就知道inquire第一位是05就是光盘。
还有,麻烦去时空看一下我最后问的问题:SubClass Code上哪找?绝大多数u盘的SubClass Code是什么?
谢谢!十分感谢!
回复

使用道具 举报

54#
发表于 2011-3-26 15:24:27 | 只看该作者

回复 #53 wuwuzz 的帖子

另外,我把我在另一个帖子里写的观点复制过来,如果楼主能认同我的观点就不必纠结与U盘固件了。

写软件的有3种人:死认Spec的人,根本不知道自己在干什么,头痛医头,脚痛医脚的人和同时了解理论标准和事实标准,写出好软件的人。第一种人只知道标准,写的东西没有错,但不能用。第二种人复制,粘贴,debug,他们写的东西最多支持特定平台,还可能有隐患。他们让第一种人写的东西不能通用。第三种人见多识广,知道第二种人的常见问题,会主动避开,同时自己尽量遵守标准。但这种人太少了,绝大多数是第二种人。
acpi就是这样,真实bios开发(尤其是小厂)就是:买原代码,一眼不看就编译,刷bios,装xp,哎呀开不了机,胡乱改,能开机不能待机,再胡乱改,还是不行就写个for xp的驱动,搞定交差。你说这样粗制滥造的东西咱支持的了吗?不是咱不努力,是bios(部分)太烂了。

补充一下,U盘固件开发也是类似:买主控,一眼不看就量产,哎呀XP没反应,胡乱改,再胡乱改,搞定交差。这样的U盘我猜是绝大多数。
回复

使用道具 举报

55#
发表于 2011-3-26 23:32:29 | 只看该作者
学习中,坚决顶。。。。。
回复

使用道具 举报

56#
发表于 2011-4-3 20:55:07 | 只看该作者
高手的贴子,软件和硬件的结合!让我明白USB是怎么工作的!
回复

使用道具 举报

57#
发表于 2011-4-4 09:19:29 | 只看该作者
我的,笔记本自带读卡器(可启动),SSK读卡器(可启动),西数移动硬盘(没试过)
楼主研究吧

PD1     [J]     <Usb  >  Generic-  Multi-Card        1.00  
PD2     [K]     <Usb  >  WD        Ext HDD 1021      2021  
PD3     [L]     <Usb  >  Generic   STORAGE DEVICE    9451  
------------------------------------ PD1: I------------------------------------
00     00 8d 00 01 1f 01 00 00  47 65 6e 65 72 69 63 2d    ........Generic-
10     4d 75 6c 74 69 2d 43 61  72 64 20 20 20 20 20 20    Multi-Card      
20     31 2e 30 30                                         1.00
------------------------------------ PD1: Rcap---------------------------------
00     00 3c d7 ff 00 00 02 00                             .<......
------------------------------------ PD1: M10----------------------------------
00     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
10     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
20     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
30     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
40     00 00 00 00 00 00                                   ......
------------------------------------ PD1: M6-----------------------------------
00     03 00 00 00                                         ....


------------------------------------ PD1: I------------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 36 bytes of data:
------------------------------------ PD1: Rcap---------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 8 bytes of data:
------------------------------------ PD1: M10----------------------------------
SCSI Status: Check Condition

Sense Information:
Fixed format, current;  Sense key: Illegal Request
Additional sense: Invalid field in cdb

Received 70 bytes of data:
------------------------------------ PD1: M6-----------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 4 bytes of data:


PD1     [J]     <Usb  >  Generic-  Multi-Card        1.00  
PD2     [K]     <Usb  >  WD        Ext HDD 1021      2021  
PD3     [L]     <Usb  >  Generic   STORAGE DEVICE    9451  
------------------------------------ PD2: I------------------------------------
00     00 00 04 02 45 00 00 00  57 44 20 20 20 20 20 20    ....E...WD      
10     45 78 74 20 48 44 44 20  31 30 32 31 20 20 20 20    Ext HDD 1021   
20     32 30 32 31                                         2021
------------------------------------ PD2: Rcap---------------------------------
00     74 70 57 ff 00 00 02 00                             tpW.....
------------------------------------ PD2: M10----------------------------------
00     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
10     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
20     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
30     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
40     00 00 00 00 00 00                                   ......
------------------------------------ PD2: M6-----------------------------------
00     17 00 10 08 74 70 58 00  00 00 02 00 9a 0a 00 01    ....tpX.........
10     00 00 00 00 00 00 46 50                             ......FP


------------------------------------ PD2: I------------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 36 bytes of data:
------------------------------------ PD2: Rcap---------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 8 bytes of data:
------------------------------------ PD2: M10----------------------------------
SCSI Status: Check Condition

Sense Information:
Fixed format, current;  Sense key: Illegal Request
Additional sense: Invalid field in cdb

Received 70 bytes of data:
------------------------------------ PD2: M6-----------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 24 bytes of data:


PD1     [J]     <Usb  >  Generic-  Multi-Card        1.00  
PD2     [K]     <Usb  >  WD        Ext HDD 1021      2021  
PD3     [L]     <Usb  >  Generic   STORAGE DEVICE    9451  
------------------------------------ PD3: I------------------------------------
00     00 80 00 00 29 00 00 00  47 65 6e 65 72 69 63 20    ....)...Generic
10     53 54 4f 52 41 47 45 20  44 45 56 49 43 45 20 20    STORAGE DEVICE  
20     39 34 35 31                                         9451
------------------------------------ PD3: Rcap---------------------------------
00     00 3c 0f ff 00 00 02 00                             .<......
------------------------------------ PD3: M10----------------------------------
00     00 06 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
10     00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ................
20     00 00 00 00 00 00 00 00                             ........
------------------------------------ PD3: M6-----------------------------------
00     03 00 00 00                                         ....

------------------------------------ PD3: I------------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 36 bytes of data:
------------------------------------ PD3: Rcap---------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 8 bytes of data:
------------------------------------ PD3: M10----------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 40 bytes of data:
------------------------------------ PD3: M6-----------------------------------
SCSI Status: Good

Sense Information:
sense buffer empty

Received 4 bytes of data:
回复

使用道具 举报

58#
发表于 2011-4-4 18:29:39 | 只看该作者
强贴,留个记号
fb实际上也就是最大限度的妥协
回复

使用道具 举报

59#
发表于 2011-4-4 18:37:05 | 只看该作者
呵呵...
稍微看了一下,也试了试,生成的errpd1中四个命令都是good...看来偶人品不错啊...
回复

使用道具 举报

60#
 楼主| 发表于 2011-4-12 12:22:46 | 只看该作者
版本已更新到V0.2,更名为ubootchk,已有了分析报告功能。
一般不需要再看原始信息了
http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-23 19:37

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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