hdiutil(1)
名前
hdiutil -- ディスクイメージを扱う (アタッチ, 検証, 焼き込み, その他)
書式
hdiutil verb [options]
概要
hdiutil はディスクイメージを扱うために DiskImages フレームワークを用いる。主な動作として attach, detach, verify, create, convert, compact, burn が含まれる。 その他の動作として現在以下のものがある。help, info, checksum, chpass, unflatten, flatten, imageinfo, isencrypted, mountvol, unmount, plugins, udifrez, udifderez, internet-enable, resize, segment, makehybrid, pmap。
背景
ディスクイメージはディスクをエミュレートする"入れ物"(コンテナ)である。ディスクと同様に、パーティションの作成やフォーマットが可能である。ディスクイメージの多用はディスクイメージコンテナとその中身との区別を不明瞭にさせるが、この区別はディスクイメージの理解のために重要である。"attach" と "detach" はディスクイメージのシステムとの接続、接続解除の方法として区別するために用いられる。
例えば、Mac OS X の Finder でディスクイメージをダブルクリックする場合、二つの分離された出来事が起こる。まず、イメージが外部ドライブと同じようにシステムに "attach" される。そして、カーネルとディスク管理システムは認識されたファイル構造に従い新しいデバイスを探す。もしいずれかのファイル構造が確認されれば、関連付けられたボリュームがマウントされ Finder 上に現れる。
"ディスクイメージ" の処理がディスクイメージデバイスのブロックに対して、あるいは(たいていの場合ファイルである)イメージの内容に対して適用されるか、考慮すること。例えば、verify は読み込み専用ディスクイメージの中のブロックが作成されて以降変更されていないか検証する。一方、create -srcfolder はディスクイメージコンテナを作成し、ファイルシステムをその中に加え、指定されたファイルを新たなファイルシステムにコピーする。
共通オプション
hdiutil はどの動作においても以下のオプションを受け取る。
- -verbose
- 出力を冗長にする(既定では出力は少ない)。ある操作が失敗する場合、その理由を明らかにすることに役立つ。少なくとも、特定のイメージについての厳密な報告が出力される。
- -quiet
- 標準出力及び標準エラー出力を閉じ、コマンドが正常に行われたかどうかは終了ステータスのみによって示される。-debug や -verbose が同時に指定された場合、無視される。
- -debug
- 非常に詳細な出力をする。hdiutil と DiskImages フレームワークが行うことについての大量の情報が必要な場合に用いられる。Mac OS X 10.6 からは、-debug は -verbose を有効にする。
hdiutil の多くの動作は、以下のオプションを理解する。
- -plist
- 結果出力を plist 形式で提供する。hdiutil を起動した他のプログラムは、通常の出力を解析するよりも -plist を用いた方が良いであろう。通常の出力は、矛盾はないものの構造的ではない。
- -puppetstrings
- 進捗の出力表示を提供する。進捗表示により、他のプログラムにとって解析し易くなる。プログラム側で hdiutil の進捗を知りたい場合は、-puppetstrings オプションを使うと良い。
- -srcimagekey key=value
- ディスクイメージ認識システムへ渡される key/value ペアを指定する。(-imagekey と同じ)
- -tgtimagekey key=value
- 作られたイメージへ渡される key/value ペアを指定する。(入力側イメージが存在しなければ、-imagekey と同じ)
- -encryption [AES-128|AES-256]
- 特定の暗号化アルゴリズムを指定する。指定されなければ、既定のアルゴリズムが用いられる。既定のアルゴリズムは 128 ビット鍵の AES 暗号を用いる。
- -stdinpass
- 標準入力から NULL で終端されたパスワード文字列を読む。標準入力がキャラクタ端末の場合、readpassphrase(3) によってパスワード文字列を読み込む。-stdinpass は -passphrase を置き換える。-passphrase は互換性のためにサポートされている。パスワードには NULL より前に改行文字が含まれるかも知れないことに気を付けること。例の項目を参照。
- -agentpass
- パスフレーズの入力の要求を既定の振る舞いとして強制する。:-pubkey を用いてパスフレーズ及び公開鍵にて保護されたイメージを作成する場合に有用である。
- -recover keychain_file
- イメージが作られた時に -certificate で用いられた証明書に対応するキーチェインを指定する。
- -certificate certificate_file
- 作られるイメージに対する証明書を指定する。
- -pubkey PK1,PK2,...,PKn
- 16 進数ハッシュで署名された公開鍵のリストを指定する。保護された暗号化イメージの作成に用いられる。
- -cacert cert
- 認証局の証明書を指定する。cert は PEM ファイルあるいは c_rehash(1) が処理する証明書ディレクトリのどちらかを用いる。curl(1) の --capath と --cacert の項目も参照。
- -insecurehttp
- SSL ホストの妥当性の確認を無視する。適切な証明を得ていない自己署名のサーバを利用する場合や、サーバ名が証明書のものと一致しないがサーバへのアクセスを強制する場合に有用である。
- -shadow [shadowfile]
- イメージのデータ連結に shadow(=非実質的な仮想の)ファイルを利用する。このオプションにより、元のイメージファイルの変更を避けつつ読み込み専用イメージに対して読み書きを行えるようにする。イメージからブロックが読み込まれると、shadow ファイルに存在するブロックは元のイメージのブロックを上書きする。アタッチされたデバイスに対して書き込まれた全てのデータは、shadow ファイルにリダイレクトされる。オプションの引数が指定されなければ、-shadow は既定の値として image.shadow を用いる。シャドウファイルが存在しなければ新たに作られる。-shadow は -cacert や -insecurehttp と同時に使用可能である。
イメージを作成する動作は、ファイル名が拡張子を持たない場合に自動的に基準に則った拡張子をファイル名に追加する。また与えられたファイル名によって、作成過程の振る舞いは適切に変更される。例えば、スパースイメージは拡張子として .sparseimage を持つファイル名が渡されれば、-type SPARSE を指定することなしに作成される。
動作
それぞれの動作について概要と引数を挙げる。引数は順不同である。セクタは 512 バイトである。
help
動作についての最小限の使用法を表示する。hdiutil verb -help によって、その動作についての詳細な使用法が提供される。
attach image [options]
ディスクイメージをデバイスとしてシステムにアタッチする。attach は hdid(8) のように、既にアタッチされたイメージについての情報をアタッチされたものとして返す。マウント (mount) とアタッチ (attach) は同義である。
新しく作成されアタッチされたイメージは新たなリムーバブルデバイスとして扱われることに気を付けること。詳しくは hdid(8) と例の項目を参照のこと。
共通オプション: -encryption, -stdinpass, -recover, -imagekey, -shadow, -puppetstrings, -plist
オプション
- -readonly
- 読み込み専用デバイスとしてアタッチする。
- -readwrite
- ディスクイメージが読み込み専用のイメージであってもそれを無視しようと試みる。例えば、-readwrite は HFS/ISO ハイブリッド CD イメージ上の HFS ファイルシステムを変更する為に用いられる。
- -nokernel
- ヘルパープロセスを利用してアタッチする。Mac OS X 10.5 以降ではデフォルトである。
- -kernel
- ヘルパープロセスを利用せずにアタッチを試みる。出来なければ失敗する。
- -notremovable
- イメージのデタッチを不可能にする。root のみが使用可能である。
- -mount required|optional|suppressed
- イメージのファイルシステムをマウントするか否かを指定する。OS X 10.2.x 以前では optional が既定であるが、現在は required が既定となっている。
- -nomount
- -mount suppressed と同義である。
- -mountroot path
- ボリュームを /Volumes ではなく path にマウントする。path は存在しなければならない。フルマウントポイントは MNAMELEN 個の文字列(Mac OS X 10.6 では 90 文字から 1024 文字へと増えた)以内で指定する。
- -mountrandom path
- -mountroot と似ているが、マウントポイントは mkdtemp(3) によってランダムなものになる。
- -mountpoint path
- 一つのボリュームと仮定し、/Volumes の代わりに path へとマウントを行う。システム管理者が /etc/fstab を編集して自動的に特定のボリュームを特定のファイルシステム内の位置にマウントを行う方法については fstab(5) を参考のこと。
- -union
- ユニオンマウントを行う。ユニオンマウントは Mac OS X では既にサポートされないため、無視される。
- -private
- システムへのマウント通知を抑止する。-private は Carbon ファイルマネージャを利用したプログラムを混乱させる為、通常の使用は避けるべきである。
- -nobrowse
- ボリュームを Finder などのアプリケーションから不可視にする。
- -owners on|off
- HFS+ ボリュームに対する所有者の可否。システムのデフォルトの値を無視するかも知れない。
- -drivekey key=value
- IOKit レジストリのデバイスへアタッチされる key/value ペアを指定する。
以下のオプションは設定 com.apple.fremeworks.diskimages の要素に対応し、ポジティブ値ネガティブ値の両方で表される。
- -[no]verify
- イメージの検証を行うかどうか。デフォルトでは、hdiutil attach はアタッチの前にチェックサムを含む全てのイメージを検証する。後方互換性の為に、hdid(8) はイメージを検証しない。
- -[no]ignorebadchecksums
- 不正なチェックサムを無視するかどうかを指定する。デフォルトでは不正なチェックサムが検出された場合、アタッチは中断される。
- -[no]idme
- IDME イメージに対する IDME アクションを行うかどうか。IDME アクションは通常ブラウザがダウンロード後アタッチする際にのみ行われる。
- -[no]idmereveal
- IDME 処理の結果を(Finder で)表示する
- -[no]idmetrash
- IDME イメージを処理後にゴミ箱へ送る
- -[no]autoopen
- イメージをアタッチ後に(Finder で)ボリュームを自動的に開く。デフォルトでは、読み込み専用ボリュームのみが Finder で自動的に開かれる。
- -[no]autoopenro
- 読み込み専用ボリュームを自動的に開く
- -[no]autoopenrw
- 読み書き可能ボリュームを自動的に開く
- -[no]autofsck
- ディスクイメージをマウントする前に自動的なファイルシステム検査を強制するかどうか。デフォルトでは、イメージがコンピュータで検査されたことがない場合のみ、検査が行われる。
detach dev_name [-force]
ディスクイメージをデタッチし、関連する hdid プロセスを終了する。dev_name は("disk1" のような)部分的な /dev ノードパスを指定する。OS X 10.4 では、dev_name はマウントポイントでも良い。Disk Arbitration が動作していれば、detach はそれを利用してファイルシステムをアンマウントし、イメージをデタッチする。動作していなければ、detach は("eject" ioctl を利用して)直接ファイルシステムのアンマウント、イメージのデタッチを行う。その場合、イメージのデタッチの前に umount(8) でファイルシステムをアンマウントは不要かも知れない。イジェクト(eject)はデタッチ(detach)と同義である。
オプション
- -force
umount -fと同様である。イメージ中のファイルが開かれても構わずにファイルシステムをアンマウントし、イメージをデタッチする。
verify image [options]
読み込み専用(あるいは圧縮)イメージのチェックサムを計算し、イメージ中の値と照らし合わせて検証する。verify は共通オプションとして -encryption, -stdinpass, -srcimagekey, -puppetstrings, -plist を受け入れる。
create size_spec image
特定のサイズを持つイメージ、あるいは与えられたデータからのイメージを新たに作成する。image が既に存在する場合、-ov が指定されていなければ create は失敗する。image がアタッチされている場合、-ov が指定されているかを問わず、上書きを行うためにはデタッチされなければならない。クロスプラットフォームの CD や DVD を作成するには、makehybrid を用いること。例の項目を参照すること。
size_spec は作成されるイメージのサイズの値である。ファイルシステムとパーティションレイアウトの為の領域(既定の SPUD レイアウトの場合 64 セクタ)は、イメージ中のボリュームへデータスペースが作られる前に控除される。
サイズの指定には以下のオプションを用いる。
- -size ??b|??k|??m|??g|??t|??p|??e
- -size は、mkfile(8) の形式に加えて tera-, peta-, exa- バイトの値を指定可能な指定子でイメージのサイズを指定する('b' はバイトではなくセクタ数を指定することに注意すること)。大容量のスパースイメージを作成する場合、大きなサイズは有用である(最大で SPARSE size limit まで)。
- -sectors sector_count
- 512 バイト単位のセクタ数でイメージのサイズを指定する。
- -megabytes size
- メガバイト(1024*1024 バイト)単位でイメージのサイズを指定する。
- -srcfolder directory
- directory 以下の内容を元にしてイメージサイズを指定する。また -srcfolder を指定することにより、directory の内容は作られるイメージにコピーされる。イメージボリュームのファイルシステム形式は、 -fs で指定されない限り、コピー元のボリュームに合わせられる。-size のような他のサイズ指定子は、コピー元のディレクトリのサイズを上書きし、ファイルシステム中に余剰のスペースを確保することを可能にする。-srcfolder はファイルをコピーし、(asr(8) によって復元可能な)コピー先のイメージ上に新たな(理論的に最適化された)ファイルシステムを作成する。
-srcdir は -srcfolder と同義である。
- -srcdevice device
- 新しいイメージを作成する為に用いられるべき device ブロックを指定する。イメージのサイズは device のサイズと一致する。そのようにして作られたイメージのファイルシステムのサイズの変更には、resize を使用することが出来る。-srcdevice と -srcfolder が指定されておりディスクに不正なブロックが存在する場合は、エラーを引き起こす。(?この問題の One way around は、ドライブが不正なブロックを見付けた際に再配置するかも知れない望みがある中でファイルを書き込むことである。;One way around this problem is to write over the files in question in the hopes that the drive will remap the bad blocks when it notices them.)データは失われるが、その後のイメージ作成処理は成功する。
共通オプション: -encryption, -stdinpass, -plist, -imagekey, -tgtimagekey, -puppetstrings
-imagekey di-sparse-puma-compatible=TRUE と -imagekey di-shadow-puma-compatible=TRUE はそれぞれ、OS X 10.1 でアタッチ可能なスパースイメージ、shadow イメージを作成する。-imagekey encrypted-encoding-version は暗号化エンコードのバージョン 1 かバージョン 2 を選択出来る。framework の設定は、全てのイメージのデフォルト値に対応するキーを持つ。バージョン 2 は OS X 10.2 とは互換性を持たないが、スパースイメージではより強固なものである。バージョン 1 はスパースイメージ以外のイメージでのデフォルト値である。OS X 10.4.7 から、スパースイメージ、暗号化イメージは常にバージョン 2 を使用する。
一般的なオプション
- -align alignment
- 最終的にデータパーティションが調整されるサイズを指定する。デフォルトは 4K である。
- -type UDIF|SPARSE|SPARSEBUNDLE
- UDIF はデフォルトのディスクイメージ形式である。指定されていれば、指定されたサイズの UDRW が作成される。SPARSE を指定すると UDSP(必要に応じて拡張される読み書き可能なイメージ)が作成される。その場合デフォルトでは 1 メガバイトずつサイズが増大するが、-imagekey オプションと共に sparse-band-size キーを用いて、イメージが増大される毎に付加されるセクタ数を指定することが出来る。スパースイメージの最大サイズはイメージ中のファイルシステム、存在するならばパーティションマップによって規定され、システム上の制限値は 128 ペタバイトである。UDSP 中の HFS+ ファイルシステムに存在する使用されていない領域は、compact によって縮小することが出来る。また、resize は UDRW と内部のいずれの HFS ファイルシステムをリサイズ出来ることも心に留めておくこと。その他の情報については、「持続的なスパースイメージを用いる」を参照のこと。
- -fs filesystem
- ファイルシステムを HFS+, HFS+J, HFSX, HFS, MS-DOS, UFS の中から指定する。-fs はイメージに書き込まれるファイルシステムを指定するために用いられる。また -fs は、特定のファイルシステムが Apple パーティションマップの Apple_HFS パーティションに備わっていない場合、デフォルトのレイアウトを変更する。
- -volname volname
- 新たに作成されたファイルシステムの名前を volname にする。デフォルトは "untitled"。
- -uid uid
- 新たに作成されたボリュームのルートディレクトリの所有者を、与えられたユーザ ID で示されるユーザに設定する。99 は特別な "unkwnon" ユーザを意味する(hdid(8) を参照)。
- -gid gid
- 新たに作成されたボリュームのルートディレクトリの所有グループを、与えられたグループ ID で示されるグループに設定する。99 は特別な "unkwnon" グループを意味する(hdid(8) を参照)。
- -mode mode
- 新たに作成されたボリュームのルートディレクトリのモードを 8 進数で表される mode に設定する。
- -nouuid
- ボリュームへ UUID を追加しない。そのようなボリュームは、OS 9 以前でフォーマットされたボリュームのように振る舞う。
- -[no]autostretch
- ボリュームサイズが auto-stretch-size のしきい値(デフォルト: 256 MB)を超えても伸張可能なボリュームを自動的に作成する。asr(8) を参照のこと。
- -stretch max_stretch
- -stretch は HFS+ ファイルシステムのデータを、hdiutil resize や古いシステム(定義された制限値内での伸張に限られる)で asr(8) を用いて後々伸張することが可能なものとして初期化する。max_stretch は -size での指定と同じである。
- -fsargs newfs_args
- -fs により暗黙的に指定されるファイルシステム作成プログラムへ渡される引数。newfs_hfs(8) はファイルシステムのデータ構造により必要とされる合計領域を減らすことが可能なオプションを持つ。-fs HFS+ を指定した時、ジャーナル機能を無効にし -fsargs への引数として -c c=64,a=16,e=16 を渡してファイルシステムの gap を最小限にすると、resize はより多くの領域を圧搾することが出来る。本当に最適化されたファイルシステムを得るには、makehybrid が用いられる。
- -layout layout
- イメージのパーティションレイアウトを指定する。layout は Mediakit.framework の MKDrivers.bundle で指定されていれば良い。NONE はパーティションマップを含まないイメージを作成する。そのようなイメージがアタッチされると、一つの /dev エントリが作成される(/dev/disk1 など)。SPUD は Single Partition UDIF の頭字語である。SPUD は DDM と Apple_HFS パーティションの一つのエントリを持った Apple Partition Scheme のパーティションマップを含むイメージを作成する。アタッチされると、複数の /dev エントリが作られ、二つ目のパーティションがデータパーティションとなる(例として /dev/disk1, /dev/disk1s1, /dev/disk1s2、二つ目のパーティションは disk1s2 である)。-fs によって変更されない限り、デフォルトは SPUD である。その他のレイアウトとして、適切な OS 9 ドライバパーティションを持つ "UNIVERSAL HD" や "UNIVERSAL CD" を含む。OS 9 ドライバは OS X や Classic 環境では用いられない。
- -partitionType partition_type
- SPUD のパーティション形式を変更する。デフォルトは Apple_HFS である。適切なパーティション形式は -fs への引数によって自動的に選択されるが、主な代替として Apple_UFS がある。
- -ov
- 存在するファイルを上書きする。デフォルトでは上書きされない。create の項で記したように、アタッチされたイメージを上書きすることは出来ない。
- -attach
- イメージを作成した後、アタッチする(オプションの無い attach に等しい。オプションを必要とする場合は、hdiutil attach を用いること)。ファイルシステムが -fs によって指定されていなければ、デフォルトの attach -mount が要求する振る舞いでは attach は失敗する。
ソースを指定した場合のイメージオプション(-srcfolder と -srcdevice)
- -format format
- 最終的なイメージフォーマットを指定する。デフォルトは UDZO である。forat には、convert で用いられるパラメータが指定可能である。
-srcdevice と同時に指定可能なオプション
- -segmentSize size_spec
- イメージが書き込まれる際のセグメントの最大値 size_spec(-size の形式に従う)を指定する。
-srcfolder と同時に指定可能なオプション
- -[no]crossdev
- ソースのファイルシステムに、デバイスをまたいでの指定を可能とするか
- -[no]scrub
- ボリュームを作成する際、一時的なファイルを読み飛ばす。これはソースがボリュームのルートディレクトリであれば、デフォルトで適用される。読み飛ばされる項目には、ゴミ箱、テンポラリファイル、スワップなどが含まれる。
- -[no]anyowners
- hdiutil を動作させるユーザに、ソースディレクトリの全てのファイルを所有していることを要求する。
- -copyuid user
- 与えられた user としてコピーを行う。通常では、コピーは下記で説明される仕組みに従って行われる。
- -skipunreadable
- ユーザが読み取ることが出来ない、またはアクセス権限のないファイルを飛ばす。
デフォルトでは、create -srcfolder はソースディレクトリのパーミッションを維持してコピーを試みる。読み取れないファイルやイメージを作成しようとするユーザ以外のユーザによって所有されるファイル、あるいはコピーを行うユーザがグループに含まれない SGID ファイルを検出した場合、認証を要求する。
convert image -format format -o outfile
image を format 形式へ変換し、outfile へ書き込む。
上記されているように、ファイル名に拡張子がない場合は適切なものが追加される。format として指定できるものは以下の通り。
- UDRW - UDIF 読み書き可能イメージ
- UDRO - UDIF 読み込み専用イメージ
- UDCO - UDIF ADC 圧縮イメージ
- UDZO - UDIF zlib 圧縮イメージ
- UDBZ - UDIF bzip2 圧縮イメージ(OS X 10.4 以降のみ)
- UFBI - MD5 チェックサム UDIF イメージ
- UDRo - UDIF 読み込み専用(obsolete)
- UDCo - UDIF 圧縮(obsolete)
- UDTO - DVD/CD-R マスター
- UDxx - UDIF スタブイメージ
- UDSP - スパースイメージ(内容によりファイルサイズが増大する)
- UDSB - スパースバンドル(内容によりファイルサイズが増大する; バンドル形式)
- RdWr - NDIF 読み書き可能イメージ(deprecated)
- Rdxx - NDIF 読み込み専用イメージ(Disk Cope 6.3.3 形式)
- ROCo - NDIF 圧縮イメージ(deprecated)
- Rken - NDIF 圧縮(obsolete)
- DC42 - Disk Copy 4.2 イメージ
いくつかの形式で提供される圧縮の他に、UDIF と NDIF 読み込み専用形式は HFS と UFS ファイルシステムにおいて使われていない領域を完全に削除する。 UDZO では、-imageley zlib-level=value によって gzip(1) と同様に zlib 圧縮レベルを指定することができる。デフォルトの値は 1(最も早い)である。
共通オプション: -encryption, -stdinpass, -certificate, -srcimagekey, -tgtimagekey, -shadow with friends, -puppetstrings, -plist
その他のオプション
- -align alignment
- デフォルトは 4(2K)である。
- -pmap
- パーティションマップを追加する。NDIF を様々な種の UDIF へ変換したり 区画分けされていない UDIF を変換する場合、この値はデフォルトで真となる。
- -segmantSize [size_spec]
- outfile に書き込まれるセグメントサイズを size_spec に指定する。-segmentSize が指定されたときのデフォルト値は、UDTO では 2*1024*1024(1GB セクタに相当)、その他のイメージ形式では 4*1024*1024(2GB セクタに相当)である。size_spec は create の -size に指定される指定子と同様のものを用いることができる。
- -tasks task_count
- イメージを圧縮された形式に変換する場合に指定する、圧縮処理に使用されるスレッドの数。デフォルトは現在のシステムのアクティブなプロセッサの数である。
burn image
接続されたデバイスの光学メディアへ image を焼き込む。全てのケースで、適切なデバイスが見付かるとメディアを促すよう表示される。
共通オプション: -shadow with friends, -srcimagekey, -encryption, -puppetstrings, -stdinpass
その他のオプション
- -device
- 焼き込みに使用するデバイスを指定する。-list を参照のこと。
- -testburn
- 実際には焼き込まない。
- -anydevice
- Apple により保証されていないデバイスへの焼き込みを明示的に許可する(OS X 10.4 以降では、burn はデフォルトでどのデバイスへも焼き込みできるが、後方互換性のために残されている)。
- -[no]eject
- 焼き込み後にディスクを取り出す。デフォルトではディスクは取り出される。
- -[no]verifyburn
- 焼き込み後にディスクの内容を検証する。デフォルトでは検証を行う。
- -[no]addpmap
- 必要に応じてパーティションマップを追加する。いくつかのファイルシステム形式では、パーティションマップに存在しなければ光学メディアの中では認識されないことがある。このオプションはパーティションマップが必要なファイルシステムを認識させるために、焼き込み時にパーティションマップを追加する。デフォルトでは、必要があればパーティションマップは追加される。
- -[no]skipfinalfree
- フリーパーティションをスキップする。イメージの中に Apple_Free パーティションが最後に存在することを示すパーティションマップがあれば、Apple_Free パーティションは焼き込まれない。焼き込まれたパーティションマップは、空の領域を示す。デフォルトでは、フリーパーティションはスキップされる。
- -[no]optimizeimage
- 焼き込みに際してファイルシステムを最適化する。最適化によって、HFS あるいは HFS+ ボリュームの容量を実際に含まれるデータの容量へ減らすことができる。このオプションは、焼き込まれるディスクとイメージとで異なるチェックサムを与えることがある。デフォルトでは、ディスクイメージの全てのブロックが焼き込まれる(Apple_Free を除く)。
- -[no]forceclose
- 焼き込み後にディスクをクローズするよう強制する。追加の焼き込みは不可能になる。デフォルトでは、クローズされない。
- -nounderrun
- バッファアンダーラン保護を行わない。
- -[no]synthesize
- ハイブリッドファイルシステムを作成する。デフォルトでは、元のイメージのブロックが正しくディスクへ焼き込めない場合に新しく HFS/ISO ファイルシステムを作成する。
- -speed x_factor
- x_factor には、 1, 2, 4, 6, ... `max' の任意の値を指定する。例えば 8 は 8 倍速で焼き込むことをドライブへ指定する。`max' はドライブへ最大限の速度で焼き込むように指定する。デフォルトでは `max' である。より遅い速度の方が、信頼できる焼き込みができる。速度は焼き込まれるメディアによって異なる(例えば CD と DVD への焼き込みでは -speed 2 を指定してもそれぞれで実際の焼き込み速度が異なるように)。より遅い速度を指定しても、ドライブに固有の最低焼き込み速度が存在する場合はその速度以下では焼き込まれないことに注意すること。
- -sizequery
- 焼き込みを行わず、ディスクに必要な容量を計算してセクタ数として返す。
- -erase
- 光学メディア(DVD-RW/CD-RW)の挿入を促し、ハードウェアがサポートしていれば、メディアを消去する。image が指定されていれば、消去した後に焼き込まれる。
- -fullerase
- ディスクの全てのセクタを消去する(通常、-erase よりもより長い時間が掛かる)。
- -list
- 全ての焼き込み可能なデバイスを、-device で指定可能な OpenFirmware パスの形で表示する。
makehybrid -o image source
DiskRecording フレームワークのコンテント作成システムを利用して、読み込み専用ディスクイメージへ潜在的なハイブリッドファイルシステムを作成する。
source はディレクトリあるいはディスクイメージを指定する。作成されたイメージは、burn によって焼き込むことや、convert によって他の読み込み専用形式へ変換できる。デフォルトでは、最近のほとんどのプラットフォームでファイルシステムは読み込み可能になる。作成されたファイルシステムは、読み書き可能な形式への変換は想定されていないが、ditto(8) や asr(8) を(ファイルコピーモードで)用いて安全にコピーすることができる。
hdiutil は、El トリト形式の起動可能な ISO9660 ファイルシステムの作成をサポートしている。これは x86 ベースのハードウェアでの起動に一般的に用いられる。いくつかのエミュレーションモードを指定することができる。デフォルトでは、El トリト起動イメージはイメージのサイズに応じて、1.2MB, 1.44MB, 2.88MB フロッピードライブをエミュレートする。その他には "No Emulation"(非エミュレーション)と "Hard Disk Emulation"(ハードディスクエミュレーション)モードを指定可能である。それらによってそれぞれ、起動イメージをメモリへ直接読み込ませることや、パーティション分けされたハードディスクとして仮想化を行うことができる。El トリトのオプションは、データ CD に用いられるべきではない。
ファイルシステムに関するオプション
- -hfs
- HFS+ ファイルシステムを作成する。このファイルシステムは、ISO9660, Joliet, UDF ファイルシステムと共にイメージに共存することができる。Mac OS 9 や Mac OS X のように、HFS+ を ISO9660 や UDF と同様に認識するオペレーティングシステムでは、通常では優先されるファイルシステムである。
- -iso
- Rock Ridge 拡張の ISO9660 レベル 2 ファイルシステムを作成する。このファイルシステムは HFS+, Joliet, UDF ファイルシステムと共にイメージに共存することができる。ISO9660 は CD やある種の DVD での標準的なクロスプラットフォーム互換形式であり、事実上全てのオペレーティングシステムで認識される。ISO9660 や Joliet ファイルシステムがディスクイメージや CD に存在し、HFS+ が存在しなければ、Mac OS X は ISO9660(あるいは Joliet)ファイルシステムを使用する。
- -udf
- UDF ファイルシステムを作成する。このファイルシステムは HFS+, ISO9660, Joliet と共にイメージに共存することができる。UDF は DVD での標準的な互換形式であるが、オペレーティングシステムがサポートしているかは OS のバージョンや UDF のバージョンによって違いがある。
デフォルトでは、ファイルシステムが指定されなければ、四つの全てのファイルシステムを持つハイブリッドイメージが作られる。複数のファイルシステムが選択された時は、イメージのデータ領域は全てのファイルシステムで共有され、ディレクトリ情報とボリュームメタデータのみがそれぞれのファイルシステムで固有のものとなる。つまり、クロスプラットフォームの ISO9660/HFS+ ハイブリッドイメージは、単一のファイルシステムを持つイメージと比較してオーバーヘッドが少ないと言える。
その他のオプション
ほとんどのオプションは、一つの引数をとる。
- -hfs-blessed-directory
- 作成されるファイルシステムの中の、Mac OS X の起動のために結び付けられた("blessed")ディレクトリへのパス。ディレクトリは、例えば正しい BootX ファイルを作るために -bootinfo によって結び付けられているものと考えられる。(HFS+ のみ)
- -hfs-openfolder
- Finder によって自動的に開かれるディレクトリへのパス。bless(8) の -openfolder オプションを参照のこと。(HFS+ のみ)
- -hfs-startupfile-size
- 空の HFS+ スタートアップファイルを割り当て、そのサイズをバイト単位で指定する。(HFS+ のみ)
- -abstract-file
- ソースとなるディレクトリ(つまり、作成されるファイルシステムのルートディレクトリ)に存在する、ISO9660/Joliet Abstract ファイルとして使われるファイルへのパス。(ISO9660/Joliet)
- -bibliography-file
- ソースとなるディレクトリ(つまり、作成されるファイルシステムのルートディレクトリ)に存在する、ISO9660/Joliet Bibliography ファイルとして使われるファイルのへパス。(ISO9660/Joliet)
- -copyright-file
- ソースとなるディレクトリ(つまり、作成されるファイルシステムのルートディレクトリ)に存在する、ISO9660/Joliet Copyright ファイルとして使われるファイルの、パス。(ISO9660/Joliet)
- -application
- アプリケーション(Application)文字列(ISO9660/Joliet)
- -preparer
- 作成者(Preparer)文字列(ISO9660/Joliet)
- -publisher
- 出版者(Preparer)文字列(ISO9660/Joliet)
- -system-id
- システム ID 文字列(ISO9660/Joliet)
- -keep-mac-specific
- HFS+ ではないファイルシステムで、Macintosh 特有のファイル(.DS_Store など)を残したままにするかどうか(ISO9660/Joliet)
- -eltorito-boot
- El トリト起動イメージへのパス。デフォルトでは、フロッピードライブエミュレーションが使われるため、イメージは 1200KB, 1440KB, 2880KB のいずれかでなければならない。イメージがそれ以外のサイズであれば、"非エミュレーション"あるいは"ハードディスクエミュレーション"モードを有効にするために、それぞれ -no-emul-boot か -hard-disk-boot のどちらかが指定されていなければならない。(ISO9660/Joliet)
- -hard-disk-boot
- El トリトハードディスクエミュレーションモードを使用する。イメージは、MBR パーティションマップを持つ単一パーティションの仮想デバイスでなければならない。
- -no-emul-boot
- El トリト非エミュレーションモードを使用する。システムファームウェアはデバイスをエミュレートすることなく、-boot-load-size によって指定されたセクタ数を読み込み、実行する。(ISO9660/Joliet)
- -no-boot
- El トリトイメージを起動不可能とする。システムファームウェアは、データを持つ仮想デバイスを作成する。(ISO9660/Joliet)
- -boot-load-seg
- 非エミュレーション起動イメージについて、データを指定されたセグメントアドレスへ読み込む。システムファームウェアはデフォルトのアドレスを使用できるため、このオプションは奨められない。(ISO9660/Joliet)
- -boot-load-size
- 非エミュレーション起動イメージについて、512バイト単位のエミュレートセクタを指定された数だけメモリに読み込み実行する。デフォルトでは、4 セクタ(2KB)が読み込まれる。(ISO9660/Joliet)
- -eltorito-platform
- El トリトブートカタログ検証エントリ/セクションヘッダの、指定されたプラットフォーム ID を使用する。デフォルトは x86 ハードウェアを表す 0 である。(ISO/Joliet)
- -eltorito-specification
- 複数の起動イメージを持つ複雑なレイアウトついて、ディクショナリ配列を表す OpenStep 形式あるいは XML 形式を用いた plist 形式の文字列を渡して指定する。どの El トリトオプションも子ディクショナリに設定することができ、El トリト起動イメージのみに適用される。-eltorito-specification が通常の El トリトコマンドラインオプションと共に渡されたとき、これによって指定されたものはデフォルトではないセカンダリの起動エントリを作るために使用される。
- -udf-version
- 作成される UDF ファイルシステムのバージョン。"1.02" か "1.50" のどちらかを指定できる。デフォルトでは "1.50" が選択される。(UDF)
- -default-volume-name
- 全てのファイルシステムのデフォルトのボリューム名。指定されなければ、ソースディレクトリのパスのうち最後の文字列が用いられる。
- -hfs-volume-name
- HFS+ ファイルシステムのみに用いられるボリューム名。(HFS+ のみ)
- -iso-volume-name
- ISO9660 ファイルシステムのみに用いられるボリューム名。(ISO9660 のみ)
- -joliet-volume-name
- Joliet ファイルシステムのみに用いられるボリューム名。(Joliet のみ)
- -udf-volume-name
- UDF ファイルシステムのみに用いられるボリューム名。(UDF のみ)
- -hide-all
- 作成される全てのファイルシステムで不可視にするファイルとディレクトリのグロブ表現。シェルの展開を防ぐために、文字列を引用符で囲む必要がある。また文字列は glob(3) によって評価される。このオプションは複数回指定できないが、任意の複雑なグロブ表現を使うことができる。
- -hide-hfs
- HFS+ ファイルシステムで不可視にするファイルとディレクトリのグロブ表現。ただし、他のファイルシステム上からはデータは存在して見える。(HFS+ のみ)
- -hide-iso
- ISO ファイルシステムで不可視にするファイルとディレクトリのグロブ表現。ただし、他のファイルシステム上からはデータは存在して見える。(ISO9660 のみ)また、ハイブリッドイメージが Mac OS X 上で ISO 9660 ファイルシステムとしてマウントされた場合、Joliet 階層は ISO 階層を代替する。そのため Joliet ファイルシステムを作成する場合(デフォルト)、mount_cd9660(8) によるマウントからファイルを隠すために -hide-joliet オプションも必要になる。
- -hide-joliet
- Joliet ファイルシステムで不可視にするファイルとディレクトリのグロブ表現。ただし、他のファイルシステム上からはデータは存在して見える。(Joliet のみ)OS X では、ISO 9660 ファイルシステムで Joliet カタログが利用可能であればそちらを利用するため、作成されるファイルシステムが OS X 上で ISO としてマウントされる場合は -hide-joliet オプションは事実上 -hide-iso を代替するものとなる。
- -hide-udf
- UDF ファイルシステムで不可視にするファイルとディレクトリのグロブ表現。ただし、他のファイルシステム上からはデータは存在して見える。(UDF のみ)
- -only-udf
- UDF ファイルシステムでのみ表示させるファイルとディレクトリのグロブ表現。
- -only-iso
- ISO ファイルシステムでのみ表示させるファイルとディレクトリのグロブ表現。
- -only-joliet
- Joliet ファイルシステムでのみ表示させるファイルとディレクトリのグロブ表現。
- -print-size
- イメージのサイズを計算して見積もる。作成されるイメージの実際のサイズは、この見積もられた値と同等かそれ以下であることが保証される。
- -plistin
- コマンドラインパラメータを使用する代わりに、標準入力から標準的な plist 形式のを受け取り、ハイブリッドイメージを作成するためのパラメータとして使用する。それぞれのコマンドラインオプションは、先頭の "-" を除いた文字列を plist データのディクショナリにおけるキー名とし、パスなどの文字列の引数であれば文字列データとして、数値の引数であれば数値データとして、また切り換えられるオプションは真偽値として、それぞれ対応する値として格納する。引数のソースイメージと作成されるイメージは、それぞれ "source", "output" をキー名とし、値を指定する。
source にディスクイメージが指定された場合、イメージはアタッチされ、対応したイメージのマウントポイントへのパスが用いられる。この場合、絶対パスは使用することができない。source がディレクトリであれば、全ての引数のパスは絶対パスあるいはカレントディレクトリからの相対パスで示されるファイルかディレクトリでなければならない。
ボリューム名オプションは、ファイルシステム中のファイルと同様に名前付けの制限を受けるため、それぞれのファイルシステムで適切である文字で構成される必要がある。指定した文字列がどのように修正されるかを確認するには、drutil(1) を drutil filename myname として使用すること。
-abstract-file, -bibliography-file, -copyright-file のオプションは、サブディレクトリではなくソースディレクトリ直下に存在し、また ISO9660 レベル 1 との互換性のために 8.3 形式の名前でなければならない。
compact image
SPARSE 形式ディスクイメージ(スパースディスクイメージ)の HFS ファイルシステムの内容を調べ、イメージ中のファイルシステムによって使用されていない領域を取り除く。compact によってイメージファイルが小さくなるかは、ファイルシステムのファイル構成に依存する。
共通オプション:-encryption, -stdinpass, -srcimagekey, -shadow with friends, -puppetstrings, -plist
info
DiskImages.framework、ディスクイメージドライバ、及び現在アタッチされているイメージについての情報を表示する。hdiutil info は -plist をオプションとして受け入れる。
load
ディスクイメージドライバを手動でロードする。通常、ディスクイメージドライバは DiskImages フレームワークによって必要時にロードされる。OS X 10.2 より、全てのイメージがデタッチされる時点でドライバは自動的に登録が解除される(1 分ほど再び使用されることがなければアンロードされる)。
checksum image -type type
イメージ形式によらず、イメージデータの指定された形式のチェックサムを計算する。
共通オプション:-shadow with friends, -encryption, -stdinpass, -srcimagekey, -puppetstrings, -plist
type は以下に挙げる形式が指定できる。
- UDIF-CRC32 - CRC-32 イメージチェックサム
- UDIF-MD5 - MD5 イメージチェックサム
- DC42 - Disk Copy 4.2
- CRC28 - CRC-32 (NDIF)
- CRC32 - CRC-32
- MD5 - MD5
- SHA - SHA
- SHA1 - SHA-1
- SHA256 - SHA-256
- SHA384 - SHA-384
- SHA512 - SHA-512
chpass image
暗号化イメージ(パスワード保護されたイメージ)のパスワードを変更する。デフォルトでは、パスワードの変更は対話的に行われる。
共通オプション:-recover, -srcimagekey
オプションとして -oldstdinpass と -newstdinpass を指定することもできる。その場合 -stdinpass と同様に、NULL 終端された新旧のパスワード文字列をオプションで指定した順で標準入力から読み取られる。
unflatten image
UDIF ディスクイメージを unflatten し、伝統的な形式(XML ではなくリソースのみの)のデュアルフォークファイルを作成する。メタデータを表すリソースフォークが 16 MB よりも大きな場合は、エラー -39 ("End of fork") によって処理は失敗する。
共通オプション:-encryption, -stdinpass, -srcimagekey
flatten image
読み込み専用(あるいは圧縮)UDIF ディスクイメージをシングルフォークファイルに flatten する。デフォルトでは、メタデータは XML(カーネルが使用する)と埋め込まれたリソースフォーク(OS X 10.1 とそれ以前)の両方に保存される。UDBZ は in-kernel ではサポートされないことに注意すること。
共通オプション:-srcimagekey, -encryption, -stdinpass
flatten は、UDIF が以前に unflatten された場合にのみ必要なものである。
その他のオプション
- -noxml
- in-kernel アタッチメントのために、XML データを埋め込まない。イメージは in-kernel では二度とアタッチできなくなる。
- -nosrcfork
- リソースフォークデータを埋め込まない。イメージは OS X 10.2 以前ではアタッチできなくなる。
fsid image
指定されたディスクイメージのファイルシステムについての情報を出力する。通常、image は物理ディスクに対応する /dev エントリである。NOTE ON DEV ENTRY ACCESS セクションを参考のこと。より詳細な情報は HFS ファイルシステムの場合出力される。
共通オプション:-srcimagekey, -encryption, -stdinpass, -shadow
hfsanalyze image
HFS/HFS+ ボリュームについての情報を表示する。通常の場合、image は物理ディスクに対応する /dev エントリを指定する。NOTE ON DEV ENTRY ACCESS の項を参照すること。
共通オプション:-encryption, -stdinpass, -srcimagekey, -shadow with friends
mountvol dev_name
Disk Arbitration を使用して dev_name のファイルシステムのマウントを試みる(diskutil mount と似たもの)。-plist によって XML 形式の出力が得られる。mountvol は(mount とは異なり)、unmount によってアンマウントされたボリュームを再度マウントすることに注意すること。イメージはアタッチ・デタッチされるものであるが、ボリュームはマウント・アンマウントされるものである。mountvol は unmomunt の逆の処理を行うものである。
mount/attach は、/dev エントリに対しても使用することができるが、/dev エントリはアタッチされるディスクイメージとして扱われる(別の /dev エントリが作られる)。これは通常の場合、望まれないことである。
unmount volume [-force]
関連するイメージをデタッチせずに、ボリュームをアンマウントする。volume は /dev エントリあるいはマウントポイントの名前で指定する。注意: unmount はボリュームに関連付けれらたディスクイメージをデタッチしない。ボリュームはマウント・アンマウントされるものである。mount(attach の同義)は、イメージが既にアタッチされているがその中のボリュームがマウントされていない場合、そのボリュームをマウントすることはない'(unmount がファイルシステムに対して使われていれば)。mountvol は unmount によってアンマウントされたボリュームをマウントする。
オプション
- -force
- ファイルシステムのファイルが開かれていても、ファイルシステムをアンマウントする。umount -f と同様である。
imageinfo image
ディスクイメージについての情報を表示する。
共通オプション:-encryption, -stdinpass, -srcimagekey, -shadow with friends, -plist
その他のオプション:
- -format - イメージ形式のみを表示する
- -checksum - イメージのチェックサムのみを表示する
isencrypted image
イメージが暗号化されているか出力する。暗号化されていれば、詳細の情報も出力される。 共通オプション:-pist
plugins
DiskImages フレームワークのプラグインについての情報を表示する。ユーザ、システム、ローカル、ネットワークそれぞれの領域がプラグインの検索に用いられる(~/Library/Plug-ins/DiskImages, /System/Library/Plug-ins/DiskImages, /Library/Plug-ins/DiskImages, /Network/Library/Plug-ins/DiskImages)。-plist が使用可能である。
internet-enable [-yes] | -no | -query image
イメージについて処理後処理を可能・不可能にする。引数がなければ、IDME は可能となる。可能となれば、Disk Copy(OS X 10.2.3 以降)や OS X 10.3 以降でのダウンロード機能を利用したブラウザがイメージを初めて処理する時、イメージはその中の可視である内容をイメージの置かれているディレクトリへコピーし、イメージは IDME をオフにされゴミ箱へ送られる。
共通オプション:-encryption, -stdinpass, -srcimagekey, -plist
resize size_spec image
読み書き可能な UDIF が渡されると、最後のパーティションが Apple_HFS であれば、そのパーティションについて、イメージの終わり、あるいは HFS/HFS+ ファイルシステムで使われているブロックまでその容量を変更することを試みる(size_spec に依存する)。resize は、デバイスイメージを CD-R/DVD-R 形式へ変換して焼き込みを行うために容量を小さくすることが必要な場合にしばしば用いられる。resize はデータを動かさず、gaps は再利用されないことに注意すること(?)。ファイルシステムによって作られた gaps を最小限にするために、-fsargs が使用できる場合がある。resize はまた、ファイルシステムとイメージの容量を区切りを越えて増加させるために用いることもできる。
hdiutil burn はデバイスの最後にある Apple_Free パーティションを焼き込まないため、リサイズされたファイルシステムを持つイメージを焼き込み、ファイルシステム中の実際のデータのみの内容を持つ CD-R/DVD-R マスタを作成することができる(データ断片化は最小限に抑えられるであろう)。
共通オプション:-encryption, -stdinpass, -srcimagekey, -shadow with friends, -plist
サイズ指定子
- -size ??b|??k|??m|??g|??t??p|??e
- create を参照
- -sectors sector_count | min | max
- パーティションのサイズ変更後のサイズを 512 バイト単位のセクタ数で指定する。min と max の範囲を越えた値が指定されると、エラーが返されてパーティションのサイズ変更は行われない。min は、パーティションがサイズ変更されるサイズの最小値を自動的に決定し、その値が用いられる。max は、パーティションがサイズ変更されるサイズの最大値を自動的に決定し、その値が用いられる。
その他のオプション
- -imageonly
- イメージファイルのみリサイズを行い、イメージ中のパーティションの変更は行わない。UDIF イメージに対する処理ではデフォルトである(新しく作られた自由領域にはパーティションを作ることができる)。
- -partitiononly
- イメージ中のパーティションのみリサイズを行う(存在するファイルシステムも含む)。NDIF イメージに対する処理ではデフォルトである。パーティションが全ての領域を満たしている作られたばかりの SPUD イメージに対しては、パーティションは縮小のみ可能である。存在するパーティションの後に Apple_Free パーティションがあれば、パーティションは Apple_Free とマークされている領域まで拡げられる。パーティションの縮小により、Apple_Free パーティションが確保される。
- -partitionNumber partitionNumber
- どのパーティションをリサイズするかを指定する(UDIF のみ。下記の HISTORY を参考のこと)。partitionNumber は 0 を初めとしたものであるが、hdiutil pmap によって確認できるように、パーティション 0 はパーティションマップ自身のこともある。
- -growonly
- イメージの拡張のみ許可する
- -shrinkonly
- イメージの縮小のみ許可する
- -nofinalgap
- リサイズの結果作られたフリーパーティションの除去を許可する。そのようなイメージはハードドライブに保存されると、OS 9 を起動できなくなったり、OS X をold-world (beige) マシンで起動できなくなる。(?; Such an image restored to a hard drive will not boot OS 9 nor will it allow OS X to boot on old-world (beige) machines.)
- -limits
- -imageonly や -partitiononly フラグを指定した場合に指定できるサイズ(512 バイト単位のセクタ)の最小値、現在値、最大値を表示する。イメージは変更されない。
- -oldlimits
- -limits と同様に振る舞うが、伸縮可能なサイズは OS X バージョン 10.3 のものと同様に表示される(古いシステムにおいてイメージが asr(8) を必要とする場合に有用である)。
segment
- segment -o firstSegname -segmentCount #segs image [opts]
- segment -o firstSegname -segmentSize size image [opts]
NDIF や UDIF ディスクイメージを分割する。分割されたイメージは、ファイルシステム、ネットワークプロトコル、メディアによって、ファイルサイズに制限が課せられている場合に用いられる。Note: 分割されたイメージが暗号化されているかどうかは、元のイメージの暗号化状態によってではなく、segment に渡されるオプションによって決定される。
共通オプション:-encryption, -stdinpass, -srcimagekey, -tgtimagekey, -puppetstrings, -plist
その他のオプション
- -segmentCount segment_count
- 分割数を指定する。-segmentCount と -segmentSize は、どちらか一つのオプションを受け取る。
- -segmentSize segment_size
- 分割サイズのセクタ数を、mkfile(8) の形式で指定する(不適切な数値もセクタとして扱われる)。元のイメージサイズが分割するサイズの倍数ではない場合、最後の分割ファイルはその他よりも小さいものとなる。-segmentCount と -segmentSize は、どちらか一つのオプションを受け取る。読み書き可能(UDRW)イメージの分割はサポートされていない(OS X 10.3 現在)。
- -firstSegmentSize segment_size
- 最初の分割サイズのセクタ数を、-segmentSize と同じ形式で指定する。複数の CD 保存に用いられる。
- -restricted
- 複数 CD 保存に用いられる、制限された分割ファイルを作成する。
- -ov
- 既存のファイルを上書きする。アタッチされたイメージへの上書きは許されていないことなどについては、create の項目を参照すること。
pmap image_source [-options optstr]
イメージやデバイスのパーティションマップを表示する。image_source は、普通のファイルあるいは特別なファイル(例えば /dev/disk エントリ)である。下記の NOTE ON DEV ENTRY ACCESS の項目を参照すること。
共通オプション:-encryption, -stdinpass, -srcimagekey, -shadow with friends.
optstr のデフォルトは "xsSgcvk" であり、以下の組み合わせを指定できる。
- r raw - 調整なしで処理を行う
- x extended - 2K と 512 エントリを処理し合わせる
- s sectorsize - セクタ数で表示する
- S sort - ブロック数によってソートする
- g genfree - 割り当てられていない領域を考慮する
- c combfree - 隣接する自由領域エントリを結合する
- f fixfinal - 最終のパーティションをデバイスの最後まで拡張する
- v volume synthesize - 単一ボリュームを単一パーティションエントリとする
- k skip zero-length - ゼロ長のエントリをスキップする
- K skip void/free - フリーあるいは無効な全てのパーティションをスキップする
- m merge free space - 可能であれば、小さなフリーパーティションを前のパーティションと合わせる
- i ignore shims - ブロック列の小さなフリーパーティションを無視する
udifrez [options] image
ディスクイメージに埋め込まれたリソース(ソフトウェアライセンス規約など) 以下のオプションのいずれかを指定しなければならない。
- -xml file - file の中の XML からリソースをコピーする
- -rsrcfork file - file のリソースフォークからリソースをコピーする
- -replaceall - イメージ中に存在する全てのリソースを削除する
udifderez [options] image
イメージからリソースを抽出する。 オプション:
- -xml - XML 出力を省略する(デフォルト)
- -rez - Rez 形式の出力を省略する
共通オプション:-encryption, -stdinpass, -srcimagekey
例
検証
hdiutil verify myimage.img
イメージを内部のチェックサムと照らし合わせ検証する。
分割
hdiutil segment -segmentSize 10m -o /tmp/aseg 30m.dmg
aseg.dmg, aseg.002.dmgpart, aseg.003.dmgpart を作成する。
変換
hdiutil convert master.dmg -format UDTO -o master
master.dmg を CD-R として焼き込めるイメージへ変換し、ファイル名に .toast を追加する。
hdiutil convert CDmaster.dmg -format UDTO -o CDmaster.cdr
CDmaster.dmg を CDmaster.cdr という名前の CD-R として焼き込めるイメージへ変換する。
hdiutil convert /dev/disk1 -format UDRW -o devimage
/dev/disk1 のディスクを読み書き可能なデバイスイメージファイルへ変換する。/dev/rdisk1 への読み込み権限がない場合、authopen(1) が使われる。ブロックスペシャルデバイスを使用することに注意すること。
焼き込み
hdiutil burn myImage.dmg
イメージを利用可能な光学メディアへ焼き込み、その後に検証を行う。
hdiutil burn myRawImage.cdr -noverifyburn -noeject
イメージを焼き込むが、検証とディスクの取り出しを行わない。
50 MB の暗号化イメージを作成
hdiutil create -encryption -size 50m e.dmg -fs HFS+J
非対話的に暗号化 SPUD イメージを作成
echo -n pp|hdiutil create -encryption -stdinpass -size 9m sp.dmg
"1 GB" のスパースイメージを作成(1 GB まで拡張可能なファイルシステムを持つファイル)
hdiutil create -type SPARSE -size 1g -fs HFS+ growableTo1g
新たにマウントされるボリュームを持つイメージを作成
hdiutil create -volname Dick -size 1.3m -fs HFS -attach Moby.dmg
shadow ファイルを使用し、読み込み専用イメージを読み書き可能なものとしてアタッチして変更し、読み込み専用イメージへ変換して戻す。この方法によって、イメージを読み書き可能なものへと変換するための時間と領域を減らす。
hdiutil attach -owners on Moby.dmg -shadow /dev/disk2 Apple_partition_scheme /dev/disk2s1 Apple_partition_map /dev/disk2s2 Apple_HFS /Volumes/Moby ditto /Applications/Preview.app /Volumes/Moby hdiutil detach /dev/disk2 hdiutil convert -format UDZO Moby.dmg -shadow
makehybrid を使用する。以下のファイルがあるとする。
albumlist.txt song2.wma song4.m4a song6.mp3 song8.mp3 song1.wma song3.m4a song5.mp3 song7.mp3
ファイルシステム間で共通の内容を持つ、HFS+/ISO9660/Joliet ハイブリッドな MusicBakup.iso を作成する。一般的に Macintosh システムでのみ閲覧可能な HFS+ ファイルシステムでは .wma ファイルを隠し、.m4a と .mp3 ファイルを可視にするものとする。Joliet ファイルシステムでは .m4a と .mp3 ファイルを隠し、.wma ファイルを可視にする。一般的に多くのプラットフォームにおける光学メディアのデフォルトファイルシステムである ISO9660 ファイルシステムでは、.mp3 ファイルのみ可視にする。三つ全てのファイルシステムでは "album-list.txt" ファイルを含ませる。-hide オプションは glob(3) により展開されるグロブ表現をとる。
hdiutil makehybrid -o MusicBackup.iso Music -hfs -iso -joliet \
-hide-hfs 'Music/*.wma' -hide-joliet 'Music/{*.m4a,*.mp3}' \
-hide-iso 'Music/*.{wma,m4a}'
(CD オーディオディスクの作成には drutil(1) も参照すること)
ディレクトリからイメージを作成(新しい形式)
hdiutil create -srcfolder mydir mydir.dmg
ディレクトリからイメージを作成(10.1 形式; 歴史的なもの)
du -s myFolder # du(1) はリソースフォークもカウントする 10542 hdiutil create -sectors 10642 folder # ファイルシステムに 1% ほど余分に取る hdid -nomount folder.dmg ... /dev/disk1s2 Apple_HFS newfs_hfs -v myFolderImage /dev/rdisk1s2 hdiutil detach disk1 hdid folder.dmg ... /dev/disk1s2 Apple_HFS /Volumes/myFolderImage sudo mount -u -t hfs -o perm /dev/disk1s2 /Volumes/myFolderImage # 任意に所有者を有効にする; 手動でマウントされた場合 sudo は不要 ditto -rsrcFork myFolder /Volumes/myFolderImage hdiutil detach disk1s2 # 全てお終い hdiutil convert -format UDZO -o folder.z.dmg folder.dmg # 圧縮
読み込み専用ディスクイメージの所有者を手動で変更する
hdiutil attach myimage.dmg ... /dev/disk1s2 Apple_HFS /Volumes/myVolume sudo mount -ur -t hfs -o perm /dev/disk1s2 /Volumes/myVolume # /sbin/mount を使って disktool -p disk1s2 # Panther では 'diskutil unmount' を使う mkdir /Volumes/myVolume
既知のイメージのアタッチを強制する
hdiutil attach -imagekey diskimage-class=CRawDiskImage myBlob.bar
環境変数
以下の環境変数は hdiutil と DiskImages に影響する。
- com_apple_hdid_verbose
- attach について -verbose を有効にする。
- com_apple_hdid_debug
- attach について -debug を有効にする。
- com_apple_hdid_nokernel
- -nokernel と似ているが、create -attach などの場合でも機能する。
- com_apple_hdid_kernel
- まず in-kernel アタッチを試みる(attach -kernel のように)。in-kernel は、UDRW と SPARSE イメージに対してはデフォルトの動作である。hdid(8) で述べられている RAM-based イメージを含む他のカーネル互換イメージは、attach -kernel が用いられない限り、あるいはこの環境変数が設定されない限り、ユーザプロセスによりアタッチされる。イメージが "カーネル互換" でなければ、in-kernel アタッチメントが必要な場合はアタッチが行われない。(警告: 現在では ram:// イメージは in-kernel でアタッチされると wired memory(固定メモリ)を使用する。)
- com_apple_diskimages_insecureHTTP
- -insecurehttp と同様に、SSL ピア検証を行わない。類似のコマンドラインオプションをサポートしない asr(8) のような DiskImages クライエントの場合に有用である。
エラー
DiskImages は多くのフレームワークを使用し、多くのエラーコードを目にすることになる。一般に、これらのエラー番号はユーザのためにローカライズされた文字列に変換される。それらの予備知識を得るために、エラーが起きた原因、BSD errno の値に関して intro(2) は良い説明となる。デバッグを行うには、通常の場合 -verbose によって何が失敗しているのかを知る手掛かりとなる十分な情報が得られるだろう。以下は hdiutil が出くわすことになるであろう重要なエラーのリストである。
- ENXIO
- デバイスが設定されていない。このエラーは、カーネルドライバやフレームワークヘルパーと接触できない場合に DiskImages によって返される。前者は通常 IOHDIXController カーネル拡張がロードできないということを意味する。後者は通常 Foundation が提供するオブジェクト RPC 機構が設定できないということを意味する。リアタッチされた screen(1) セッションに存在するような、死んだ mach bootstrap コンテキスト環境では働かない。root ユーザは、StartupItemContext(8) によって起動項目の mach bootstrap コンテキストへアクセスすることができる。
- EINVAL
- 不正な引数。このエラーは多くの状況で使用され、しばしば hdiutil の引数が細かい点で意味をなさないことの手掛かりとなる(例えば不正なレイアウト名が create -layout に渡されるなど)。
- EFBIG
- ファイルが大きすぎる。DiskImages は、HTTP によるディスクイメージをアクセスを試み、Range リクエストをサポートするサーバでそのディスクが大きすぎる場合、このエラーを明示的に使用する。詳細は hdid(8) を参照すること。
- EAUTH
- 認証エラー。libcurl(3) が SSL ピアの検証を行えない場合、DiskImages によって使用される。詳細は -insecurehttp を参照すること。
- EBUSY
- リソースがビジーである。排他的なアクセスが必要であるがそれが得られない場合に使用される。アタッチされたイメージに対して create -ov を行うとしたときなどに返される。
- EACCES vs. EPERM
- EACCES と EPERM は微妙に異なる。後者の "操作が許可されていない"(operation not permitted)は、不適切な実行ユーザ ID による場合など、実行できない操作を示す。一方で、"パーミッション拒否"(permission denied)は特定のアクセスモードにより処理が拒否されたことを意味する。
永続的なスパースイメージを使用する
SPARSE イメージ(スパースイメージ)は元来、最終的なイメージサイズが不明である場合に他のイメージ(UDZO など)を作成する中間段階に用いられるものとして作られた。OS X 10.3 でのように、現在では部分的なアップデートがされた SPARSE イメージは永続的なストレージとして安全に用いられるように適切に扱われる。SPARSE イメージは、10.3.2 以前のバージョンの OS X での使用は奨められず、通常はデータサイズが全く不明である場合のみに用いられるものである。resize は、HFS+ ファイルシステムとそれを含むイメージのリサイズを行うことができる。
ファイルシステムが参照するよりも多くの領域が必要である場合、create -stretch と resize がイメージ中のファイルシステムを拡張、縮小させる手段となる。イメージで使用されていない領域を解放する compact は、永続的なストレージとして用いられる SPARSE イメージを使用する場合に便利である。SPARSE イメージはファイルシステムの断片化を増大させることに注意すること。
スパースイメージ内部のファイルシステムが、そのスパースイメージが置かれているボリュームよりも多くの自由領域を持っている場合に発生するエラーを避けるために、SPARSE イメージ内部の HFS ボリュームの自由領域の合計値は、そのイメージが置かれているボリュームの自由領域よりも少ないものとして報告される。イメージのファイルシステムは現在では、直接 attach が行われればこのように振る舞い、ファイルシステムがアンマウントされ再びマウントされた場合(例えば unmount と mountvol)はそのように振る舞わない。
NOTE ON DEV ENTRY ACCESS
どの /dev エントリも生のディスクイメージとして扱われることが可能なため、どのデバイスがいつどのようにアクセスされるか知ることは重要である。/dev/rdisk ノードはキャラクタスペシャルデバイスであるが、BSD 上では "生" でありブロック整列 I/O が強制される。バッファキャッシュよりも物理ディスクに類似している。一方で /dev/disk ノードはバッファされたブロックスペシャルデバイスであり、主にカーネルのファイルシステムコードにより利用される。 ファイルシステムがマウントされている場合、/dev/disk ノードから読み込むことはできないが、適切な /dev/rdisk ノードは hdiutil で fsid や pmap を用いることにより読み込みアクセスが可能である。ディスクイメージフレームワークは authopen(1) を用いて open(2) によって読み込みオープンが(EACCESS によって)不可能なデバイスを開こうとする。これはリモートからのログインを行い /dev エントリにアクセスしようとする場合、明白なハングを引き起こす(認証パネルがコンソールで開かれる)。 一般的に、/dev/disk ノードはイメージングデバイス(convert , create -srcdevice の処理)に用いられる一方、/dev/rdisk は動作の速い pmap, fsid の利用に適している。特に、マウントされたジャーナルファイルシステムのブロックを読み込み専用イメージに変換する場合にイメージ中のボリュームがマウントされることが避けられる(ジャーナルが崩れてしまう)。
互換性
OS X 10.0 は Mac OS 9 での Disk Copy 6 ディスクイメージをサポートしていた。OS X 10.1 ではスパース、暗号化、zlib 圧縮イメージが追加された。これらのイメージは OS X 10.0 では認識されない(あるいは読み書き可能な形でアタッチした場合、破壊されるかも知れない)。スパース、シャドウ、暗号化形式は進化し、古いバージョンの OS と互換性を持つようなイメージを作成する為のスイッチが追加された(形式の増大により、パフォーマンスと信頼性の改善が犠牲となった)。特に、スパースイメージはそれが作成されたものより古いバージョンの OS X ではアタッチされることを期待できない。
OS X 10.2 では、多くの一般的なイメージ形式が "in-kernel"(例えば、DiskImages カーネル拡張はヘルパープロセスなしで処理可能である)となり、イメージメタデータは XML あるいは 埋め込まれたリソースフォークとして保存され、デフォルトの Disk Copy.app の "compressed" 形式が UDZO となった(10.0 との互換性を失った)。OS X 10.4 では後方互換性を犠牲とし、bzip2 圧縮が UDBZ 形式として導入され、より小さなイメージが利用可能となった(特に makehybrid と組み合わせた場合)。
OS X 10.4.7 では、UDIF イメージに埋め込まれていたリソースフォークは、リソースフォーク構造がもたらすメタデータの制約を避ける為に利用不可となった。結果として、10.4.7 とそれ以降で作成された UDIF イメージは、デフォルトでは OS X 10.1 及び OS X 10.0 では認識されないだろう。flatten がイメージ中に保存されたメタデータ形式のカスタマイズに用いられるようになった。
OS X 10.5 では迅速に圧縮可能なスパースバンドルイメージが導入されたが、過去のバージョンの OS では認識されない。OS X 10.6 では F_FULLSYNC をサポートしないネットワークファイルサーバ上のスパースバンドルイメージのアタッチのサポートが削除された。
歴史
ディスクイメージは当初、電子的にフロッピーディスクを複製製造することを目的とした保存及び伝送を目的として開発された。これらのフロッピーのイメージはフロッピーディスクへ作成・保存するアプリケーションと関連して、一般的に 'Disk Copy 4.2' イメージと言及される。Disk Copy 4.2 イメージは フロッピーディスクの block-for-block を表現しており、圧縮は行われていなかった。DART は圧縮をサポートした Disk Copy 4.2 の変形である。
NDIF(New Disk Image Format)イメージは Disk Copy 4.2 と DART イメージ形式を置き換え、フロッピーディスクよりも大きな容量をサポートすることを目的として開発された。NDIF と Disk Copy バージョン 6 により、イメージは Mac OS 9 上で大容量ストレージデバイスとして "アタッチ" することが可能となった。Apple Data Compression(ADC)-- 早い伸長についての注意深い最適化が行われている -- は、一般的に一度作成され製造上で多数回保存されるイメージを圧縮する為に用いられた。
UDIF(Universal Disk Image Format)デバイスイメージは NDIF の代わりに利用され、イメージをブロックデバイス全体とそのデータ(DDM, partition map, disk-based drivers など)として振る舞うことを可能にした。例えば、イメージから複製された起動可能な CD として振る舞うことができる。シングルフォークファイル(NDIF はデュアルフォークである)を保証する為に、リソースフォークがデータフォークの中に埋め込まれることとなった。UDIF は OS X ネイティブなイメージ形式である。
他のオペレーションシステムに由来する生のディスクイメージ(.iso ファイルなど)はディスクイメージとして認識される、それが OS X が認識可能なファイルシステムであればアタッチ・マウントが可能である。それらはまた hdiutil burn を用いて焼き込むことができる。
WHAT'S NEW
OS X 10.6 では、pmap が書き直され MediaKit の最新のルーチンを利用するようになり、GPT パーティションマップを適切にサポートするようになった。また全ての動作において -debug により -verbose が暗黙的に有効になるようになっている。
OS X 10.5 では、存在するイメージあるいは /dev ノードについて処理を行う際の attach の振る舞いが変更された。もしイメージがアタッチされているがボリュームがマウントされていない場合、ボリュームがマウントされる。以前のシステムではマウントされているボリュームではなく /dev を返す。この変更により、/dev ノードが既に存在する場合、複数作られる可能性が排除された。
SEE ALSO
authopen(1), hdid(8), diskutil, ditto(8), ioreg(8), drutil(1), ufs.util(8), msdos.util(8), hfs.util(8), diskarbitrationd(8), /usr/sbin/disktool (run with no arguments for usage), /System/Library/CoreServices/DiskImageMounter.app.
Last modified:2011/01/25 18:41:20
bik
0.357239