kazmax - Linux で自宅サーバー

scgcheck - コマンド (プログラム) の説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. オプション
  5. ファイル
  6. 関連項目
  7. 注意
  8. 返り値
  9. バグ
  10. 謝辞
  11. メーリングリスト
  12. 著者

名前

scgcheck - libscg の ABI のチェックと確認をおこなう

書式

scgcheck [ options ]

説明

scgcheck は libscg の Application Binary Interface のチェックと照合をおこなう。

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 を全ての -2UNIX0 系プラットフォームで汎用的にするためには、 dev= devicename : scsibus , target , lun という書式が好ましい。 これによりデバイスについての各 OS 特有の知識を ユーザーに対して隠蔽することができる。 またこれにより、実際のデバイスファイル名や scsibus , target , lun を指定する方法を、特定の OS 上でサポートする必要がなくなる。

scsibus 0 はマシンのデフォルトの SCSI バスである。 マシンの SCSI 設定についてのより詳細な情報は、 ブート時のメッセージや /var/adm/messages を参照すること。 scsibus , target , lun にどのような値を指定してよいか分らない場合は、 cdrecord-scanbus オプションを使ってみること。

オプション

-version
バージョン情報を表示して、終了する。
dev= target
SCSI バスのスキャンテストで使われる SCSI target のデフォルト値を設定する。 上記の注意事項を参照すること。 例えば、バスのスキャンのときに Solaris USCSI や リモートの SCSI を指定することができる。
バスのスキャンを行わない場合の典型的なデバイス指定は 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
check.log の代わり使うログファイルを指定する。


ファイル

関連項目

  cdrecord (1),   readcd (1),  mkisofs (1), scg (7).

注意

壊れた "Linux SCSI generic driver"scgcheck を使う場合、 scgcheck は scg ドライバの機能をエミュレートを試みるという対処療法を使う。 不幸なことに、 Linux の sg ドライバには以下のような酷いバグがある:

»
SCSI コマンドが全く送られていないかを調べることができない。
»
SCSI status バイトを取得できない。 このため、 scgcheck は失敗した SCSI コマンドをある状況下では報告できない。
»
転送時の実際の DMA カウントを取得できない。 scgcheck は、DMA の残余カウントがあるかをユーザーに知らせることができない。
»
auto sense データのうち有効なバイト数を取得できない。 scgcheck は、認識したデータをデバイスが全く転送していないかを ユーザーに知らせることができない。
»
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 qualifier も表示される。 デバイスのタイプが既知の場合、 sense data は scsierrs.c" にあるテーブルを用いてデコードされる。 その文字列の後には field replaceable unit についてのエラー値が続く。

7 行目には、失敗したコマンドに関連したブロック番号と エラーフラグ文字列が表示される。 ブロック番号は有効ではないかも知れない。

8 行目は、そのコマンドについて設定されたタイムアウトと、 実際にコマンドが完了するまでにかかった時間が表示される。

バグ


謝辞


メーリングリスト


著者

Jorg 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

を参照すること。