device はドライブの scsibus/target/lun を指す。 SunOS での通信は汎用 SCSI ドライバ scg を用いて行われる。 他の OS では、このドライバをシミュレートするライブラリを使う。 使用可能な書式は、 dev= scsibus,target,lun または dev= target,lun である。 後者の場合、ドライブはマシンのデフォルトの 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 デバイスにアクセスする。
readcd を全ての UNIX 系プラットフォームで汎用的にするためには、 dev= devicename:scsibus,target,lun という書式が好ましい。 これによりデバイスについての各 OS 特有の知識を ユーザーに対して隠蔽することができる。 またこれにより、実際のデバイスファイル名や scsibus,target,lun を指定する方法を、特定の OS 上でサポートする必要がなくなる。
scsibus 0 はマシンのデフォルトの SCSI バスである。 マシンの SCSI 設定についてのより詳細な情報は、 ブート時のメッセージや /var/adm/messages を参照すること。 scsibus,target,lun にどのような値を指定してよいか分らない場合は、 cdrecord の -scanbus オプションを使ってみること。
バスのスキャンを行わない場合の典型的なデバイス指定は dev=6,0 である。 数値での target 指定の他に、 ファイル名も指定しなければならない場合、 そのファイル名は実装依存である。 この場合の正確なファイル名は、 対象とする OS の独自のマニュアルに書かれているだろう。 CAM をサポートしてない FreeBSD システムでは、 (/dev/rcd0.ctl などの) 制御デバイスを使う必要がある。 この場合の正確なデバイス指定は、 dev=/dev/rcd0.ctl:@ である。
Linux では、パラレルポートアダプタに接続されたデバイスは、 仮想 SCSI bus に対応付けされる。 別のパラレルポートアダプタは、 この仮想 SCSI bus の別の target に対応付けされる。
dev オプションが指定されていない場合、 cdrecord は環境変数 CDR_DEVICE からデバイスを取得しようとする。
dev= オプションの引き数に文字 ',', '/', '@', ':' がない場合、 ファイル /etc/default/cdrecord に書かれたラベル名として扱われる (「ファイル」セクションを参照すること)。
壊れた Linux SCSI generic driver で scgcheck を使う場合、 scgcheck は scg ドライバの機能をエミュレートを試みるという対処療法を使う。 不幸なことに、 Linux の sg ドライバには以下のような酷いバグがある:
SCSI コマンドの典型的なエラーメッセージは以下のようなものである:
readcd: 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
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 行目は、そのコマンドについて設定されたタイムアウトと、 実際にコマンドが完了するまでにかかった時間が表示される。
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
を参照すること。
[man1]
[man2]
[man3]
[man4]
[man5]
[man6]
[man7]
[man8]
[a]
[b]
[c]
[d]
[e]
[f]
[g]
[h]
[i]
[j]
[k]
[l]
[m]
[n]
[o]
[p]
[q]
[r]
[s]
[t]
[u]
[v]
[w]
[x]
[y]
[z]