知識ベース

Appleディスクイメージ

Apple Disk Imageは、macOSオペレーティングシステムで一般的に使用されるディスクイメージ形式です。 Apple Disk Imageを開くと、Macintosh Finder内のボリュームとしてマウントされます。

Apple Disk Imageは、Universal Disk Image Format(UDIF)やNew Disk Image Format(NDIF)など、いくつかの独自のディスクイメージ形式のいずれかに従って構成できます。 Appleディスクイメージファイルの名前には、通常、拡張子として「.dmg」が付いています。

特徴

Apple Disk Imageファイルはapplication / x-apple-diskimageの MIMEタイプで公開されます。

これらのディスクイメージ内にはさまざまなファイルシステムを含めることができ、複数のファイルシステムを含むハイブリッド光メディアイメージの作成もサポートされています。サポートされているファイルシステムには、階層ファイルシステム(HFS)、HFS Plus、ファイルアロケーションテーブル(FAT)、ISO9660、ユニバーサルディスクフォーマット(UDF)などがあります。

Apple Disk Imageは、Mac OS Xにバンドルされているユーティリティ、特にMac OS X v10.2以前のDisk CopyとMac OS X v10.3以降のDisk Utilityを使用して作成できます。これらのユーティリティは、CDやDVDを書き込むためのイメージとしてAppleディスクイメージファイルを使用することもできます。ディスクイメージファイルは、hdiutilユーティリティを使用してコマンドラインインターフェイスで管理することもできます。

AppleはMac OS X v10.2.3で、AppleユーティリティDisk Copyで使用するための圧縮ディスクイメージとインターネット対応ディスクイメージを導入しました。これは後に10.3でディスクユーティリティに統合されました。 Disk Copyアプリケーションには、ディスクイメージをマウントする前に多言語ソフトウェアライセンス契約を表示する機能がありました。ユーザーがライセンスへの同意を示さない限り、イメージはマウントされません。

Apple Disk Imageは、安全なパスワード保護とファイル圧縮を可能にし、セキュリティとファイル配布機能の両方を提供します。このようなディスクイメージは、インターネット経由でソフトウェアを配布するために最も一般的に使用されます。

歴史

Appleは、Macアプリケーションが使用するリソースフォークを、インターネットを構成するような混合ネットワーク上で簡単に転送できないため、ディスクイメージ形式を最初に作成しました。 Mac OS Xでリソースフォークの使用が減少しても、ディスクイメージは標準のソフトウェア配布形式のままでした。ディスクイメージを使用すると、ディストリビューターはFinderのウィンドウの表示を制御できます。これは、アプリケーションを正しいフォルダーにコピーするようユーザーに指示するために一般的に使用されます。

フロッピーディスクイメージ専用の旧バージョンのフォーマットは、これらのイメージを処理するために使用されたバージョンのディスクコピーユーティリティの後に「ディスクコピー4.2」フォーマットと呼ばれます。フロッピーディスクイメージの圧縮をサポートする同様の形式は、DARTと呼ばれます。

新しいディスクイメージ形式(NDIF)は、Mac OS 9の以前のデフォルトのディスクイメージ形式でした。この形式のディスクイメージには、通常.img (生の.imgディスクイメージファイルと混同しないでください)または.smiファイル拡張子があります。拡張子が.smiのファイルは、実際には埋め込みディスクイメージ、つまり「自己マウントイメージ」をマウントするアプリケーションであり、Mac OS 9以前のみを対象としています。

ユニバーサルディスクイメージ形式(UDIF)は、Mac OS Xのネイティブディスクイメージ形式です。この形式のディスクイメージの拡張子は、通常.dmgです。

ファイル形式

Appleはこのフォーマットに関するドキュメントをリリースしていませんが、フォーマットの一部をリバースエンジニアリングする試みは成功しています。暗号化されたレイヤーは、VileFault(FileVaultのスプーネリズム)と呼ばれる実装でリバースエンジニアリングされました。

Appleディスクイメージファイルは、基本的に生のディスクイメージ(ブロックデータを含む)にメタデータが追加され、オプションで圧縮と暗号化を提供する1つまたは2つのレイヤーが適用されます。 hdiutilでは、これらのレイヤーはCUDIFEncodingおよびCEncryptedEncodingと呼ばれます。

