.\" .\" Written By Julian ELischer .\" Copyright julian Elischer 1993. .\" Permission is granted to use or redistribute this file in any way as long .\" as this notice remains. Julian Elischer does not guarantee that this file .\" is totally correct for any given task and users of this file must .\" accept responsibility for any damage that occurs from the application .\" of this file. .\" .\" (julian@tfs.com julian@dialix.oz.au) .\" User SCSI hooks added by Peter Dufault: .\" .\" Copyright (c) 1994 HD Associates .\" (contact: dufault@hda.com) .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. The name of HD Associates .\" may not be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL HD ASSOCIATES BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" .\" %Id: scsi.8,v 1.18 1998/07/28 06:42:37 charnier Exp % .\" .\" jpman %Id: scsi.8,v 1.3 1997/07/22 16:40:11 horikawa Stab % .\" .Dd October 11, 1993 .Dt SCSI 8 .Os BSD 4 .Sh 名称 .Nm scsi .Nd scsi 装置補助プログラム .Sh 書式 .Nm scsi .Fl f Ar device .Fl d Ar debug_level .Nm scsi .Fl f Ar device .Fl z Ar seconds .Op Fl v .Nm scsi .Fl f Ar device .Fl m Ar page .Op Fl P Ar pc .Op Fl e .Nm scsi .Fl f Ar device .Fl p .Op Fl b Ar bus .Op Fl l Ar lun .Nm scsi .Fl f Ar device .Fl r .Op Fl b Ar bus .Op Fl t Ar targ .Op Fl l Ar lun .Nm scsi .Fl f Ar device .Fl c Ar cmd_fmt .Op Ar arg0 ... argn .Op Fl s Ar seconds .Op Fl v .Fl o Ar count out_fmt .Op Ar arg0 ... argn .Fl i Ar count in_fmt .Sh 解説 .Nm scsi プログラムはコマンドを scsi 装置に送るのに使われます。 また、ユーザレベル SCSI コマンドの使用例でもあります。 .Pp .Fl f オプションを指定し、 .Ar device で SCSI デバイス名を指定する必要があります。デバイスがディスクデバイスの場合、 制御デバイス .Pq 例えば Pa /dev/rsd0.ctl である必要があります。 現在有効なデバイスが接続されていないバスで再プローブを行うために、 .Sq super scsi デバイスを .Fl p オプションで指定することができます。 .Pp .Fl d オプションは SCSI カーネルデバッグレベルを設定します。 カーネルは、 .Dv SCSIDEBUG オプションをつけてコンパイルしていなければなりません。 カーネルデバッグレベルをいくつに設定するかは .Pa /sys/scsi/scsi_debug.h を参照してください。 .Pp .Fl z オプションは、 指示された秒数の間だけ、 全ての SCSI バスのあらゆるの活動を凍結します。もし .Fl v も指定されていると、バス凍結の開始時と終了時に BEL 文字が標準出力に送られます。 このためには .Dv SCSI_FREEZE カーネルオプション付きでカーネルを作成する 必要があります。 このカーネルコードはまだコミット (commit) されていません。 .Pp .Fl m オプションは装置のモードページ (mode page) を読むのに使います。 モードデータをどう解釈するかを調べるために ファイル .Pa /usr/share/misc/scsi_modes が読まれます。 環境変数 .Ev SCSI_MODES で別のファイルを使うように指定できます。 .Pp .Fl P オプションはページ制御フィールド (page control field) を指定するのに使います。 指定するページ制御フィールド名は以下です: .Bd -literal -offset .Pp .Bl -tag -width xxxx -indent offset -compact .It 0 現在値 .It 1 変更可能値 .It 2 デフォルト値 .It 3 保存値 .El .Pp .Fl e オプションを指定するとフィールドの編集が可能になります。 編集には環境変数 .Ev EDITOR で指定したエディタを使います。 恒久的に変更を格納するためには .Fl P オプションを使用してページ制御 3 を編集します。 .Pp .Fl p オプションは .Sq super scsi 装置 .Pa /dev/ssc に対して 指定した SCSI バスと指定した SCSI lun を持つ全ての装置をプローブするのに 使われます。 バスは .Fl b オプションで選択でき、デフォルトは 0 です。 lun は .Fl l オプションで選択でき、デフォルトは 0 です。 .Pp .Fl r オプションは、 ブート時に存在した全 SCSI バスから全 SCSI デバイスを再プローブするために 使用できます。 固定 SCSI 装置の説明は .Xr scsi 4 を参照して下さい。 .Pp .Fl c オプションで、コマンドラインで指定したユーザレベル SCSI コマンドを装置へ 送ることができます。 コマンドは .Dv SCIOCCOMMAND ioctl を使って送られるので、 アクセスする装置はこの ioctl を許していなければなりません。 どのマイナ装置が ioctl を許しているかという詳細な説明は .Xr scsi 4 を、 フォーマット引数を使って コマンドやデータフェーズを構築する詳細な方法は .Xr scsi 3 を参照して下さい。 .Pp .Fl v は、より冗長な情報に切り換えます。 .Pp .Fl s は秒単位でコマンドのタイムアウトを設定します。 デフォルトは 2 秒です。 .Pp .Fl c Ar cmd_fmt には .Xr scsi 3 に記述されたコマンドを指定します。 追加の引数で コマンドフォーマットの中で指定された変数の値を与えます。 他の通常のコマンドライン引数は .Dq C での数値表記が使えますが、 .Fl c オプションへの引数は 16 進数です。 .Pp .Fl o .Ar count .Ar out_fmt .Op Ar arg0 ... argn は、これが .Ar count バイトのデータの、 データアウトコマンド (つまり、データがシステムから装置に 送られる) であることを示します。 データは、 与えられた引数で整数変数をみたして、 .Xr scsi 3 で記述された方法で組み立てられます。 .Ar out_fmt にはハイフン ("-") を指定することで、標準入力から .Ar count バイトのデータを読むよう、指示することができます。 .Pp .Fl i Ar count Ar in_fmt は、これが .Ar count バイトのデータの、 データインコマンド (つまり、データが装置からシステムに読み込まれる) であることを示します。 この情報は .Xr scsi 3 で記述された方法で .Ar in_fmt に応じて展開され、標準出力に表示されます。 .Ar in_fmt にはハイフン ("-") を指定することで、 .Ar count バイトのデータ入力を標準出力に書き出すよう、 指示することができます。 .Sh 使用例 ディスク .Pa /dev/rsd0c の装置タイプが 0 (ダイレクトアクセス装置) であると確認する: .Bd -literal -offset indent root# scsi -f /dev/rsd0c -c "12 0 0 0 40 0" -i 64 "*b3 b5" 0 .Ed .Pp .Pa /dev/rsd2c に inquiry を行なう: .Bd -literal -offset indent root# scsi -f /dev/rsd2c -c "12 0 0 0 v 0" 0x40 -i 64 \e "s8 z8 z16 z4" .Pp .Pa /dev/rsd2c のモードページ 1 (リードライトエラー回復ページ; Read-Write Error Recovery Page) を編集し、装置に永久的に格納する: .Bd -literal -offset indent root# scsi -f /dev/rsd2c -m 1 -e -P 3 .Ed .Pp 最初の SCSI バスで簡単に再プローブを行う: .Bd -literal -offset indent root# scsi -f /dev/ssc -p .Ed .Pp .Sh 環境変数 .Ev SU_DEBUG_OUTPUT 変数にファイルを設定して、 デバッグ出力をそのファイルに送ることができます。 .Pp .Ev SU_DEBUUG_LEVEL 変数に 0 以外の整数を設定して、 デバッグレベルを増加させることがきます。 現在はこれはオンかオフしかありません; これは ioctl を使ってカーネルのデバッグレベルを設定し、 プログラムの終了時に 0 に設定しなおします。 .Pp .Ev SU_DEBUG_TRUNCATE 変数は整数を設定して、 デバッグファイルに送られるデータフェーズ出力の量を制限します。 .Pp .Ev EDITOR 変数はモードエディタで使うエディタを決定します。 .Sh 関連項目 .Xr scsi 3 , .Xr scsi 4 , .Xr ssc 4 .Sh バグ .Pp いくつかの装置は全部の LUN で inquiry に応答します。 違う論理ユニットの再プローブの間に 8 回 inquiry の応答が起ります。 .Pp .Fl i オプションが inquiry を行なうのは、 .Fx 2.1 で消滅しました。 これは、新しい機能 .Fl c が取って代わりました。 .Pp パーミッションを注意深く検査してください。 .Ql scsi -f /dev/rsd0c -c "4 0 0 0 0 0 とすると .Pa /dev/rsd0c を (読み出しで) オープンできる誰かが ディスクドライブをフォーマットすることができてしまいます。 これは、少くともドライブに書き込みアクセスが必要なように 変更しなければなりません。 .Sh 歴史 .Nm scsi コマンドは 新しい再プローブとユーザ SCSI コマンドをサポートするために 386BSD 0.1.2.4 から登場しました。 これは .Tn FreeBSD では .Fx 2.0.5 から登場しました。