wuwuzz 发表于 2012-1-5 18:52:13

U启兼容性检查工具ubootchk(for tinycore Linux)新版发布

一、前言
ubootchk最初运行于XP下,编写Linux版ubootchk的想法,是受不点思想的影响:
Linux是公开透明的,不会象Windows那样过滤、隐藏什么,在Linux下检查,更可信。

目前,ubootchk的Linux版,只实现了运行在tinycore Linux 4.0上,其他Linux
发行版暂不支持。这是因为tinycore Linux 4.0是不点优选的版本,ubootchk
必须得先考虑它。

二、Linux版的特点
(一)保留XP版本中对USB-ZIP/HDD/CD/DVD BOOT兼容性检查功能;未保留XP版本
中BIOS逻辑CHS测算功能;
(二)新增:驱动器设备顺序(Lun顺序)检查。现在能够检查出量产/非量产的
DISK或CD是前置还是后置。有些BIOS对设备顺序很敏感,此顺序将严重影响
U启兼容性;
(三)新增:预测BIOS将把U盘盘号设成00h还是80h功能。也就是有些同学所说的
BIOS把U盘识别为ZIP(DOS下A:>)还是HDD(DOS下C:>)---当然,这种说法对ZIP的
认识不够严谨。
目前的测算,ubootchk还只能根据公开版本的AMI和Phoenix BIOS资料来进行。
不支持其他版本BIOS的测算。
(四)增强的1.44MB USD-FDD检查。现在能够检测群联、慧荣等主控U盘量产出
的USB-FDD,查出其不兼容性。

三、安装运行
(一)下载安装tinycore Linux V4.0。
见不点帖http://bbs.znpc.net/viewthread.php?tid=6066&;;extra=&page=6第77楼

(二)下载安装附件中的ubootchk。
1、解压后,将其(\tce)拷贝到U盘根目录,即完成安装。如遇同名文件,应选择覆盖。
2、启动tinycore Linux,进入aterm终端,执行:
   $ sudo su      按回车进入超级用户
   # ./run      执行run脚本,它将打开cxterm中文终端,并执行ubootchk
3、菜单画面



[ 本帖最后由 wuwuzz 于 2012-1-5 18:55 编辑 ]

wuwuzz 发表于 2012-1-5 18:52:26

四、FAQ

(一)ubootchk考察U启的思路,与g4d(或其他引导软件,下同)有何区别
g4d等软件对MBR/PBR十分重视,会使用BIOS INT13普通读/扩展读,但对BIOS
INT13 普通读/扩展读内部如何实现不关注(因为这是BIOS的事)。

而ubootchk是模仿BIOS的检查动作,对U启过程中BIOS关心的项目进行检查。
理论根据是流出的BIOS源码资料、USB和BIOS INT13相关规范。

对MBR/PBR的重视程度,ubootchk是跟随BIOS的态度的。如果A型BIOS不关注
MBR/PBR的内容,则ubootchk采用的A型BIOS算法也不关注MBR/PBR的内容;
如果B型BIOS对MBR/PBR只关注部分内容,则ubootchk采用的B型BIOS算法也
只关注部分内容。

ubootchk对BIOS INT13普通读/扩展读内部如何实现,十分重视。对决定BIOS INT13
普通读/扩展读结果的“总扇区数”、“物理CHS”等参数,花了很大代价来检测。


(二)关于ubootchk的检测结果
ubootchk只是个提供用户界面的外壳程序,真正干活的是Linux SCSI和USB工具包。
ubootchk负责发出标准指令(跟BIOS学的),询问U盘固件一些(BIOS要用的)关键信息。
传递和接收由Linux SCSI和USB工具包来完成,SCSI和USB工具包给出什么样的结果,
ubootchk就展现给用户什么样的结果。

(三)关于1.44MB USB-FDD
1、BIOS和Windows对1.44MB USB-FDD的判别规则是不同的。
BIOS比较严格,检查的项目更多--尤其是有些低层固件参数方面的内容。
所以,即使你量产出的USB-FDD被Windows承认了,在BIOS下也不一定被承认。

2、有些同学有这样一个错误认识:我量产的1.44M U盘启动后,DOS下A:>,所以,
就是FDD了。

真正的1.44M USB-FDD在DOS下一定会是A:>,但反过来说,则不成立。

