[CentOS]ディレクトリ以下をISOイメージにする

LinuxでISOイメージを作るにはmkisofsコマンドを使います

mkisofsコマンドのインストール

mkisofsコマンドはcdwパッケージに含まれている様です

$ yum search mkisofs
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
===== Matched: mkisofs =====
cdw.x86_64 : Front-end for tools used for burning data CD/DVD
libnatspec.i686 : Library for national and language-specific issues
libnatspec.x86_64 : Library for national and language-specific issues

mkisofsコマンドがない場合、rootにて以下の様にしてインストールします

# yum install cdw
パッケージ “cdw” は、EPELリポジトリにありますので、yumでEPELリポジトリが使える様にする必要があります

実際にISOにしてみる

では、~/data/以下をISOファイルにしてみます
~/data/は以下の様になっています

$ cd ~
$ tree ./data/
./data/
├── a.txt
└── b.txt

このディレクトリをdata.isoというISO形式にファイルにするには以下の様に実行します

$ mkisofs -R -d -l -N -L -o ./data.iso ./data
Warning: creating filesystem that does not conform to ISO-9660.
I: -input-charset not specified, using utf-8 (detected in locale settings)
Total translation table size: 0
Total rockridge attributes bytes: 323
Total directory bytes: 470
Path table size(bytes): 10
Max brk space used 0
177 extents written (0 MB)

これで、~/data.isoが作成されました
正しく作成されているかどうか、マウントして確認してみます
マウントポイント/mediaにdata.isoをマウントしてみます
rootにて以下を実行します

# mount -o loop -t iso9660 data.iso /media

ISOにしたディレクトリ(~/data/)以下と同じ構造か確認してみましょう

# tree /media/
/media/
├── a.txt
└── b.txt

同じですね。OKっぽいのでunmountしましょう

# umount /media

mkisofsのオプション説明など

上記の例だと、mkisofsを実行する際に「-R -d -l -N -L -o」となんだかいくつもパラメータを指定しています
代表的なパラメータについて少しまとめてみます

# mkisofs --help

ってすると、ものすごい数のオプションがでてきてゲッソリします
なので、先程ISOを作るときに指定したオプション等を中心に表でまとめてみます

-R

ISO9660 ファイルシステムのファイルを詳細に説明するために Rock Ridge プロトコルを使用して SUSP 及び RR レコードを生成する

→なんだかよくわかりませんが、”-r” オプションの説明をみるとなんとなく理解できそう

-r

これは -R オプションに似ているが、ファイルの所有とモードがより便利な 値に設定される。UID と GID は通常作者のシステムでのみ有用で、クライアントでは有用でないため 0 にセットされる。すべての読み込みビットは true でファイルとディレクトリはクライアントで全体的に読み込み可能になる。も しいかなる実行ビットがファイルに設定されていたら、実行ビットのすべてが設定され、クライアントで実行可能ファイルは全体的に実行可能になる。もし いかなる検索ビットがディレクトリにセットされていれば、検索ビットのすべてを設定し、ディレクトリは全体的にクライアントで検索可能になる。すべての書き込みビットは、CD-ROM はすべての場合において読み込み専用でマウントされるため、消去される。もしいかなる特殊モードのビットが設定されていれば、読み込み専用のファイルシステム上でのファイルロックは有用ではなく、set-id ビットは UID 0 または GID 0 では望ましくないため、消去する。

→うーん。なんか全ファイル読めるようにするってことかしら

-d

ピリオドを持たないファイルに後続するピリオドをファイルから省く (訳注: たとえば ファイル名 “hogehoge.” の最後の “.” など)。これは ISO9660 標準に違反しているが、ほとんどのシステムで働く。注意して使用すること。

-l

30文字のファイル名を許す。通常 ISO9660 ファイル名は ISO9660 標準が 30文字までのファイル名を認めていても MS-DOS 互換の 8.3 フォーマットになる。このオプションを使用すれば、ディスクは MS-DOS で使用するのが困難に なるが、その他のシステム (Amiga のような) で使いやすくなる。注意して使用すること。

-N

ISO9660 ファイル名のバージョン番号を省略する。これは ISO9660 標準に 違反するが、このバージョン番号を本当に使っているシステムはない。 注意して使用すること。

-L

ISO9660 のファイル名をピリオドで始めることを許す。通常、先頭のドットは MS-DOS との互換性を維持するためにアンダースコアに変換される。

-o filename

書き込まれる ISO9660 ファイルシステムイメージのファイル名である。 これはディスクファイルやテープドライブまたは直接一致する光学ディスク書き込み機のデバイス名でもかまわない。もし指定されなければ、標準出力が使用される。出力は通常のディスクドライブの特殊ブロックデバイスでも構わないが、この場合にはディスクパーティションはマウント可能で、プリマスタリングが正常に終了したかを確証していなければならないことに注意するように。