3. jigdo の動作 (読み飛ばし可)

この部分は jigdo を使用する上では読む必要がありませんが、jigdo の仕組みについて理解するのに役立つでしょう。興味が無ければSection 4、「どのように jigdo を使うのか」に進んでください。

3.1. ダウンロード用の ISO イメージを用意する

CD イメージは iso9660 と呼ばれるファイルシステムですが、ここでは「ISO イメージ」(約 650MB) と呼ばれる単体のファイルで複数のオフセットにファイルが含まれているものと考えて構いません。例えば、CD に README という 567 バイトのファイルがあれば、ISO イメージ内では、オフセット 20480000 から 20480567 の間に存在しているでしょう。図示すると次のようになります―

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

上の図で「x」の部分には、ディレクトリ情報やゼロパディング、ディスク名、ブートブロックなどが入ります。

jigdo-file には 2 つのものを入力として与えます― 完成品の CD イメージ(この時点で ISO イメージが既に作成済みである必要があります)と ISO イメージに格納しようとする一連のファイル、こちらは 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 は実行時に与えたばらばらのファイル (Loose Files) のうち、ISO イメージに格納されているものを探し出して、ファイルの ISO イメージ内のオフセットを調べます。処理の結果 .template と .jigdo の 2 種類のファイルを出力します。

3.2. .template ファイル

ISO イメージファイルと ISO イメージ内に格納されているかどうか不明な一連のファイルを入力すると、jigdo-file は .template ファイルを処理対象の ISO イメージについて出力します。.template ファイルの内容は次のようになっています。

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

jigdo-file は file-0 , file-1 , file-3 が ISO イメージ内に存在することを確認しました。続いて確認したファイルの内容を削除し各ファイルの md5 チェックサム (md5-0, md5-1 など)に置き換えました。

ISO イメージ内の「x」で表記されている部分のデータ(ディレクトリ情報、ゼロパディングなど)については圧縮した上で .template ファイルに書き込みます。最後に ISO イメージ内のファイルで、ばらばらのファイルとして入力されなかったファイル (上記の図では file-2) も圧縮した上で .template ファイルに書き込みます。上記の図の .template ファイルでは c で示した部分です。

jigdo-file に入力されたばらばらのファイルが ISO イメージ内に存在しない場合は無視されます(上記の図では file-4 がこれに当たります)。

3.3. .jigdo ファイル

ISO イメージファイルと ISO イメージ内に格納されているかどうか不明なばらばらのファイルを入力すると、jigdo-file は処理対象の ISO イメージについて .jigdo ファイルを出力します。Debian での処理の際には .jigdo ファイルは gzip によって圧縮済みなので内容の確認には 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 イメージ内にある md5 チェックサムとそのファイルが実際に存在するダウンロード元のURLの対応関係が書き込まれているだけです。.jigdo ファイルを開いて見ると他にも何か情報が書き込まれています。それを見れば .jigdo ファイルが .ini ファイルと同じ形式であることが分かるでしょう。.jigdo ファイルを見れば追加の説明は不要なはずですが、更に詳細な情報を得るには jigdo に関する文書を見てください。

上記に示す形式は、典型的な .jigdo ファイルを開いたときに見えるものと全く同じではありませんが、ほとんど変りありません。.jigdo ファイルの末尾の [servers] セクションを見れば、上記に示した内容と実際の .jigdo ファイルとの差異が正確に理解できます。

3.4. ISO イメージのダウンロード

ある ISO イメージについて 一度 jigdo-file を使って .template ファイルと .jigdo ファイルを生成しておけば、その後は誰でもそのイメージファイルをダウンロードできるようになります。jigdo-lite を使うと Debian ISO のファイルを wget を使って全てダウンロードし、同時進行で元の ISO イメージファイルと同じ形式に組み立てます。