3. Jigdo 工作原理(可选)

您无需了解这些内容即可下载 Debian ISO,但这可能有助于揭开 jigdo 工作原理的神秘面纱。如果您对细节不感兴趣,只需快进到第 4 节,“如何使用 Jigdo”。

3.1. 准备用于下载的 ISO

CD 镜像是一种名为 iso9660 的文件系统,但对于本文讨论,我们可以安全地将 CD 镜像称为一个名为“ISO 镜像”(约 650MB)的大文件,其中包含位于不同偏移量的文件。例如,如果 CD 包含一个名为 README 的 567 字节文件,则 ISO 镜像可能包含偏移量 20480000 到 20480567 之间的 README 文件内容。您可以将 CD 镜像可视化为

                    --------------------------------------------------------
      ISO Image:    |xxxx| file-0 |xx| file-1 |xxx| file-2 |x| file-3 |xxxx|
                    --------------------------------------------------------
      

镜像的“x”区域包含目录信息、零填充、磁盘名称、引导块等内容。

jigdo-file 接受两个输入:完整的 CD 镜像(因此 ISO 需要已制作完成)和一组可能在镜像中也可能不在镜像中的文件。以下是 jigdo-file 输入的可视化

                    --------------------------------------------------------
      ISO Image:    |xxxx| file-0 |xx| file-1 |xxx| file-2 |x| file-3 |xxxx|
                    --------------------------------------------------------

                         ----------  ----------              ----------    ----------
      Loose Files:       | file-0 |  | file-1 |              | file-3 |    | file-4 |
                         ----------  ----------              ----------    ----------
      

通过某种机制,jigdo-file 找出哪些松散文件包含在 ISO 镜像中以及它们在 ISO 文件中的偏移量。它输出两个文件:一个“.template”文件和一个“.jigdo”文件。

3.2. .template 文件

给定 ISO 镜像的输入和一组可能在 ISO 镜像中也可能不在其中的文件,jigdo-file 为该 ISO 镜像输出一个 .template 文件。以下是.template文件的样子

                    --------------------------------------------------------
      .template:    |xxxx| md5-0  |xx| md5-1  |xxx|cccccccc|x| md5-3  |xxxx|
                    --------------------------------------------------------
      

jigdo-file 发现文件file-0, file-1file-3包含在 ISO 镜像中。它删除了这些文件的内容,并用每个文件的 md5 校验和(md5-0, md5-1等)替换它们。

ISO 镜像中的“x”数据(目录信息、零填充等)被压缩并写入 .template 文件。最后,ISO 镜像中未作为松散文件提供的任何文件(如file-2)也被压缩并写入 .template 文件。这在 .template 文件可视化中显示为“c”.template 文件可视化中的数据。

提供给 jigdo-file 但在 ISO 镜像中未找到的松散文件(如file-4)将被忽略。

3.3. .jigdo 文件

给定 ISO 镜像的输入和一组可能在 ISO 镜像中也可能不在其中的松散文件,jigdo-file 为该 ISO 镜像输出一个 .jigdo 文件。Debian .jigdo 文件是 gzipped 格式,因此您需要使用 zcat 或 zless 来查看它们。以下是 .jigdo 文件在 gunzip 解压缩后的样子

      md5-0=http://somemirror.org/file-0
      md5-1=http://somemirror.org/file-1
      md5-2=http://somemirror.org/file-2
      md5-3=http://somemirror.org/file-3
      

.jigdo 文件只是提供了 ISO 镜像中文件的 md5sum 与该文件的下载 URL 之间的映射。在.jigdo文件中还有其他内容,如果您仔细查看,您会看到.jigdo文件具有与“.ini”文件相同的格式。它应该是自解释的,但如果您想要了解详细信息,请参阅 jigdo 文档。

上面显示的格式与您在典型的 .jigdo 文件中看到的格式不太一样,但非常相似。如果您查看 .jigdo 文件底部的 [Servers] 部分,您将确切地看到我上面显示的格式与实际.jigdo文件之间的区别。

3.4. 下载镜像

一旦您使用 jigdo-file 生成一个.jigdo和 .templateISO 镜像的文件,任何人都可以使用 jigdo-lite 下载该镜像。jigdo-lite 使用 wget 下载 Debian ISO 的所有文件,将它们组装起来,并即时形成原始 ISO 镜像的副本。