|
本帖最后由 wuwuzz 于 2023-10-2 12:05 编辑
这就复杂了。
这个帖子,正好我昨天看了几遍,包括机翻的内容,起因是oluolio问
USB-FDD的事情。这里面我最关注的内容就是关于ZIP的叙述(这个是被
搞得最混乱的概念)。
这里有几条前提要事前明说,否则可能会出现“公说公有理、婆说婆有理”
现象:
一、最好了解过BIOS内部USB启动算法代码,知道BIOS的思路。
二、观测手段的改进,眼见不一定为实(例如:直观感受的话,太阳
是围绕地球转的)。最忌讳的就是:我通过测试XX种BIOS,表面发现
YY现象,然后ZZ结论。
比较硬核的观察手段就是动用硬件USB协议分析仪(抓包器),它可以
直接监听"看到"UEFI/BIOS与U盘的会话过程,既知道底层细节,也
能够与“一中BIOS算法”相互印证。
================================================================
正题:概念理清。
一、移动、固定
BIOS说的移动、固定,是指驱动器设备,
移动盘设备,将被赋予盘号0X00,表现为DOS下A:>
固定盘设备,将被赋予盘号0X80,表现为DOS下C:>
U盘的移动、固定(在windows中有表现),指的是盘片(介质)
是否可移动,由固件中移动介质位RMB=0/1控制。
U盘存储芯片物理上是固定的,但传统上会把RMB位设置为移动
(没有理由。当然,通过量产工具,可以改为固定)。
有的BIOS算法(比如AMI),有编译选项--是否拿RMB的情况,来作为
判定设备移动、固定的条件之一。
二、ZIP(最混乱的概念)
1.狭义的ZIP,是指Iomega ZIP驱动器,它是一种两栖设备,通过跳线或专用指令,
可以设为固定设备(C:>),也可以是移动设备(A:>)。(机翻内容中,也有这一段例子)。
ZIP驱动器早已消亡,但其“可切换导致CHS和LBA扇区数变动”思路影响到BIOS的汇编
代码编制者。Phoenix BIOS的代码是按这个标准来判定的。
2.其他厂家BIOS对ZIP的判定,由其算法决定。
3.量产工具。SMI量产工具中的USB-ZIP,实际是指RMB位为移动,它就是来捣乱的。
4.关于格式化工具对MBR/PBR之类做手脚、“格式化成ZIP”的说法(包括层主在
linux下对32/64的设定。这种类似操作在更早的时间,victor888就发过帖子,我
也参与过,当然那时对BIOS和ZIP的认识、手段还没有今天这样的水准。这当中,
pendrivelinux的ZIP叙述有重大误导作用),在我看来,要看具体情况,我倾向于
本质上作用不大:
(1)这种操作,对Phoenix BIOS无效。因为Phoenix算法,采信U盘固件信息,不看MBR。
无论怎么改,BIOS无视。
(2)这种操作,会影响特定条件下的AMI BIOS。AMI算法,首先采信U盘固件信息,
但有的早期版本同时也看MBR的情况作为辅助。这时对MBR的操作,会影响AMI的判定结果。
(机翻的帖子中,也谈到了这一点)
(3)pendrivelinux的误导,在于倒果为因。BIOS首先是根据固件信息(主要是容量-
总扇区数),按特定算法把U盘判定为ZIP。然后,再按ZIP MBR-32/64的特性去处理,
这个过程是自动的。而不是反过来,先把U盘MBR参数搞成32/64,然后试图影响
BIOS对ZIP的判定。
|
|