一、模块功能与定位
- 核心作用
0B 与 20B 是西数硬盘固件区(SA区)中的 ROM模块目录表,用于管理ROM内其他固件模块的存储位置、大小及备份关系。二者互为备份,但仅有一个处于激活状态(由激活标记控制)。历史差异:早期硬盘仅存在 0B 模块,20B 是后期为增强冗余性新增的备份模块。 - 损坏影响
若激活的模块损坏,硬盘将无法定位关键固件(如磁头地图、编译器),导致启动失败、敲盘或不识别故障。
二、 模块定位
- 角色:0B/20B模块是西数硬盘ROM中的服务区描述模块,存储固件区(SA)的物理布局和关键模块索引,相当于固件区的“地图”。
- 与01模块的关系:
- 01模块(目录模块)负责管理用户区模块的ABA地址(如图片中的03、0C等模块)。
- 0B/20B模块则定义固件区本身的磁道分布、SPT值及服务区模块的物理位置(如30、47模块)。
三、模块结构解析
1. 头部信息(Header)
[0x06]:有效数据起始地址(通常为0x1E)。[0x1B]:激活标记,数值较大的模块被激活(例如0x01vs0x00)。[0x1E]:条目数量(1字节),决定后续条目表的长度。
2. 条目表(Entry Table)
从 0x1F 开始,每个条目包含以下字段(共12字节):
| 偏移 | 长度 | 含义 |
|---|---|---|
0x00 |
1字节 | 条目长度(固定 0x0C) |
0x01 |
1字节 | 副本数量(如 0x01 表示1份副本) |
0x02 |
2字节 | 模块ID(如 0x30 为编译器模块) |
0x04 |
2字节 | 模块长度 |
0x06 |
4字节 | 未知字段(保留或校验位) |
0x0A |
4字节 | 副本0的存储地址 |
0x0E |
4字节 | 副本1的存储地址(若存在) |
条目表总长度:[0x1E] × 12 字节。
里面有SPT的值,但位置不固定。
四、激活机制与备份逻辑
- 双模块协同
- 硬盘启动时,ROM根据
[0x1B]的激活标记选择加载 0B 或 20B。 - 若激活模块损坏,部分专业工具(如PC3000、MRT)可强制切换至备份模块尝试修复。
- 硬盘启动时,ROM根据
- 数据一致性要求
两个模块的条目表内容通常一致,但激活标记不同。若条目表冲突(如模块地址不一致),可能导致固件加载错误。
五、实操应用场景
- 数据恢复操作
- 模块修复:通过工具(如WDR)读取激活模块,若损坏则写入备份模块或兼容固件中的0B/20B。
- 激活标记修改:手动调整
[0x1B]值切换激活模块,需同步更新校验值。
- 固件区坏道处理
若模块存储地址对应SA区存在坏道,需使用工具重定位模块或通过“分头镜像”避开损坏磁头。
六、注意事项
- 适配性限制
替换0B/20B需确保固件版本、家族号、电路板号匹配,否则可能引发兼容性问题(如敲盘)。 - 校验机制
修改模块后需重新计算校验和(如CRC32),否则硬盘拒绝加载。


