はじめに
========

この文書には以下の項目が含まれています。

  * 円盤複写屋とは?
  * 機能/特徴
  * ネットワーク機能について
  * ISO9660外側記録について
  * フォルダからのISOイメージについて
  * コンソール版について
  * コマンドライン引数について
  * Win32版に必要なもの
  * Win32版インストール方法
  * Win32版ビルド方法
  * Win32(gtk)版に必要なもの
  * Win32(gtk)版インストール方法
  * Win32(gtk)版ビルド方法
  * Linux版インストール方法
  * Linux版を使用する為には
  * Linux版ビルド方法
  * MacOSX版インストール方法
  * MacOSX版ビルド方法
  * プラットフォーム別の制限事項・注意点
  * ライセンス


円盤複写屋とは?
===============

CD/DVD のディスクを複写するソフトウェアです。
Win32版とLinux版とMacOSX版があります。
Win32版は Windows98/2000/XP で動作します。それ以外の Windows では
おそらく動作しません。
Linux版は gtk を使用しています。
MacOSX版は Cocoa を使用しています。
また、gtk を使用した Windows 版も(まだ暫定的ですが)あります。


機能/特徴
=========

・CD-R/RW : 複数セッション、セッション内複数トラックに対応。
・CD-R/RW : パケット記録(FixedPacket/VariablePacket)対応。
・CD-R/RW : 未完了セッション、未完了トラックにも対応。
・CD-R/RW : 音楽トラック、データトラック(Mode1,Mode2XA1/2)対応。
・CD-R/RW : 元ディスク記録方式(Track-at-once/Session-at-once)を
            自動判別し、同じ記録方式で複写。
・CD-R/RW : CD-TEXT対応。
・DVD-R/-RW : Disc-at-once 対応。(オプション選択)
・DVD-R/-RW : 複数ボーダー対応(DVDレコーダで記録されたらこれ?)。
・DVD-R : ボーダー内複数Ｒゾーン対応。
・DVD+R : 複数セッション対応。
・DVD+RW : 単にベタッと記録するだけ。
・ALL : 実験的な複数台同時記録(ver1.13)
・ALL : ISOイメージ読取&書込(ver1.14)
・ALL : ネットワーク(TCP/IP)対応(ver1.15)
・ALL : あらゆるディスクを表現できる独自イメージ読込&書込(ver1.18)
・ALL : ISO9660をディスクの外側に書込(ver1.19)

のつもりで作っていますが、うまく動作しないかもしれません。
動作報告をお待ちしてます。

また、以下の制限がありますので注意してください。

・音楽トラックはその仕様から正確なタイミングでデータを読み出せないようで、
  複写を繰り返す度にデータが前方または後方にずれていく。
  (合わせこむ機能を実装していない。というか無理?)
・CSS解除機能は搭載してないので、市販の DVD-video は複写不可能。
・複数台同時記録する場合はバッファーアンダーラン防止機能必須。


ネットワーク機能について
========================

この機能はあくまでもLAN用です。
メーカー製等でドライブが１台しか搭載できないPCが複数台あり、それらがLAN
接続されていれば一応オンザフライ書き込みが出来る事を目的として作成して
います。それ以外の用途は想定していません。

サーバ側になるのは読取装置側、言い換えると、書込装置としてネットワークを
選択した場合です。
接続する時は先にサーバ側を開始して待機させてから、クライアント側を開始して
ください。


ISO9660外側記録について
=======================

1セッション1トラックのISO9660に準拠したディスクまたはISOイメージファイル
からの複写の場合で記録ディスクに十分な空き領域がある場合、ディスクの外側
に記録する事ができます。
第1セッションはダミーデータ(ALL 0)で埋めて、第2セッションとして複写内容を
記録します。

この機能を使うと、記録したディスクの読み取りが若干速くなります。
例えばディスクの約半分の容量(700MBのCDなら350MB)を外側に記録すると内側
(通常)に記録した場合に比べて、シーケンシャルアクセス時は約1.5倍高速になり
ます。ランダムアクセスはシーク幅が狭くはなりますが、速度的にはほとんど
変わりません。なぜなら、 CDやDVDはディスク書かれているアドレス情報を読ま
ないと現在位置が解らないので、目的のアドレスに到達するためには、
・ピックアップの大まかな移動
・アドレス情報を読みながら目的のアドレスより少し前に微調整
・ディスクの回転により目的のアドレスに到達するのを待つ
という事をしているからです(たぶん)。距離に応じて速くなるのは "大まかな移動"
だけです。それがシーク時間全体に対してどのくらいの割合を占めているのか解り
ませんが、試した感じでは特に違いが解りません。

つまり、シーケンシャルアクセスがよく行われるような巨大なファイルが記録され
るような場合しか効果はないかもしれません。
当然ですが、記録時間は長くなります。
現在はCDのみ対応しています。DVD系ディスクは外側記録できません。


フォルダからのISOイメージについて
===============================

