ISO 9660 イメージファイルの作成(makefs,mkisofs)
【目次】
 
始めに
ディレクトリの内容から ISO 9660 形式のイメージファイル(.iso ファイル)を作成する. 作成したイメージファイルは,マウントして内容を確認できるほか, 光学メディアへの書き込み,仮想マシンへの接続などに利用できる.
ISO 9660 は,ファイル名の文字種や長さに制限があり, そのままでは
Makefile
makefile
のように大文字・小文字だけが異なるファイルが区別されない. UNIX 系 OS のファイル名,パーミッション,シンボリックリンクをそのまま保持するには, Rock Ridge 拡張を有効にする.
 
ISO 9660 のイメージを作る
makefs を使う方法(FreeBSD の基本システム)
FreeBSD の基本システムには makefs が含まれており,追加のソフトウェアなしで ISO 9660 イメージを作成できる. image-dir 以下のディレクトリを image.iso というイメージファイルにするには,次のコマンドを実行する.
# makefs -t cd9660 -o rockridge,label=MYDATA image.iso image-dir
-o で指定できる主な cd9660 用オプションを示す.
- rockridge
- Rock Ridge 拡張を有効にする.長いファイル名,UNIX のパーミッション, シンボリックリンクを保持する場合に指定する.
- label=name
- ボリュームラベルを指定する.
- isolevel=1|2
- ISO 9660 の交換レベルを指定する.レベル 2 では 31 文字までのファイル名が使える.
- allow-deep-trees
- ISO 9660 の規定を超える深さのディレクトリ構造を許可する.
- allow-multidot
- ファイル名中に複数のピリオドを含むことを許可する.
- omit-trailing-period
- ファイル名末尾のピリオドを付けない.
- publisher=name,applicationid=name
- 発行者 ID,アプリケーション ID を指定する.
mkisofs を使う方法
mkisofs は sysutils/cdrtools に含まれる.次のコマンドを実行してインストールする.
# pkg install cdrtools
image-dir 以下のディレクトリを image.iso というイメージファイルとして作成するには, 次のコマンドを実行する.
% mkisofs -R -a -d -l -N -o image.iso image-dir
主なオプションを示す.
必須のもの
- -o image.iso
- イメージを書き出すファイルを指定する.拡張子には ".iso" を使う.
- image-dir
- ここで指定したディレクトリの中身を ISO 9660 イメージに変換する.
- -a
- '~' や '#' を含むファイル(通常これらはバックアップファイルとみなされる) もイメージに入れる.
- -R
- Rock Ridge 拡張(SUSP レコードと RR レコード)を付加する.
これにより,長いファイル名,所有者,パーミッション,シンボリックリンクが保持される.
UNIX 系 OS で読むイメージを作る場合は,-R か次の -r のどちらかを指定する. - -r
- -R と同じく Rock Ridge 拡張を付加するが,次の点が異なる.
- ファイルの uid と gid を 0 にする.
- ファイルの read bit をすべてセットする.
- 実行属性がついているファイルは,user, group, others すべてに実行属性をつける.
- ファイルの write bit をすべてクリアする.
- -T
- TRANS.TBL というファイルを各ディレクトリに作る. このファイルはファイル名の対応表で,Rock Ridge 形式を扱えないシステムで ディスクを読む際の参照用である.
- -d
- 通常 '.' を含まないファイルの末尾には '.' が付くが,これを付けないようにする.
- -D
- ISO 9660 では通常サブディレクトリは 8 段階までしか許されないため それ以上深いディレクトリは再配置されるが,これを行わずに ディレクトリをそのままの位置に配置する.
- -l
- 31 文字までのファイル名を許可する(ISO 9660 level 2).
- -N
- ISO 9660 のバージョンナンバーを省く.
- -allow-leading-dots
- '.' で始まるファイル名を許す.
- -A application_id
- アプリケーション ID を指定する.
- -V volume_id
- ボリュームラベルを指定する.
- -f
- ファイルシステムを作る時に,シンボリックリンクをファイルの実体に 置き換える.Rock Ridge 拡張が使えないシステム向けの指定である.
xorrisofs を使う方法
xorriso は mkisofs 互換のコマンド xorrisofs を提供する. 次のコマンドを実行してインストールする.
# pkg install xorriso
image-dir 以下のディレクトリを image.iso というイメージファイルとして作成するには, 次のコマンドを実行する.
% xorrisofs -R -o image.iso image-dir
既存のデータ CD から複製する場合
データ CD の内容をそのままイメージファイルにする場合は,次のコマンドを実行する.
# dd if=/dev/cd0 of=image.iso bs=2048
/dev/cd0 は光学ドライブのデバイス名であり,環境によって異なる. この方法が使えるのは,ISO 9660 などのデータトラックを持つディスクである. 音楽 CD の取り込みには sysutils/cdrtools に含まれる cdda2wav などを使う.
 
出来たイメージの確認
イメージファイルをファイルシステムとしてマウントし,内容を確認できる.
- FreeBSD の場合
-
次のコマンドを実行して,イメージファイルをメモリディスクに割り当てる.
# mdconfig -a -t vnode -f image.iso割り当てられたデバイス名(md0 など)が表示される. 次のコマンドを実行してマウントする.
# mount -t cd9660 /dev/md0 /mnt確認が終わったら,次のコマンドを実行してアンマウントし,メモリディスクを解放する.
# umount /mnt
# mdconfig -d -u 0 - Linux の場合
次のコマンドを実行してマウントする.
# mount -t iso9660 -o loop image.iso /mnt確認が終わったら,次のコマンドを実行してアンマウントする.
# umount /mnt
マウント後は,通常の CD をマウントした場合と同様にイメージファイルの中身を参照できる. ファイル名,ディレクトリ構造,パーミッションを確認する.
 
光学メディアへの書き込み
CD-R への書き込みには,sysutils/cdrtools に含まれる cdrecord を使う. 次のコマンドを実行してインストールする.
# pkg install cdrtools
次のコマンドを実行して,イメージファイルを書き込む.
# cdrecord dev=/dev/cd0 image.iso
DVD へ書き込む場合は,sysutils/dvd+rw-tools に含まれる growisofs を使う. 次のコマンドを実行してインストールする.
# pkg install dvd+rw-tools
次のコマンドを実行して,イメージファイルを書き込む.
# growisofs -dvd-compat -Z /dev/cd0=image.iso
/dev/cd0 は光学ドライブのデバイス名であり,環境によって異なる.