UDIFは、ADC(Appleの古い独自の圧縮形式)、zlib、bzip2(Mac OS X v10.4以降)、およびLZFSE(Mac OS X v10.11以降)の内部圧縮をサポートしています。

トレーラー

トレーラーは、次のC構造を使用して説明できます。すべての値はビッグエンディアンです( PowerPCバイト順)

typedef struct {uint8_tシグネチャ; uint32_tバージョン; uint32_t HeaderSize; uint32_tフラグ; uint64_t RunningDataForkOffset; uint64_t DataForkOffset; uint64_t DataForkLength; uint64_t RsrcForkOffset; uint64_t RsrcForkLength; uint32_t SegmentNumber; uint32_t SegmentCount; uuid_t SegmentID; uint32_t DataChecksumType; uint32_t DataChecksumSize; uint32_t DataChecksum; uint64_t XMLOffset; uint64_t XMLLength; uint8_t Reserved1; uint32_t ChecksumType; uint32_t ChecksumSize; uint32_tチェックサム; uint32_t ImageVariant; uint64_t SectorCount; uint32_t reserved2; uint32_t reserved3; uint32_t reserved4; } __attribute __((__ packed__))UDIFResourceFile;

説明は次のとおりです。

位置(16進数) 長さ(バイト単位) 説明
000 4 マジックバイト(「koly」)。
004 4 ファイルバージョン(現在は4)
008 4 このヘッダーの長さ(バイト単位)。 512でなければなりません。
00C 4 フラグ。
010 8 未知の。
018 8 データフォークオフセット(通常は0、ファイルの先頭)
020 8 データフォークのサイズ(通常、以下のXMLOffsetまで)
028 8 リソースフォークオフセット(存在する場合)
030 8 リソースフォークの長さ(ある場合)
038 4 セグメント番号。通常1、0の場合があります
03C 4 セグメント数。通常1、0の場合があります
040 16 セグメントの128ビットGUID識別子
050 4 データフォークチェックサムタイプ
054 4 データフォークチェックサムサイズ
058 128 データフォークチェックサム
0D8 8 DMGのXMLプロパティリストの最初からのオフセット
0E0 8 XMLプロパティリストの長さ
0E8 120 予約済みバイト
160 4 マスターチェックサムタイプ
164 4 マスターチェックサムサイズ
168 128 マスターチェックサム
1E8 4 不明、通常1
1EC 8 セクターでの展開時のDMGのサイズ
1F4 12 予約済みバイト(ゼロ)

公益事業

ファイルを抽出したり、独自のApple Disk Image形式をマウントしたりするためのオプションはほとんどありません。いくつかのクロスプラットフォーム変換ユーティリティは次のとおりです。

  • dmg2imgは元々Perlで作成されました。ただし、Perlバージョンは維持されなくなり、プロジェクトはCで書き直されました。現在、追加のツールなしでは、結果のイメージはMac OS XおよびLinuxでのみマウントできます(hfsplusサポートが有効になっている場合)。バージョン1.5以降、UDIF ADC圧縮イメージがサポートされています。
  • DMGEXtractorはJavaでGUIで記述されており、AES-128暗号化イメージを含むdmgのより高度な機能をサポートしていますが、UDCOイメージはサポートしていません。
  • 7-Zip。コマンドラインインターフェイスの無料クロスプラットフォームポートp7zipが含まれます。
  • PeaZip

Windowsでは、UltraISOやIsoBusterなどの他のいくつかのプログラムを使用して、ほとんどのdmgイメージを開くことができます。 MacDriveは、単純なdmgファイルをWindowsのドライブとしてマウントすることもできますが、スパースディスクまたは暗号化されたdmgはマウントできません。無料のApple DMG Disk Image Viewerも存在します。

Linuxおよびおそらく他のUnixフレーバーでは、ほとんどの.dmgファイルは、CD書き込みプログラム(cdrecordを直接またはK3BやBraseroなどのフロントエンドを使用)を使用してCD / DVDに書き込むか、マウントポイントに直接マウントできます(マウント- o loop、ro -t hfsplus imagefile.dmg / mnt / mountpoint)。 darling-dmgは、Linuxで簡単にDMGファイルをマウントできるFUSEモジュールです。