top

TOP  RSS  Login

hdiutil の使い方

hdiutil とは

ディスクイメージをアタッチ(マウント)したり作成したり CD や DVD なんかのメディアに焼いたりするコマンド。/usr/bin/hdiutil にある。



man を参考

使い方

ディスクイメージをアタッチ(マウント)する

attach あるいは mount を使用する。アタッチに成功すると、与えられたデバイスファイルやマウントされたパスなどの情報が表示される。

$ hdiutil attach hoge.dmg

/dev/disk3              Apple_partition_scheme
/dev/disk3s1            Apple_partition_map
/dev/disk3s2            Apple_HFS                       /Volumes/hoge

マウントパスを指定する

ディスクイメージの中のファイルシステムは、デフォルトでは /Volumes 以下にマウントされるが、-mountroot によってマウントに用いられるパスの親ディレクトリを指定できる。

$ hdiutil attach -mountroot /tmp/mnt hoge.dmg

/dev/disk3              Apple_partition_scheme
/dev/disk3s1            Apple_partition_map
/dev/disk3s2            Apple_HFS                       /tmp/mnt/hoge

また -mountpoint によって、マウントするパスを直接指定することもできる。この時、指定されたパスが存在しない場合は自動的に作られ、デタッチ時に自動的に削除される。

$ hdiutil attach -mountpoint /tmp/mnt/hoge hoge.dmg

/dev/disk3              Apple_partition_scheme
/dev/disk3s1            Apple_partition_map
/dev/disk3s2            Apple_HFS                       /tmp/mnt/hoge

パスワード保護されたディスクイメージのアタッチ

パスワード保護されたディスクイメージをアタッチすると、パスワードを入力するよう認証ウィンドウが表示される。非対話的に認証を行う場合は、-stdinpass オプションにより標準入力を介してパスワードを受け入れるように指定できる。

# "hogehoge" がパスワードである場合
$ echo -n hogehoge | hdiutil attach -stdinpass hoge.dmg

デバイスとして接続を行うがマウントは行いたくない場合

-nomount オプションを付ける。

$ hdiutil attach -nomount hoge.dmg

/dev/disk3              Apple_partition_scheme
/dev/disk3s1            Apple_partition_map
/dev/disk3s2            Apple_HFS

その後マウントする場合、通常のディスクデバイスと同様にマウントを行う。

$ mount_hfs /dev/disk3s2 hoge

ディスクイメージの検証を行わない

チェックサム付きのディスクイメージをアタッチする場合は検証が行われるが、-noverify オプションを指定することで検証をスキップすることができる。

$ hdiutil attach -noverify hoge.dmg

読み込み専用ディスクイメージを仮想的に書き込み可能にしてアタッチする

-shadow オプションを指定する。仮想的に書き込んだ内容は、実際には元のイメージには書き込まれず、差分として指定された shadow ファイルに保存される。なお、読み込み専用ディスクイメージに限らず使用できる。

# hoge.dmg.shadow を shadow ファイルとして、hoge.dmg に仮想的に書き込む
$ hdiutil attach -shadow hoge.dmg.shadow hoge.dmg

ディスクイメージをデタッチ(イジェクト)する

detach あるいは eject を使用する。引数には、デタッチするディスクイメージのデバイス名かマウントされたパスを指定する。

$ hdiutil detach disk3
# あるいは hdiutil detach /Volumes/hoge

"disk3" unmounted.
"disk3" ejected.

detach は、ディスクイメージがデバイスとして接続されていると、アンマウントすると同時にデバイスとしての接続を解除する。デバイスの接続を保ちアンマウントのみ行う場合は、hdiutil unmountを使用する。

ディスクイメージを新規に作成する

create を使用する。-size によってディスクの容量、-fs によってファイルシステムを指定する。

# 5 メガバイトの HFS+ ファイルシステムを持つディスクイメージ
$ hdiutil create -size 5m -fs HFS+ hoge.dmg

-fs オプションを付けない場合はファイルシステムの作成は行われず、ディスクデバイスとして接続できるイメージを作成する。ファイルシステムを作成する場合、hdiutil attach -nomount の後に newfs_hfs などを用いて行う。

下記のオプションは、それぞれ併用することができる。

ボリューム名を指定する

-volname オプションで指定する。

$ hdiutil create -size 5m -fs HFS+ -volname hoge hoge.dmg

ディレクトリ以下からディスクイメージを作成する

