我想手动写入MBR(主引导记录)的分区表:驱动器的第一个扇区。
字节 2 到 4 需要找出 CHS(柱面磁头扇区)地址。但是,我使用的是 USB 记忆棒,就我而言,它们没有物理柱面、磁头或扇区(除了扇区可以由 512 字节组确定)。
于是我就停止了写分区表的工作。任何扇区的 LBA 地址都非常容易获得(分区表条目中也需要 LBA 地址。)但我对如何在没有柱面和磁头的驱动器中渲染 CHS 毫无头绪。
因此,如果有人能够阐明这种转换如何进行或更好,给我有关 BIOS 如何解释 MBR 的资源,我将不胜感激。
谢谢。
用 0xFFFF 填充它。
每个现代系统,无论是操作系统还是 BIOS,都支持 LBA;它将忽略 C/H/S 字段并使用线性扇区地址。
(最重要的是,USB 连接的磁盘必须支持 SCSI,而不是 ATA,而且 SCSI只支持 LBA 请求。)
由于大多数分区都大于 C/H/S 字段可以表达的范围(并且几乎所有内容都会忽略它),因此通常的做法是填写最大可能值。
就您而言,实际的硬盘驱动器也没有——它们只是为了古代系统而编造一些值,但没有一个与物理结构相对应,而物理结构完全对外部隐藏。尽管它们在物理上确实有磁头等,但它们被设计为仅与线性 LBA 地址一起使用(并且它们具有更多数量级的柱面和扇区,无论如何都可以适合 C/H/S 字段)。
因此,无论 MBR 分区表进入哪种磁盘,填充占位符值几乎总是足够的。
(还有一些 SMR HDD,它们甚至没有 LBA 和物理扇区的 1:1 对应关系 - 它们有一个像 SSD 一样的映射表......)