A.1. DOS 插件如何实现

DOS 插件提供与 DOS 分区表的兼容性。该插件生成 EVMS 段存储对象,这些对象映射由 MBR 分区表描述的主分区和由 EBR 分区表描述的逻辑分区。

DOS 分区具有由两部分信息构成的名称

以分区名称为例hda1,它描述了一个在设备上找到的分区hda在 MBR 分区表中。DOS 分区表可以容纳四个条目。分区号 1-4 指的是 MBR 分区记录。因此,我们的例子告诉我们分区hda1是由 MBR 分区表中的第一个分区记录条目描述的。然而,逻辑分区与主分区不同。EBR 分区表分散在磁盘上,但链接在一起形成一个链,该链首先使用在 MBR 分区表中找到的扩展分区记录来定位。每个 EBR 分区表都包含一个分区记录,该记录描述磁盘上的逻辑分区。逻辑分区的名称反映了其在 EBR 链中的位置。由于 MBR 分区表保留了数字名称 1-4,因此第一个逻辑分区始终命名为 5。通过跟踪 EBR 链找到的下一个逻辑分区称为 6,依此类推。因此,分区hda5是一个逻辑分区,它由第一个 EBR 分区表中的分区记录描述。

在发现 DOS 分区时,DOS 插件还会查找 OS/2 DLAT 元数据,以进一步确定磁盘是否为 OS/2 磁盘。OS/2 磁盘具有额外的元数据,并且在恢复期间会验证该元数据。此信息对于 DOS 插件来说很重要,因为它需要知道 OS/2 磁盘必须维护额外的分区信息。(这就是为什么 DOS 插件在分配给磁盘时会询问磁盘是 Linux 磁盘还是 OS/2 磁盘。)DOS 插件需要知道磁盘上必须保留多少信息,以及在获取信息时应向用户询问哪些问题。

OS/2 磁盘可以包含兼容性卷以及逻辑卷。兼容性卷是具有已分配驱动器号的单个分区,可以挂载。OS/2 逻辑卷是 1 个或多个分区的驱动器链接,这些分区在分区级别具有软件坏块重定位。

嵌入式分区,例如在 SolarisX86 磁盘或 BSD 兼容性磁盘上找到的分区,位于主分区内。因此,DOS 插件检查它刚刚发现的主分区,以进一步确定是否存在任何嵌入式分区。保存嵌入式分区表的主分区具有指示此情况的分区类型字段。例如,类型为 0xA9 的主分区可能具有 BSD 分区表,该分区表将主分区细分为 BSD 分区。DOS 插件在主分区中查找 BSD 磁盘标签和 BSD 数据分区。如果 DOS 插件找到 BSD 磁盘标签,它将导出 BSD 分区。因为此主分区实际上只是一个包含 BSD 分区的容器,而不是数据分区本身,所以 DOS 插件不会导出它。嵌入式分区以它们在其中发现的主分区命名。例如,hda3.1是在主分区中找到的第一个嵌入式分区的名称hda3.