CDRECORD(1) | Schily´s USER COMMANDS | CDRECORD(1) |
名前
cdrecord -マスタからオーディオ CD やデータ CD を記録する書式
cdrecord [ general options ] dev= device [ track options ] track1... trackn説明
cdrecord は Orange Book CD-Recorder でデータ CD やオーディオ CD を記録するために使う。device は CD レコーダの scsibus/ target/ lun を指す。 SunOS での通信は汎用 SCSI ドライバ scg を用いて行われる。他の OS では、このドライバをシミュレートするライブラリを使う。使用可能な書式は、 dev= scsibus, target, lun または dev= target, lun である。後者の場合、CD-R はマシンのデフォルトの SCSI バスに接続されていなければならない。 scsibus, target, lun は整数である。 OS や SCSI 転送の実装のなかには、これに加えてデバイスファイル名を指定しなければならないものもある。この場合の正しい書式は、 dev= devicename: scsibus, target, lun または dev= devicename: target, lun である。このようなシステムでは、指定されたデバイスノード名が 1 つの SCSI デバイスのみを参照している場合、 dev= devicename: scsibus, target, lun の代わりに、省略形の dev= devicename: @ または dev= devicename: @, lun を使うことができる。
リモートの SCSI デバイスにアクセスするためには、リモートのデバイスであることを示すインジケータを SCSI デバイス名の前に付ける必要がある。リモートデバイスのインジケータは REMOTE:user@host: または REMOTE:host: という形式である。
指定可能なリモート SCSI デバイス名は、 REMOTE:user@host: または REMOTE:user@host:1,0,0 という形式である。 1 つ目の形式では、リモートで SCSI デバイスのスキャンを行わせる。 2 つ目の形式では、 host の SCSI bus # 1,target 0 lun 0 に接続されている SCSI デバイスにアクセスする。
cdrecord を全ての UNIX 系プラットフォームで汎用的にするためには、 dev= devicename: scsibus, target, lun という書式が好ましい。これによりデバイスについての各 OS 特有の知識をユーザーに対して隠蔽することができる。またこれにより、実際のデバイスファイル名や scsibus, target, lun を指定する方法を、特定の OS 上でサポートする必要がなくなる。
scsibus 0 はマシンのデフォルトの SCSI バスである。マシンの SCSI 設定についてのより詳細な情報は、ブート時のメッセージや /var/adm/messages を参照すること。 scsibus, target, lun にどのような値を指定してよいか分らない場合は、以下に記述されている cdrecord の -scanbus オプションを使ってみること。
ファイル /etc/default/cdrecord が存在する場合、 dev= のパラメータはこのファイル中のドライブ名ラベルにもなる (「ファイル」セクションを参照)。
SVr4 互換のシステムでは、 cdrecord はリアルタイムクラスを使い、可能な限りスケジューリング優先度を高くする (全てのカーネルプロセスより優先度を高くする)。 POSIX リアルタイムスケジューリング を備えたシステムでも、 cdrecord はリアルタイムスケジューリングを使う。ただし、カーネルプロセスより高い優先度は得られない。
Track At Once モードでは、各 track はそのトラックのデータが書かれた個別のファイルに対応する。引き数が ` -' の場合は標準入力がトラックとして使われる。この場合は stdin (標準入力) から 1 つのトラックだけが読み込まれる。
一般的なオプション
一般オプションはトラックファイル名やトラックオプションより前に指定しなければならない。- -version
- バージョン情報を表示して、終了する。
- -v
- 一般的な表示の詳細度を 1 つ上げる。例えば、書き込み処理の進捗状況を表示するために使われる。
- -V
- SCSI コマンド転送に関する表示の詳細度を 1 つ上げる。 CD レコーダにおける書き込み処理での問題をデバックするのに役立つ。簡単なエラーメッセージしか表示されない場合は、このフラグを使って詳細な表示を行わせることができる。 -VV を指定すると、データバッファの内容も表示される。 -V や -VV を使うと、処理が遅くなりバッファアンダーランの原因になるかもしれない。
- debug= #, -d
- (debug=# を使って) その他のデバッグレベルを # に設定する。または (-d を使って) デバッグレベルを 1 つ上げる。 -dd を指定した場合、 debug= 2 と等しくなる。 libscg でドライバをオープンする際の問題や、セクタサイズとセクタタイプの問題を発見するのに役立つ。 -debug を使うと、処理が遅くなりバッファアンダーランの原因になるかもしれない。
- kdebug=#, kd=#
- scg ドライバに対して、SCSI コマンドを動作させているときのカーネルデバッグレベルを変更させる。
- -silent, -s
- SCSI コマンドが失敗したときの状況報告を表示させない。
- -force
- エラーが起こった場合でも処理を続行させる。このオプションは、壊れた CD-RW ディスクを空にできるように、いくつかのトリックを使って実装している。
- -dummy
- 記録プロセスの全ての段階を CD レコーダに行わせるが、処理中にレーザーをオフにしておく。システムにおけるタイミングと負荷がかかった場合の応答が不明な場合は、実際に CD に書き込む前に何回かテストしておくことを薦める。
- -dao
- Disk At Once モードに設定する。今のところ、non raw Session At Once モードをサポートしている MMC ドライブでしか動作しない。
- -multi
- マルチセッション CD の作成を可能にする。メディアの最後のセッションを作成するのでなければ、マルチセションディスクの全てのセッションについて、このオプションを指定する必要がある。 CD レコーダが後でセッションを追加できるように修正を行う。次のプログラム領域へのリンクを含んだ TOC が作成される。ここで作成されたメディアは、 (CDplus 以外の) 製品版 CD とは 100% 互換ではない。マルチセッション CD の記録だけに使用すること。このオプションを指定した場合、デフォルトのトラックタイプは CD-ROM XA mode 2 である。 Sony 製のドライブはハードウェアが CD-ROM XA mode 2 に対応していない。このようなドライブでマルチセッションのディスクを作成するためには、 -data オプションを指定しなければならない。 cdrecord はデータセクタをオーディオセクタに変換するコーダーを備えていないので、マルチセッションディスクを DAO/SAO モードで記録したい場合は、 -data オプションをつけて CD-ROM セクタをマルチセッションにしなければならない。全てのドライブがマルチセッション CD の DAO/SAO モードに対応している訳ではない。
- -msinfo
-
mkisofs-1.10 以降に適した形式のマルチセッション情報を取得する。
- -toc
- CD の table of content (内容一覧) または PMA を取得して表示する。このオプションを使うと、 cdrecord は CD-R ドライブと CD-ROM ドライブで動作する。
- -atip
-
CD-R メディアや CD-RW メディアの ATIP (absolute Time in Pregroove) 情報を取得して表示する。このオプションを使うと、
cdrecord は ATIP 情報を取得する。ドライブが ATIP 情報の読み取りに対応していない場合、記録されている情報の一部もしくは何も表示されない。 ATIP 情報の読み取りは、 MMC 互換のわずかなドライブでしかサポートされていない。
- -fix
- ディスクの固定 (fixated) のみを行う (つまり、CD-R の TOC が書き込まれる)。何らかの理由により、ディスクには書かれたが固定が行われなかった場合に、このオプションを使うことができる。現在のところ、このオプションは昔の TEAC 製ドライブ (CD-R50S と CD-R55S) では動作しない。
- -nofix
- トラックを書き込んだ後にディスクを固定しない。このオプションはオーディオディスクを段階的に作成するために使用できる。固定していないディスクは、一般には CD を記録するドライブ以外では使えないが、このようなディスクを再生できるオーディオ CD プレーヤもある。
- -waiti
- SCSI ドライバをオープンする前に、標準入力からの入力が可能になるのを待つ。このオプションを使うと cdrecord がマルチセッションディスクに追加セッションを書き込んでいる間でも、パイプからの入力を読み取ることができるようになる。マルチセッションディスクに追加セッションを書き込んでいる場合、 mkisofs は出力を書き出す前に前のセッションを読み込む必要がある。標準入力からの入力が可能になるのと同時に、 cdrecord が SCSI ドライバをオープンする場合は、このオプションを使用できない。
- -load
- メディアをロードして終了する。このオプションはトレーのロード機構があるドライブでしか動作しないが、 Kodak のディスクトランスポータを使う場合にも便利である。
- -eject
- 動作後にディスクを取り出す。 (Philips などの) いつかのデバイスでは、新しいディスクを作成する前にメディアを取り出す必要がある。これらのデバイスでは、-dummy テストをした直後に実際のディスクを作成できない。
- speed=#
- 書き込みプロセスの速度ファクタを # にする。 # はオーディオ速度の何倍の速さにするかを表す整数である。オーディオ速度は CD-ROM では約 150 KB/s、 CD-Audio では約 172 KB/s である。 speed オプションを指定しない場合、 cdrecord は環境変数 CDR_SPEED から速度を取得する。 speed=2 または speed=4 で問題がある場合、 speed=0 を試してみること。
- blank= type
- CD-RW を空 (blank) にして終了する。または、書き込む前に CD-RW を空にする。空にする方法は以下のいずれかである。
- help
- 空にする方法の一覧を表示する。
- all
- ディスク全体を空にする。長い時間がかかる。
- fast
- 最小限の手間でディスクを空にする。 PMA, TOC, pregap を消去する。
- track
- トラックを空にする。
- unreserve
- 予約済みトラックの予約を解除する。
- trtail
- トラックの末尾を空にする。
- unclose
- 最後のセッションを閉じない。
- session
- 最後のセッションを空にする。
- fs=#
-
fifo (リングバッファ) サイズを # にする。このオプションは
dd(1),
sdd(1),
star(1) のものと同じ方法で使うことができる。他の単位が指定されない限り、サイズはバイト数であるとする。数字の直後に `b', `k', `m', `s', `f' を付けることができる。それぞれサイズが 512, 1024, 1024*1024, 2048, 2352 倍であることを表す。 `x' や `*' で区切ってサイズを指定した場合、2 つの数の掛け算が行われる。よって、
fs=10x63k は fifo のサイズを 630 kB に指定したことになる。
- dev= target
-
CD レコーダの SCSI target を設定する。上記を参照。一般的なデバイス指定では
dev=
6,0 である。数値での target 指定の他に、ファイル名も指定しなければならない場合、そのファイル名は実装依存である。この場合の正確なファイル名は、対象とする OS の独自のマニュアルに書かれているだろう。
CAM をサポートしてない
FreeBSD システムでは、 (
/dev/rcd0.ctl などの) 制御デバイスを使う必要がある。この場合の正確なデバイス指定は、
dev=
/dev/rcd0.ctl:@ である。
- timeout= #
- SCSI コマンドのデフォルトのタイムアウトを # 秒にする。 SCSI コマンドのデフォルトのタイムアウトは、 SCSI コマンドを送る際の最短タイムアウトとして使われる。 SCSI コマンドがタイムアウトにより失敗した場合、タイムアウトの値を失敗したコマンドのデフォルトのタイムアウトより長くすることができる。タイムアウトを長くしてコマンドが正常に動作した場合は、成功したときのタイムアウト時間とそのコマンドを、このプログラムの著者に知らせて下さい。 timeout オプションが指定されない場合、デフォルトのタイムアウト 40 秒が使われる。
- driver= name
-
このオプションを指定すると、デバイスに対してユーザーが指定したドライバ名を使える。使用可能なドライバのリストを取得するには、
driver=help を使うこと。このオプションは存在するのは、サポートされているドライブに似ているが、
cdrecord が直接検出できないドライブで
cdrecord を使うことができるようにするためである。このオプションは細心の注意を払って使用すること。デバイスに合わないドライバを使うと、ディスクを使えなくしてしまう可能性が高くなる。合わないドライバを使った場合、最も良くても
-speed または
-dummy が動作しない。
- driveropts= option list
- ドライバ特有のオプションを設定する。オプションはコンマで区切ったリストで指定する。使用可能なオプションのリストを取得するには、 driveropts= help を -checkdrive オプションと一緒に指定すること。現在のところ、 burnproof オプションのみが実装されている。これは Sanyo BURN-Proof 技術を使っているドライブで、バッファアンダーラン検証書き込み (Buffer Underrun Proof writing) に対応するためのものである。
- -checkdrive
- 現在のドライブに対応したドライバが存在するかをチェックして、終了する。ドライブが既知のものであれば、 cdrecord は終了コード 0 で終了する。
- -prcap
- SCSI-3/mmc 互換ドライブでモードページを 0x2A としたときに取得できるドライブの機能を表示する。 kB のマークがあるものは、1000 バイトを kilo-byte とする。また KB のマークがあるものは、1024 バイトを Kilo-byte とする。
- -inq
- ドライブから情報の取得 (inqurity) を行い、取得された情報を表示して、終了する。
- -scanbus
- 全ての SCSI バス上のドライブをスキャンし、取得できた文字列を表示する。このオプションは、システム上の CD レコーダの SCSI アドレスを知るために使われる。ラベルに使われる数字は bus * 100 + target で計算される。
- -reset
- CD レコーダのある SCSI バスをリセットする。このオプションは全ての OS 上で動作するわけではない。
- -ignsize
- メディアの既知のサイズを無視する。このオプションは特に注意して使うべきである。このオプションはデバッグのためだけに存在するので、他の目的に使用してはならない。通常の容量以上にディスクに書き込む必要はない。
- -useinfo
- audio オプションを上書きするのに *.inf ファイルを使う。このオプションを使うと、*.inf ファイルからプレギャップサイズ情報を読み込む。 *.inf ファイルは 1 トラック毎のオーディオデータが書かれたファイルと関連づけられる。
- defpregap=#
-
第 1 トラック以外の全てのトラックのデフォルトのプレギャップサイズを設定する。このオプションは現在のところ、 track-at-once ディスクを作成する際に各トラックの先頭に 2 秒の無音領域がない場合には、 TEAC ドライブでしか機能しない。
- -packet
- packet writing mode に設定する。これは実験的なインターフェースである。
- pktsize=#
- パケットサイズを # に設定し、修正パケットモードを使わせる。これは実験的なインターフェースである。
- -noclose
- 現在のトラックを閉じない。パケット書き込みモードでのみ役立つ。これは実験的なインターフェースである。
- mcn=med_cat_nr
-
CD の
メディアカタログ番号 (Media Catalog Number) を
med_cat_nr に設定する。
トラックオプション
トラックオプションはトラックファイル名と合わせて指定する。- isrc=ISRC_number
- 次のトラックの 国際標準録音資料コード (International Standard Recording Code) を ISRC_number にする。
- index= list
- 次のトラックのインデックスリストを設定する。インデックスリストは、コンマで区切られた数値のリストで、インデックスは 1 から始める。このリストの最初のエントリには 0 が書かれていなければならない。以降はこれより大きな数値が順番にリストされていなければならず、それぞれの数値は 1 単位を 1/75 秒として、インデックスの開始を表す。インデックスリストは以下のような形式である: 0,7500,15000 はインデックス 1 を開始トラックとし、インデックス 2 を開始トラックから 100 秒後、インデックス 3 を開始トラックから 200 秒後とする。
- -audio
-
このフラグが指定されると、以降の全てのトラックが (Red Book と同じ)
CD-DA オーディオフォーマットで書かれる。このトラック用のデータファイルは、ステレオ 16-bit デジタルオーディオデータで、サプリングレートは 1 秒あたり 44100 回にすべきである。バイトオーダーは、MSB left, LSB left, MSB right, LSB right, MSB left, ... というようにする。トラックは 2352 バイトの倍数にする。書き込みプロセスにおいて、データが 2352 バイトの倍数で読み込まれるので、オーディオトラックのマスタイメージを raw ディスクにおくことはできない。
- -data と -audio がどちらも指定されていない場合、 cdrecord は、ファイル名が .au または .wav で終るときは -audio をデフォルトとし、それ以外のときは -data をデフォルトとする。
- -swab
-
このフラグが指定されている場合、オーディオデータはバイトスワップ (リトルエンディアン) オーダーであると仮定する。 Yamaha, Sony, new SCSI-3/mmc などの CD ライタでは、オーディオデータがリトルエンディアンオーダーでなければならない。他の CD ライタでは、オーディオデータは SCSI プロトコルで使われるビッグエンディアン (ネットワーク) バイトオーダーなければならない。
cdrecord は、CD レコーダがビッグエンディアンのオーディオデータを必要とするのか、リトルエンディアンのオーディオデータを必要とするのかを認識して、データストリームのバイトオーダーをレコーダの必要にあったものに修正する。
-swab フラグが必要になるのは、データストリームが Intel (リトルエンディアン) バイトオーダーの場合のみである。
- -data
- このフラグが指定されている場合、これ以降の全てのトラックは CD-ROM mode 1 (Yellow Book) フォーマットで書き込まれる。データは 2048 バイトの倍数である。 The file with track data should contain an トラックデータのファイルは、 ISO-9660 または RockRidge ファイルシステムイメージでなければならない (詳細は mkisofs を参照すること)。トラックデータが ufs ファイルシステムイメージの場合、フラグメントサイズを 2 KB バイトに設定するれば、セクタサイズが 2 KB の CD ドライブを読み込みに使うことができる。
- 他のフラグが指定されていない場合、-data がデフォルトである。
- -data と -audio がどちらも指定されていない場合、 cdrecord は、ファイル名が .au または .wav で終るときは -audio をデフォルトとし、それ以外のときは -data をデフォルトとする。
- -mode2
- このフラグが指定されると、これ以降の全てのトラックは CD-ROM mode 2 フォーマットで書き込まれる。データは 2048 バイトの倍数である。
- -xa1
- このフラグが指定されると、これ以降の全てのトラックは CD-ROM XA mode 1 フォーマットで書き込まれる。データは 2048 バイトの倍数である。
- -xa2
- このフラグが指定されると、これ以降の全てのトラックは CD-ROM XA mode 2 フォーマットで書き込まれる。データは 2048 バイトの倍数である。
- -cdi
- このフラグが指定されると、これ以降の全てのトラックは CDI フォーマットで書き込まれる。データは 2048 バイトの倍数である。
- -isosize
- ISO-9660 ファイルシステムサイズを次のトラックのサイズとする。 raw ディスクパーティションまたはマスタ CD からトラックのイメージを読み込ませたい場合、このオプションが必要になる。 raw ディスクパーティションの場合は、 CD のサイズを ISO ファイルシステムのサイズに制限するために -isosize オプションが必要となる。マスタ CD の場合は、 track at once モードのときに CD レコーダに 2 つのランアウト (run out) ブロックを読み込ませないために、 -isosize オプションが必要になる。この 2 つのランアウトブロックは読み込むことができず、 defective コピーを引き起こすバッファアンダーランの原因になる。 cdrecord がトラックデータを stdin から読み込む場合には、このオプションを使ってはならない。今のところ-multi オプションが指定されている場合には、ファイルシステムのサイズを決定するために、このオプションを使うことはできない。
- -pad
-
データトラックの場合は、各データトラックの後ろにデータ 0 が 15 セクタ分追加される。この場合、
-pad オプションは
padsize= オプションによって上書きされる。ただし、このオプションは
padsize=15s の省略形のままである。
-pad がオーディオトラックを参照している場合、
cdrecord はオーディオデータが 2352 バイトの倍数になるようにデータを埋め込む。詰め込まれるオーディオデータはバイナリの 0 であり、全くの無音状態と等しい。
- padsize=#
- 次のトラックに詰め込まれるデータ 0 の数を # に設定する。 -pad オプションの動作とは反対に、新たなトラックでは padsize= の値が 0 にリセットされる。使用可能な引き数は fs= オプションを参照すること。 CD ドライブがトラックの最終セクタを読み込めない場合、または ISO-9660 ファイルシステムの先読みバグがある Linux システム上で CD を読み込ませたい場合は、このオプションを使うこと。空のファイルをトラックデータとして用いる場合、このオプションは全てを 0 で埋めたディスクを作成するために使われる。
- -nopad
- 以降のトラックに対して 0 の埋め込みを行わない-これがデフォルトである。
- -shorttrack
- これ以降のトラックで、Red Book トラック長基準を破っても構わないことにする。トラック長は最短でも 4 秒なければならない。このオプションは DAO モードで用いられた場合にのみ有効である。全てのドライブがこの機能に対応しているわけではない。ドライブは結果として得られる CUE シートを受け付けなければならない。
- -noshorttrack
- Red Book トラック長基準を再び守らせる。トラックは少なくとも 4 秒でなければならない。
- pregap=#
-
次のトラックのプレギャップサイズを設定する。このオプションは現在のところ、TEAC 製ドライブで各トラックの前に 2 秒間の無音を入れずに track-at-once ディスクを作成するときにしか動作しない。
- -preemp
- このフラグを指定すると、オーディオトラックの全ての TOC エントリは、オーディオデータが 50/15 μ秒のプレ・エンファシス (pre-emphasis) でサンプリングされているとする。ただし、このデータがファイルからディスクに移される際に変更されることはない。このオプションはデータトラックには何も影響しない。
- -nopreemp
- このフラグが指定されていると、これ以降のオーディオトラックの TOC エントリは、オーディオデータのマスタがリニアデータとして作成されているものとする-これがデフォルトである。
- tsize=#
-
次のトラックのマスタイメージが raw ディスクに格納されている場合、ディスク上の有効なデータ量を指定するために、このオプションを使うこと。次のトラックのイメージが通常のファイルとして格納されている場合、ファイルのサイズからそのトラックの長さを決定する。トラックに ISO 9660 ファイルシステムイメージがある場合は、ファイルシステムイメージの長さを決定するために
-isosize オプションを使うこと。
例
以下の例では、CD レコーダがマシンのプライマリ SCSI バスに接続されていると仮定している。 SCSI ターゲット ID は 2 に設定されている。ファイル cdimage.raw にあるデータを使って単純な CD-ROM を 2 倍速で記録する:
cdrecord -v speed=2 dev=2,0 cdimage.raw
Rock Ridge 拡張された ISO 9660 ファイルシステムのイメージを作成する:
mkisofs -R -o cdimage.raw /home/joerg/master/tree
Solaris で CD を書き込む前に上の結果のファイルを検査する:
mount -r -F fbk -o type=hsfs /dev/fbk0:cdimage.raw /mnt
Linux では:
mount cdimage.raw -r -t iso9660 -o loop /mnt
以下のように続ける:
ls -lR /mnt
umount /mnt
システム全体のスピードが充分で、ファイルシステムの構造がそれほど複雑でない場合、 cdrecord は ISO 9660 ファイルシステムのイメージを作成せずに実行できる。単純にパイプラインで実行すればよい:
mkisofs -R /master/tree | cdrecord -v fs=6m speed=2 dev=2,0 -
このパイプラインを実行するために推奨される最小の fifo サイズは 4 MB である。デフォルトの fifo サイズは 4 MB であるので、別の fifo サイズを指定したい場合以外は fs= オプションを指定する必要はない。システムに負荷がかかっている場合は、 mkisofs もリアルタイムクラスで実行すべきである。 mkisofs の優先度を上げるためには、コマンド
mkisofs -R /master/tree
を Solaris では
priocntl -e -c RT -p 59 mkisofs -R /master/tree
に、 UNIX International 互換のリアルタイムスケジューリングのないシステムでは
nice --18 mkisofs -R /master/tree
に変更する。
Solaris では cdrecord は優先度 59 で実行されるので、 mkisofs は優先度 58 以下で実行すべきである。他のシステムでは nice -18 以上で mkisofs で実行すべきである。
Sparcstation-2 で Yamaha CDR-400 を使ってディスク上にファイルシステムイメージを置かずに CD-ROM を作成するテストを行ってみたが、マシンに負荷がかかっていない場合でも 4 倍速では動作しなかった。より高速なマシンでは、負荷がかかった場合でも 4 倍速で動作できるだろう。
track01.cdaudio, track02.cdaudio, ... というファイルに各トラックのデータがある場合に、単純な CD-DA (オーディオ) を等速で記録するには:
cdrecord -v speed=1 dev=2,0 -audio track*.cdaudio
上の例が 2 倍速でできるかをチェックするためには、 dummy 書き込みオプションを使うこと:
cdrecord -v -dummy speed=2 dev=2,0 -audio track*.cdaudio
最初のトラックは ISO 9660 ファイルシステム cdimage.raw、それ以外は track01.cdaudio, track02.cdaudio, ... というオーディオトラック、というようなミックスモード CD を記録するには:
cdrecord -v -dummy dev=2,0 cdimage.raw -audio track*.cdaudio
書き込みを始める前にトラックのサイズを知らせる必要があるドライブを操作するには、最初に
mkisofs -R -q -print-size /master/tree
を実行し、次に
mkisofs -R /master/tree | cdrecord speed=2 dev=2,0 tsize=XXXs -
を実行する。ここで XXX は先に実行した mkisofs の出力で置き換える。
オーディオ CD を最も正確な方法で複製するには、最初に
cdda2wav -v255 -D2,0 -B -Owav
を実行し、次に
cdrecord -v dev=2,0 -dao -useinfo *.wav
を実行する。
環境変数
- CDR_DEVICE
- SCSI 転送ライブラリの open コールに適したデバイス識別子と、ファイル /etc/default/cdrecord にかかれたラベルを設定できる。
- CDR_SPEED
- デフォルトの書き込みの速度を設定する ( -speed オプションを参照)。
- CDR_FIFOSIZE
-
FIFO のデフォルトサイズを設定する (
fs=# オプションを参照)。
ファイル
- /etc/default/cdrecord
- デフォルトの値は、/etc/default/cdrecord にある以下のオプションで設定できる。例えば、 CDR_FIFOSIZE=8m や CDR_SPEED=2 のように設定できる。
- CDR_DEVICE
- SCSI 転送ライブラリの open コールに適したデバイス識別子と、ファイル /etc/default/cdrecord にかかれたラベルを設定できる。これによりシステム上の特定のドライブを識別できる。
- CDR_SPEED
- デフォルトの書き込みの速度を設定する ( -speed オプションを参照)。
- CDR_FIFOSIZE
- FIFO のデフォルトサイズを設定する ( fs=# オプションを参照)。
- その他のラベル
-
システム上の特定のドライブを識別する。識別子は文字 ',', '/', '@', ':' を含んではならない。
関連項目
cdda2wav(1), readcd(1), scg(7), fbk(7), mkisofs(8).注意
Solaris において USCSI フォールバック SCSI 転送コードを使いたい場合は、ボリューム管理を停止する必要がある。ボリューム管理が動作していると、 cdrecord -scanbus すらも動作しない。Track At Once モードで作られたディスクは、CD 製造業者によって大量生産される製品のマスタには向いていない。このようなディスクを記録するには disk at once オプションを指定する必要がある。 Track At Once で作られたディスクは、通常はどの CD プレーヤでも読めるが、古いオーディオ CD プレーヤのなかにはオーディオトラックの間に 2 秒間のクリック音を出してしまうものもある。
トラックの最小サイズは 4 秒または 300 セクタである。これよりも小さいトラックを書き込んだ場合、 CD レコーダがダミーブロックを追加する。これが SCSI エラーメッセージに現れたとしてもエラーではない。
cdrecord は、SparcStation 20/502 上のアップグレードされた Philips CDD-521 レコーダで等速と 2 倍速でテストして問題がなかった。もっと遅いコンピュータシステムでも動作するだろう。 Philips/HP/Plasmon/Grundig の新しいドライブでも、 Yamaha の CDR-100 と CDR-102 でも動作する。 Plasmon RF-4100 でも動作するが、マルチセッションについてはテストしていない。アップグレードされていない Philips CDD-521 では動作しない。 Sony CDU-924 をテストしたが、ハードウェアが XA-mode2 に対応していない。よって Sony 製ドライブでは適合したマルチセッションディスクを作成することはできない。 Ricoh RO-1420C でも動作するが、 speed=2 で使うと問題が発生することがあるようなので、このような場合には speed=0 を試してみること。
Yamaha CDR-400 や SCSI-3/mmc に適合した全ての新しいドライブは、シングルセッションとマルチセッションに対応している。
不明なシステム上で cdrecord を使う場合は、 -dummy オプションをオンにして、ドライブでサポートされている全ての速度について何回かテストすべきである。 CD の書き込みはリアルタイムプロセスである。 NFS は必要とされるデータ転送率を絶えず提供するわけではない。 NFS でマウントされたファイルシステム上にある CD イメージを cdrecord で使いたい場合は、fifo サイズが充分大きいこと確認すること。 cdrecord を SS20/502 において中間的な負荷状態で使用したことや、 Sparcstation-2 においてかなりの負荷状態で 4 倍速で使用したこともあるが、 CD を書き込むときはシステムの負荷を出来る限り軽くしておくことを勧める。読み込み元のディスクが原因でバッファアンダーランが起こっていないことを確認したいなら、コマンド
cdrecord -dummy dev=2,0 padsize=600m /dev/null
を実行して、全てをダミーデータから作ったディスクを作成すればよい。 cdrecord は、 /dev/scg? デバイスノードにアクセスして、プログラム自身をメモリ内にロックできるように、 root で実行する必要がある。
システム上でユーザーが root になるのを許可したくない場合は、 cdrecord を root に suid することで安全にインストールできる。これにより、root 権限を持たない全てのユーザーやユーザーのグループが cdrecord を使うことができる。この場合 cdrecord は、実際のユーザーが特定のファイルを読めるかを調べる。全てのユーザーに cdrecord を使う権限を与えたいならば以下を実行する:
chown root /usr/local/bin/cdrecord
chmod 4711 /usr/local/bin/cdrecord
特定のユーザーのグループに cdrecord を使う権限を与えたいならば以下を実行する:
chown root /usr/local/bin/cdrecord
chgrp cdburners /usr/local/bin/cdrecord
chmod 4710 /usr/local/bin/cdrecord
そして、システムの cdburners グループに追加する。
ディスクの読み込み・書き出し・フォーマットを全てのユーザーに許可したい場合を除き、 root 以外のユーザーに /dev/scg? への書き込みを許可してはならない。
CD レコーダや読み込み元のディスクが接続された SCSI バスに、切断や再接続に対応していない昔のディスクを接続するべきではない。
CD には 99 トラック以上は入らない。
オーディオトラックとデータトラックが両方入ったディスクを作成する場合は、データをトラック 1 に入れるべきである。そうでなければ CDplus ディスクを作成するべきである。 CDplus は、最初のセッションがオーディオトラックで、以降のセッションがデータトラックになったマルチセッションディスクである。
多くの OS ではデータトラックが 1 つしか読み出せない。また読むためには特別のソフトが必要である。
HP 製 CD レコーダの SCSI コマンドセットについての詳しい情報は以下で入手できる。
http://www.hp.com/isgsupport/cdr/index.html
もっと詳しい情報や、現在対応していないCD レコーダの SCSI コマンドマニュアルがあったら、著者に連絡してください。
Philips CDD 521 にはファームウェアのバグがある。 (アップグレードされたものにもある)。これらうちのいくつかは、デバイスの電気の周波数をある固定のものにしなければならず、そうしない場合にはマシンをリブートしなければならない。
壊れた Linux SCSI generic driver で cdrecord を使う場合、 cdrecord は scg ドライバの機能をエミュレートを試みるという対処療法を使う。不幸なことに、 Linux の sg ドライバには以下のような酷いバグがある:
- •
- SCSI コマンドが全く送られていないかを調べることができない。
- •
- SCSI status バイトを取得できない。このため、 cdrecord は失敗した SCSI コマンドをある状況下では報告できない。
- •
- 転送時の実際の DMA カウントを取得できない。 cdrecord は、DMA の残余カウントがあるかをユーザーに知らせることができない。
- •
- auto sense データのうち有効なバイト数を取得できない。 cdrecord は、認識したデータをデバイスが全く転送していないかをユーザーに知らせることができない。
- •
- auto request sense では非常に少ないデータしか取得できない (CCS/SCSI-2/SCSI-3 では 18 以上でなければならない)。
fifo 率の表示は、CD レコーダにデータブロックが書き込まれた直後に計算される。このため、fifo がストリーミングモードであるにもかかわらず、 100% fifo fill になることはない。
返り値
以下のようなメッセージが表示されてから、 9 秒間の間に ^C で cdrecord を中止できる。Starting to write CD at speed %d in %s mode for %s session.
SCSI コマンドの典型的なエラーメッセージは以下のようなものである:
cdrecord: I/O error. test unit ready: scsi sendcmd: no error
CDB: 00 20 00 00 00 00
status: 0x2 (CHECK CONDITION)
Sense Bytes: 70 00 05 00 00 00 00 0A 00 00 00 00 25 00 00 00 00 00
Sense Key: 0x5 Illegal Request, Segment 0
Sense Code: 0x25 Qual 0x00 (logical unit not supported) Fru 0x0
Sense flags: Blk 0 (not valid)
cmd finished after 0.002s timeout 40s
1 行目はコマンドの転送についての情報である。最初のコロンのあとの文字列は、カーネルの視点からみたシステムコールのエラーである。他の問題が起こらないときに、一般的なのは I/O error である。次の文字列は失敗した SCSI コマンドの簡単な説明である。残りの部分は SCSI バス越しにコマンドを転送する際に問題が発生したことを示す。 fatal error はコマンドを転送できなかったことを示す (つまり、要求された SCSI アドレスにデバイスが存在しなかった)。
2 行目には失敗したコマンドの SCSI コマンドのディスクリプターブロックが表示される。
3 行目には、コマンドの転送が成功した場合に、コマンドによって返される SCSI status コードについての情報が表示される。これは SCSI デバイスからのエラー情報である。
4 行目はコマンドの auto request sense 情報の 16 進ダンプである。
5 行目は (もし存在すれば) sense key のエラー文字列である。コマンドが copy の場合にのみ、セグメント番号が続く。エラーメッセージが現在のコマンドに直接関係していない場合、 deferred error という文字列が表示される。
6 行目は sense code のエラー文字列である。存在する場合には sense qualifier も表示される。デバイスのタイプが既知の場合、 sense data は scsierrs.c" にあるテーブルを用いてデコードされる。その文字列の後には field replaceable unit についてのエラー値が続く。
7 行目には、失敗したコマンドに関連したブロック番号とエラーフラグ文字列が表示される。ブロック番号は有効ではないかも知れない。
8 行目は、そのコマンドについて設定されたタイムアウトと、実際にコマンドが完了するまでにかかった時間が表示される。
以下のメッセージはエラーではない:
Track 01: Total bytes read/written: 2048/2048 (1 sectors).
cdrecord: I/O error. flush cache: scsi sendcmd: no error
CDB: 35 00 00 00 00 00 00 00 00 00
status: 0x2 (CHECK CONDITION)
Sense Bytes: F0 00 05 80 00 00 27 0A 00 00 00 00 B5 00 00 00 00 00
Sense Key: 0x5 Illegal Request, Segment 0
Sense Code: 0xB5 Qual 0x00 (dummy data blocks added) Fru 0x0
Sense flags: Blk -2147483609 (valid)
cmd finished after 0.002s timeout 40s
これは単に、最小サイズより小さいトラックを 300 セクタに拡張したことを知らせているだけである。
バグ
cdrecord には ls よりも多くのオプションがある。現在のところ、 cdrecord は入力データがディスクに合わない場合に警告しか出さない。コマンドを中止しないと、予想できない結果になる。
オーディオトラックのインデックス番号を書き込むオプションが存在するべきである。
パワー不足の時に書き込まれたディスクを修復して使えるようにするオプションが存在するべきである。
謝辞
- Bill Swartz (Bill_Swartz@twolf.com)
-
- Aaron Newsome (aaron.d.newsome@wdc.com)
-
- Eric Youngdale (eric@andante.jic.com)
-
- Gadi Oxman (gadio@netvision.net.il)
-
- Finn Arne Gangstad (finnag@guardian.no)
-
- Dave Platt (dplatt@feghoot.ml.org)
-
- Chris P. Ross (cross@eng.us.uu.net)
-
- Grant R. Guenther (grant@torque.net)
-
- Kenneth D. Merry (ken@kdm.org)
-
メーリングリスト
cdrecord の開発に積極的に参加したいなら、本文に subscribe と書いたメールをother-cdwrite-request@lists.debian.org
へ送って、cdwriting メーリングリストに入ることができる。
other-cdwrite@lists.debian.org
がメーリングリストのアドレスである。
著者
Joerg Schilling
Seestr. 110
D-13353 Berlin
Germany
その他の情報は以下で入手できる。
http://www.fokus.gmd.de/usr/schilling/cdrecord.html
サポートに関する質問は、
cdrecord-support@berlios.de
または other-cdwrite@lists.debian.org
にメールを送ってください。
明らかなバグを見付けた場合は、
cdrecord-developers@berlios.de
または schilling@fokus.gmd.de
にメールを送ってください。
メーリングリストを購読するには、
http://lists.berlios.de/mailman/listinfo/cdrecord-developers
または http://lists.berlios.de/mailman/listinfo/cdrecord-support
を参照すること。
Version 1.10 | Joerg Schilling |