READCD(1) Schily´s USER COMMANDS READCD(1) 名前 readcd - データ CD を読み出す・書き込む 書式 readcd dev=device [ options ] 説明 readcd は CD を読み出したり、データを CD に書き込んだりするのに使う。 device は CD レコーダの scsibus/target/lun を指す。 SunOS での通信は汎 用 SCSI ドライバ scg を用いて行われる。他の OS では、このドライバをシミ ュ レ ー ト す るライブラリを使う。使用可能な書式は、 dev= scsibus,tar- get,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 デバイスにアクセスする。 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= 以外のオプションが何も指定されていない場合、 readcd は対話モードに なる。対話モードでは、主要な機能を選択した後、指示に従って操作する。 -version バージョン情報を表示して、終了する。 dev=target CD レコーダの SCSI target を設定する。上記を参照。一般的なデバイ ス 指定では 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 に書かれたラベル名として扱われる ( 「ファイル」セクションを参照すること)。 timeout=# SCSI コマンドのデフォルトのタイムアウトを # 秒にする。 SCSI コマ ンドのデフォルトのタイムアウトは、 SCSI コマンドを送る際の最短タ イムアウトとして使われる。 SCSI コマンドがタイムアウトにより失敗 した場合、タイムアウトの値を失敗したコマンドのデフォルトのタイム アウトより長くすることができる。タイムアウトを長くしてコマンドが 正常に動作した場合は、成功したときのタイムアウト時間とそのコマン ド を、このプログラムの著者に知らせて下さい。 timeout オプション が指定されない場合、デフォルトのタイムアウト 40 秒が使われる。 debug=#, -d (debug=# を使って) その他のデバッグレベルを # に設定する。または (-d を使って) デバッグレベルを 1 つ上げる。 -dd を指定した場合、 debug=2 と等しくなる。 libscg でドライバをオープンする際の問題や 、 セクタサイズとセクタタイプの問題を発見するのに役立つ。 -debug を使うと、処理が遅くなりバッファアンダーランの原因になるかもしれ ない。 kdebug=#, kd=# scg ドライバに対して、SCSI コマンドを動作させているときのカーネ ルデバッグレベルを変更させる。 -silent, -s SCSI コマンドが失敗したときの状況報告を表示させない。 -v 一般的な表示の詳細度を 1 つ上げる。例えば、書き込み処理の進捗 状 況を表示するために使われる。 -V SCSI コマンド転送に関する表示の詳細度を 1 つ上げる。 CD レコーダ における書き込み処理での問題をデバックするのに役立つ。簡単なエラ ーメッセージしか表示されない場合は、このフラグを使って詳細な表示 を行わせることができる。 -VV を指定すると、データバッファの内 容 も 表示される。 -V や -VV を使うと、処理が遅くなりバッファアンダ ーランの原因になるかもしれない。 f=file -w 書き込みモードに変更する。このオプションが指定されな い 場 合 、 readcd は指定されたデバイスから読み出しを行う。 sectors=range 読 み出しを行うセクタの範囲を指定する。範囲は「開始セクタ番号-終 了セクタ番号」という形式で指定する。 -notrunc 出力ファイルをオープンするときに切り詰めない。 例 以下の例では、CD レコーダがマシンのプライマリ SCSI バスに接続されている と仮定している。 SCSI ターゲット ID は 2 に設定されている。 CD-ROM のメディア全体を読み出して、ファイル cdimage.raw にデータを書き 出す: readcd dev=2,0 f=cdimage.raw CD-ROM のセクタ範囲 150 〜 10000 を読み出して、ファイル cdimage.raw に 書き出す: readcd dev=2,0 sectors=150-10000 f=cdimage.raw フ ァイル cdimage.raw のデータ (例えば、 mkisofs で作成したファイルシス テムイメージ) を DVD-RAM に書き出す: readcd dev=2,0 -w f=cdimage.raw ファイル 関連項目 cdrecord(1), mkisofs(1), scg(7), fbk(7). 注意 システム上でユーザーが root になるのを許可したくない場合は、 readcd を root に suid することで安全にインストールできる。これにより、root 権限 を持たない全てのユーザーやユーザーのグループが readcd を使うことがで き る。この場合 readcd は、CD-ROM タイプデバイスへのアクセスのみを許可する 。全てのユーザーに readcd を使う権限を与えたいならば以下を実行する: chown root /usr/local/bin/readcd chmod 4711 /usr/local/bin/readcd 特定のユーザーのグループに readcd を使う権限を与えたいならば以下を実 行 する: chown root /usr/local/bin/readcd chgrp cdburners /usr/local/bin/readcd chmod 4710 /usr/local/bin/readcd そして、システムの cdburners グループに追加する。 デ ィスクの読み込み・書き出し・フォーマットを全てのユーザーに許可したい 場合を除き、 root 以外のユーザーに /dev/scg? への書き込みを許可して は ならない。 CD レコーダや読み込み元のディスクが接続された SCSI バスに、切断や再接続 に対応していない昔のディスクを接続するべきではない。 壊れた Linux SCSI generic driver で readcd を使う場合、 readcd は scg ド ライバの機能をエミュレートを試みるという対処療法を使う。不幸なことに 、 Linux の sg ドライバには以下のような酷いバグがある: · SCSI コマンドが全く送られていないかを調べることができない。 · SCSI status バイトを取得できない。このため、 readcd は失敗 し た SCSI コマンドをある状況下では報告できない。 · 転送時の実際の DMA カウントを取得できない。 readcd は、DMA の残 余カウントがあるかをユーザーに知らせることができない。 · auto sense データのうち有効なバイト数を取得できない。 readcd は 、認識したデータをデバイスが全く転送していないかをユーザーに知ら せることができない。 · auto request sense では非常に少ないデータし か 取 得 で き な い (CCS/SCSI-2/SCSI-3 では 18 以上でなければならない)。 返り値 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 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 quali- fier も 表 示 さ れ る 。デバイスのタイプが既知の場合、 sense data は scsierrs.c" にあるテーブルを用いてデコードされる。その文字列の 後 に は field replaceable unit についてのエラー値が続く。 7 行目には、失敗したコマンドに関連したブロック番号とエラーフラグ文字列 が表示される。ブロック番号は有効ではないかも知れない。 8 行目は、そのコマンドについて設定されたタイムアウトと、実際にコマン ド が完了するまでにかかった時間が表示される。 バグ 謝辞 メーリングリスト cdrecord の開発に積極的に参加したいなら、本文に subscribe と書いたメー ルを other-cdwrite-request@lists.debian.org へ送って、cdwriting メーリングリストに入ることができる。 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 を参照すること。 Joerg Schilling Version 1.10 READCD(1)
Copyright(C) linux-cmd.com All Rights Reserved. Author Takayuki Yukawa