-srcfolder オプションにより、コピー元のディレクトリを指定する。-format を使用して、ディスクイメージの形式を指定することもできる。指定できる形式は、UDRW, UDRO, UDZO, UDSP など(詳細は http://qz.tsugumi.org/man_hdiutil.html#l15 を参照)。指定しなければ、読み込み専用の zlib 圧縮形式(UDZO)が選択される。

# path/to/src 以下の内容を、新しく作成するディスクイメージ newdisk.dmg にコピーする
$ hdiutil create -srcfolder path/to/src -fs HFS+ -volname volname newdisk.dmg

スパースディスクイメージを作成する

-type SPARSE を指定する。

$ hdiutil create -size 5m -fs HFS+ -type SPARSE hoge.sparseimage

作成されるディスクイメージのファイルサイズは、通常は指定したディスク容量よりも小さくなる。

パスワード保護されたディスクイメージを作成する

-stdinpass によって標準入力よりパスワードを受け入れるよう指定し、-encryption によって暗号化するように指定する。-encryption は暗号化形式の指定がない場合、CEncryptedEncoding(128 ビットの AES)が選択される。

$ echo -n hogehoge | hdiutil create -size 5m -fs HFS+ -stdinpass -encryption CEncryptedEncoding hoge.dmg

ディスクイメージの形式を変換する

convert を使用する。-format オプションに変換する形式を指定し、-o に続いて変換されたイメージファイル名を指定する。使用できる形式は、UDRW, UDRO, UDZO, UDSP など(詳細は http://qz.tsugumi.org/man_hdiutil.html#l15 を参照)。

ディスク容量を変更する場合は、下の resize の項目を参照。

いくつかの例

# 読み込み専用イメージへ変換
$ hdiutil convert hoge.dmg -format UDRO -o hogero.dmg

# 読み込み専用イメージから書き込み可能イメージへ変換
$ hdiutil convert hogero.dmg -format UDRW -o hogerw.dmg

# 読み込み専用の zlib 圧縮イメージへ変換
$ hdiutil convert hoge.dmg -format UDZO -o hogezo.dmg

# 読み込み専用の bzip2 圧縮イメージへ変換(Mac OS X 10.4 以降)
$ hdiutil convert hoge.dmg -format UDBZ -o hogebz.dmg

# スパースイメージへ変換
$ hdiutil convert hoge.dmg -format UDSP -o hoge.sparseimage

# パスワード保護されたディスクイメージへ変換
$ echo -n hogehoge | hdiutil convert hoge.dmg -stdinpass -encryption CEncryptedEncoding -format UDRO hogeenc.dmg
# -format で指定する形式は任意のものでよい

ディスクイメージの容量を変更する

resize を使用する。ディスクイメージファイルを指定して、-size などのオプションによって新しい容量を指定する。

# 10m(10メガバイト)へ変更
$ hdiutil resize hoge.dmg -size 10m

# パスワード保護されたディスクイメージの場合
$ echo -n hogehoge | hdiutil resize hoge.dmg -stdinpass -size 10m

新たに指定する容量が、変更するディスクイメージのファイル使用容量よりも小さな場合、変換することができない。

スパースディスクイメージの使われていない領域を解放する

compact を使用する。肥大化したスパースイメージのファイルシステムからファイルを削除した時など、使われていない領域を解放してイメージファイルのサイズを減らすことができる。

$ hdiutil compact hoge.sparseimage

パスワード保護されたディスクイメージのパスワードを変更する

chpass を使用する。ディスクイメージは書き込み可能ディスクでなければならない。

$ hdiutil chpass hogeenc.dmg

標準入力から非対話的にパスワードを変更する場合、-oldstdinpass, -newstdinpass を指定し、その順番に標準入力からパスワードを指定する。

# "hogehoge" から "newpass" へ変更
$ echo -n "hogehoge\0" "newpass\0" | hdiutil chpass -oldstdinpass -newstdinpass hogeenc.dmg

ディスクイメージを検証する

verify を使用する。チェックサムが含まれていないディスクイメージに対して検証を行おうとした場合、失敗する。

$ hdiutil verify hogero.dmg
...
hdiutil: verify: checksum of "hogero.dmg" is VALID

ディスクイメージの情報を得る

imageinfo を使用する。引数にはディスクイメージファイルを指定する。

$ hdiutil imageinfo hoge.dmg

アタッチされたディスクイメージの情報を得る

info を使用する。

$ hdiutil info

ディスクイメージのパーティションマップを表示する

pmap を使用する。

$ hdiutil pmap hoge.dmg

ディスクイメージのデータのチェックサムを計算する

checksum を使用する。-type オプションにより、チェックサムの計算方式(CRC28, CRC32, DC42, MD5, UDIF-CRC32, UDIF-MD5)を指定する。

$ hdiutil checksum -type MD5 hoge.dmg
...
計算済み MD5 $3399FA52CBF4BF2C14A4FB61F616DD5C

ディスクイメージがアタッチされたデバイスをマウントする

mountvol を使用し、デバイスとして接続されたディスクイメージの中のファイルシステムの存在するデバイス名を指定する。マウントされていないデバイスでなければならない。

$ hdiutil mountvol disk3s2
/dev/disk3s2            Apple_HFS                       /Volumes/hoge

ディスクイメージを CD/DVD に焼き込む

注: Windows 環境が手許にないため、以下の記述は参考程度に留めて置いて下さい。

burn を使用する。

ただ単に Mac などでのみ読めるメディアを作る場合は、単純にディスクイメージを指定すればよい。書き込むデバイスは -device で指定できる。-device に指定できるデバイス名は、hdiutil burn -list で確認すること。-device オプションを指定しなければ、システムで優先されるデバイスが焼き込みに用いられるデバイスとして自動的に選択される。

$ hdiutil burn hoge.dmg

しかしこれだと Windows では読み込めないそう。なので、まずハイブリッド形式(HFS + ISO)のメディアを作成する必要がある。

ハイブリッドなメディアを作るには、makehybrid を使用する。

# hoge というディレクトリ以下の内容を持つメディアを作成する場合
$ hdiutil makehybrid hoge -o hoge.iso

その後、burn にて焼き込む。

$ hdiutil burn hoge.iso

メディアの内容を消去する

例により -device でデバイスを選択できるが、指定されない場合は優先されるデバイスが自動的に選択される。

$ hdiutil burn -erase

--stub--

Last modified:2008/12/06 23:18:06

hSp

0.314454