読取装置で "フォルダからのISOイメージ(mkisofs)" を選ぶと、選択したフォルダから
mkisofsコマンドを使用してISOイメージを作成します。
通常は mkisofs の -J(Joliet) -r(RockRidge) のオプションが使われます。
VIDEO_TS フォルダが存在する場合はDVDビデオモードにするかどうかを尋ねられ、
DVDビデオのイメージを作成する事ができます。(mkisofs の -dvd-video オプション)
DVDビデオモードにした場合はフォルダ名がボリュームIDになります。このとき、
フォルダ名が日本語の場合はボリュームが文字化けする可能性があります。
Windows では Cygwin(http://www.cygwin.com/) の genisoimage.exe 及びそれに必要な
ライブラリ cygwin1.dll を同梱しています。


コンソール版について
====================

Linux版のみですが、コンソール画面で対話形式で動作する cEnbanFukusyaYa が
同梱されています。(ver 1.19.4以降)
おそらくほとんど誰も使わないと思うので詳しい説明は省略します。
一応、動作指定のほとんどをコマンドラインから行うことができ、--batch オプション
で非対話モード動作できるようにしています。
オプションの指定方法については cEnbanFukusyaYa --help で参照してください。


コマンドライン引数について
==========================

コンソール版以外でも次のようにコマンドライン引数を指定する事ができます。

  第一引数 : 読取側のイメージファイル名(*.iso または *.emg)
  第二引数 : 書込側のイメージファイル名(*.iso または *.emg)

例) C:\foo.iso を何らかのメディアに書き込みたい場合
  EnbanFukusyaYa.exe C:\foo.iso
例) C:\foo.iso を D:\bar.emg に書き込みたい場合
  EnbanFukusyaYa.exe C:\foo.iso D:\bar.emg

※ 現在は Win32 版のみ指定可能です。


Win32版に必要なもの
===================

Windows98 ではドライブアクセスに wnaspi32.dll を使用します。
Windows2000/XP では wnaspi32.dll は使用しません。(V1.9から)
しかし、Windows2000/XP でも起動時に -aspi オプションを指定すると
wnaspi32.dll を使用する事ができます。
Windows2000/XP 用の wnaspi32.dll は nero のサイトなどからダウンロードして
きてください。
  http://www.nero.com/en/631940733573829.html
adaptec の wnaspi32.dll ではドライブ認識されない場合があるようなので、
こちらの方が良いと思います。

また、ドライブにアクセスするにはアクセス権が必要です。
一般ユーザ等でも使えるようにする為には、管理者権限で管理ツールのローカル
セキュリティポリシーを起動し、セキュリティオプションを変更してください。


Win32版インストール方法
=======================

Inno setup で作成されたインストーラをダウンロードした方はインストーラを
起動し、画面の指示に従ってインストールしてください。
zip圧縮版の場合は好きな場所(C:\Program Files\enbanfukusyaya 等)に解凍し、
お好みでスタートメニューやデスクトップにショートカットを作成してください。


Win32版ビルド方法
=================

1. ソースファイルを置くディレクトリを準備します。(例: C:\src)

2. 円盤複写屋ソースファイルをそこに解凍します。

3. KgThemeソースファイルも同じ場所に解凍します。

4. Adaptec ASPI ドライバーをダウンロードします。
   http://www.adaptec.co.jp/support/download/soft/aspi_471.html
   但し、これは円盤複写屋をビルドする為だけに使用します。
   Windows2000/XP では何故か上手く動作しない事が多い為、
   DLLのインストールはお勧めしません。

5. ダウンロードした aspi_v471.exe を実行し、どこかに解凍します。

6. 解凍したディレクトリの include ディレクトリ以下のファイルを
   円盤複写屋の Win32\WinAspi\adaptec ディレクトリにコピーします。

7. 以下のような構成になっている事を確認します。
   C:\src\
       +-- KgTheme\           (KgThemeソースツリー)
       +-- EnbanFukusya\      (円盤複写屋ソースツリー)
             +-- DriveAccess\
             +-- Win32\
                   +-- res\
                   +-- WinAspi\
                         +-- adaptec\
                               + *.h *.inc (6.でコピーしたファイル群)

8. 円盤複写屋の Win32\EnbanFukusya.dsw を VisualStudio で開いて
   ビルドを実行して下さい。


Win32(gtk)版に必要なもの
========================