DOS下A:>,只是表明BIOS把你的U盘识别成“移动盘设备(赋予盘号00h)”而不是
“固定盘设备(赋予盘号80h)”了,仅此而已。一些容量超过1.44M的U盘也可以
被识别成A:>。

量产出的FDD是不是1.44M USB-FDD设备,由BIOS内部算法规则说了算。

3、量产FDD时,不要随便改动VID厂商名称。因为Linux USB工具是按照ID库
索引的。如果你改动了,则ubootchk可能索引不到你量产的FDD。当然,如果
你同时修改了Linux USB ID库内容,就不存在问题了。

(四)我量产的多驱U盘,ubootchk检测出的设备Lun顺序,与某些OS理解的不同
Lun顺序,OS怎么认为不重要,重要的是BIOS怎么认为。你需要注意BIOS POST阶段弹出的
动态信息中识别顺序是什么(注意:不是BIOS setup菜单中或F功能键BOOT菜单中的顺序),
然后与ubootchk检测出的顺序对照。


(五) 退格键异常,无法删字符
这应是cxterm的键盘设置问题,因不影响ubootchk正常执行,就没有修正。
遇到这种情况,回车后重新录入,不使用退格键。

(六)ubootchk屏幕信息滚动太快,看不全
1、用鼠标右键点击cxterm中文终端的滚动条向上翻页,左键点击向下翻页;
2、ubootchk会自动生成TXT报告文件,文件名:rpt设备名.txt,可以拷贝到硬盘或U盘。

在Linux下可以直接使用命令或文本编辑程序查看,在windows下则
因为文本格式不同,需要使用诸如wordpad写字板、word等可以自动
转换换行/回车的程序查看。

(七)其他
tinycore支持U盘热插拔。你用装有tinycore的第1个U盘启动后,可以随时插拔第2、3...个U盘,
用ubootchk来检查第1、2、3...个U盘的boot兼容性。






[ 本帖最后由 wuwuzz 于 2012-1-5 19:19 编辑 ]

mygamexxx 发表于 2012-1-6 12:56:13

我习惯用手机内存卡加读卡器制作U盘启动盘,使用同一内存卡两个不同的读卡器出现两种不同情况:

A读卡器芯片检测结果:
逻辑盘符:H:\
PNP设备ID:VID = 14CD    PID = 8123
设备序列号:812822222789
设备制造商:USB 2.0
设备型号(版本):SD MMC Reader()
输入电流:100mA

芯片制造商: 奇岩(SuperTop)
芯片型号   : MA8123

B读卡器芯片检测结果:
逻辑盘符:H:\
PNP设备ID:VID = 0BDA    PID = 0119
设备序列号:20090815198100000
设备制造商:Generic-
设备型号(版本):SD/MMC(1.00)
输入电流:500mA

芯片制造商: 瑞昱(Realtek)
芯片型号   : RTS5121/RTS5138/RTS5159

1、一笔记本,BIOS是phoenix的。插入A,能启动,但有点小问题,需设置为一次读取一个扇区,启动才会正常;插入B,能正常从U盘启动。
2、一台联想台式机,BIOS经检测类型是American Megatreds(搜索后说是AMI的)。插入A,能正常从U盘启动;插入B,启动时检测不到U盘,无法启动。

可惜我不会用tinycore,LINUX只用过PUPPY。

[ 本帖最后由 mygamexxx 于 2012-1-6 13:09 编辑 ]

wuwuzz 发表于 2012-1-6 14:05:09

原帖由 mygamexxx 于 2012-1-6 12:56 发表 http://bbs.wuyou.com/images/common/back.gif
可惜我不会用tinycore,LINUX只用过PUPPY。

不需要精通tinycore,它只是作为运行平台存在。

安装也很简单,解开tinycore的ISO,将\tce、\boot拷贝到U盘(或其他USB存储设备)
根目录,然后,在grub的menu.lst增加如下启动菜单项

title tinycore
find --set-root /boot/vmlinuz
kernel /boot/vmlinuz quiet lang=zh_CN.UTF-8 noutc tz=GMT-8 showapps
initrd /boot/tinycore.gz /boot/ntfs-3g.gz
---------------------------------------------------------------

我没实际试过读卡器,不过,我估计更难通过U启兼容性检查。

U盘(固件开发)不遵从U启规范的现象都普遍存在,更何况是读卡器。
页: [1]
查看完整版本: U启兼容性检查工具ubootchk(for tinycore Linux)新版发布