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=nameapplicationid=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 形式を扱えないシステムで ディスクを読む際の参照用である.
指定すると ISO 9660 の規定から外れるが,通常問題のないもの
-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 は光学ドライブのデバイス名であり,環境によって異なる.