もう一つのWindows版は、GTK2 を使用したものです。
Glade for Windows(http://gladewin32.sourceforge.net/)から
Gtk+/Win32 Runtime Environment Installer をダウンロードしてインストール
してください。
ビルドしたい場合は Gtk+/Win32 Development Environment Installer を
ダウンロードしてインストールしてください。


Win32(gtk)版インストール方法
============================

gtkを使っていない Win32 版と同様に、インストーラの場合はそれを起動し、
zip圧縮の場合はお好きな場所に解凍してください。

theme/gtkrc を編集することでテーマを変える事ができます。
towadakoテーマに変更するには、次のように編集します。
  #include "default\\gtkrc"
  include "towadako\\gtkrc"
もし、他の GTK2 アプリケーションと同じテーマを使用したい場合は、
  include "C:\\home\\.gtkrc-2.0"
というように、環境変数 HOME にある gtkrc を include するようにしてください。
GTK用のテーマは http://gtk.themes.org/ などからダウンロードできるようです。


Win32(gtk)版ビルド方法
======================

開発環境として MinGW または Cygwin が必要です。
(私は Cygwin に含まれる MinGW でしかコンパイルしていません。)
また、GTK2 開発者向けパッケージと、Adaptec ASPI ドライバが必要です。

MinGW : http://www.mingw.org/
Cygwin : http://www.cygwin.com/
GTK2 : http://gladewin32.sourceforge.net/
ASPIドライバ : http://www.adaptec.co.jp/support/download/soft/aspi_471.html

必要なものが揃ったら円盤複写屋ソースファイルを解凍してください。
Win32-gtk/Makefile をエディタで開き、GTKHOME に GTK2 インストール先を
設定してください。

例) Cygwin の場合 : GTKHOME = /cygdrive/c/GTK
    MinGW の場合 : GTKHOME = /c/GTK

MinGW または Cygwin のシェルウィンドウを開き、
$ cd Win32-gtk
$ make depend && make
を実行してください。
その後、
$ make dist
を実行すると Win32-gtk/dist/ に配布イメージでファイルが作成されます。


Linux版インストール方法
=======================

VineLinux 2.6(i386)をお使いの場合は、バイナリパッケージをインストール
できます。
  例) rpm -ivh EnbanFukusyaYa-*.i386.rpm

その他の RedHat系Linux では、src.rpm をリビルドした後インストールして
ください。(%は一般ユーザのプロンプト、#はrootのプロンプトとして表現
しています。)
  例)
    % rpm --rebuild EnbanFukusyaYa-*.src.rpm
    # rpm -ivh ~/redhat/RPMS/*/EnbanFukusyaYa-*.rpm

それ以外の(非RedHat系)Linuxでは、手作業でコンパイル&インストールして
ください。
  例)
    % tar zxf EnbanFukusyaYa-*-src.tar.gz
    % cd EnbanFukusyaYa-*
    % cd Linux ; sh to_euc.sh
    % cd src ; make
    # make install


Linux版を使用する為には
=======================

使用するユーザに対してデバイスの書込み権限を与える必要があります。

最も簡単な方法は、該当デバイスファイルのモードを 0666 にする事です。
  例1) ATAPI(Secondary/Master)接続の場合
    # chmod 666 /dev/hdc
  例2) SCSI(1台目)接続の場合
    # chmod 666 /dev/scd0

UNIX的に解決するには、書込み可能なグループを作り、そのグループの一員と
するのが良いと思います。
  例) cdwrite グループに権限を与え、taro ユーザが使えるようにする場合
    # groupadd cdwrite
    # chgrp cdwrite /dev/hdc
    # chmod 664 /dev/hdc
    # usermod -G cdwrite taro

次のようにして、ログインしたユーザに権限を与えるのも１つの方法だと思います。
  例) wdm を使用している場合
    # cat "chown \$USER /dev/hdc" >> /etc/X11/wdm/GiveConsole
    # cat "chown root /dev/hdc" >> /etc/X11/wdm/TakeConsole


Linux版ビルド方法
=================

1. ソースファイルを展開します。
  (例) tar zxf EnbanFukusya-*-src.tar.gz

2. サブディレクトリ Linux に入ります。
  (例) cd EnbanFukusya-*/Linux

3. to_euc.sh を使って共通ソースファイルを euc-jp に変換します。
  (例) ./to_euc.sh

4. src ディレクトリに入り、make を実行します。
  (例) cd src; make


MacOSX版インストール方法
========================

MacOSX版の配布ファイルはdmgですので、ダブルクリック操作等でマウント
してください。
マウント後にEnbanFukusyaYa.appフォルダをお好きな場所(アプリケーション
フォルダ等)にコピーしてください。


MacOSX版ビルド方法
==================

ソースファイルを展開すると Xcode 用のプロジェクトファイルがあるので
それを Xcode で開きます。
後は、Xcode の通常のビルド方法でビルドできます。


プラットフォーム別の制限事項・注意点
====================================

・MacOSXでは円盤複写屋起動後にディスクを入れる!
  OS標準設定では CD/DVD メディアを挿入すると、OS がすかさずマウント
  します。円盤複写屋には OS がマウントしたものを自動的に解除する
  ような機能は搭載していません。そして、ドライブへの排他的アクセス権
  の取得に失敗し、ドライブが見えないという現象が発生します。
  そのような場合はメディアを一度イジェクトし、円盤複写屋を起動してから
  メディアの挿入を行ってください。
  Ver1.16以降はメディア挿入済でも円盤複写屋を起動しても大丈夫です。
  但し、開始前にはイジェクトしておく必要があります。


ライセンス
==========

GPLv2に準ずるものとします。
付属の COPYING を確認してください。

--
Kagetani Hideto <banana@mxh.mesh.ne.jp>
