総合手引 | セクション 4 | English | オプション |
CAMDEBUG | このオプションは、CAM デバッグ用の printf コードを有効にします。 実際には、このオプションだけではデバッグ情報は出力されません。 出力するためには追加設定が必要です。詳細は下記を参照して下さい。 |
CAM_MAX_HIGHPOWER=4 | 同時使用できる "high power" コマンドの最大数を設定します。 "high power" コマンドとは、 他のコマンドに比べて、実行するのにより多くの電力を必要とするコマンドです。 その一例は SCSI START UNIT コマンドです (現在のところ "high power" の烙印を押されている唯一のコマンドです)。 SCSI ディスクを起動するには、通常のディスク操作に比べて かなり大きな電力を消費します。 このオプションで、コンピュータの電源に負荷をかけ過ぎずに "high power" コマンドを同時にいくつまで発行できるかを指定できます。 |
SCSI_NO_SENSE_STRINGS | |
SCSI Additional Sense Code と Additional Sense Code Qualifier の組についての 解説文をすべて除去します。 この文は本当に大きなテキストデータベースなので、 除去すれば、カーネルのサイズを少し削減できます。 このオプションは、主としてブートフロッピや、 他のディスク空間あるいはメモリ空間が小さい環境で必要となります。 他の環境でも、 多くの場合はこのオプションを有効にすべきです。 SCSI のエラーメッセージの解釈を速めることになるからです。 カーネルを無用に膨張 ("kernel bloat") させることばかりに熱中しないで、 あなたのカーネルに解説文を残さないようにしましょう! | |
SCSI_NO_OP_STRINGS | SCSI opcode の解説文をすべて無効にします。 このオプションは、前述した sense 文字列と場合と同様、主として カーネルサイズが重要なブートフロッピのような環境で役に立ちます。 通常の使用環境でこのオプションを有効にすることは推奨されません。 SCSI の障害のデバッグを遅らせるからです。 |
SCSI_DELAY=8000 | SCSI のバスが安定するまでの遅延 ("bus settle delay") です。 CAM の場合、 ミリ秒 単位で指定します。 以前の SCSI 層で使われていた秒単位ではありません。 カーネルはブート時にバスリセットを各 SCSI バスに送り、各デバイスが転送ネゴシエーションやその他の設定を デフォルトの状態に自分自身でリセットするよう通知します。 ほとんどの SCSI デバイスは、バスリセットから復帰するのに、ある程度の時間を必要とします。 最近のディスクは 100ms 程度の短かい時間しか必要としませんが、 古くて遅いデバイスはもっと長い時間を必要とするかもしれません。 SCSI_DELAY を指定しなければ、デフォルトでは 2 秒になります。 SCSI_DELAY の最小値は "100"、すなわち 100ms です。 唯一特殊なケースは SCSI_DELAY に 0 を指定した場合で、"できるだけ小さい値" を意味します。 この場合、 SCSI_DELAY は 100ms にリセットされます。 |
すべてのデバイスおよび SCSI バスはブート時の割当てをサポートしているので、 上位の番号のデバイスおよびコントローラを設定する必要はありません; device da0 は任意の番号のディスクドライバに対して十分な記述です。
デバイスは、特定のデバイスユニットとして認識される wired (束縛される) か、 その次に有効な未使用ユニットとして認識される counted (数え上げられる) のどちらかです。
カーネル内のドライバがデバイスを束縛しないように設定するには、 device ch0 のような設定行を記述して、チェンジャドライバを組み込んで下さい。
ユニットを束縛するには、 device ch1 at scbus0 target 4 unit 0 のような設定行を記述して、 チェンジャ 1 を SCSI バス 0 上の SCSI ID 4、SCSI 論理ユニット 0 の チェンジャに割り当てます。 各 SCSI バスを指定したコントローラに束縛するには、 controller scbus0 at ahc0 のように設定行を記述します。 これは、SCSI バス 0 を ahc ドライバを用いる最初のユニットに割り当てます。 複数のバスをサポートするコントローラの場合、 特定のバスを controller scbus3 at ahc1 bus 1 の形式で指定できます。 これは、SCSI バス 1 を ahc1 デバイス上で 2 番目にプローブされたバスに 割り当てます。
wired デバイスと counted デバイスが混在している場合、 そのデバイスタイプについての最初の非 wired ユニットから数え始めます。 すなわち、wired ディスク device da1 があると、最初の非 wired ディスクは da2 として認識されることになります。
CAM_DEBUG_INFO | 該当するデバイス (群) について一般的な情報の printf 出力が可能になります。 |
CAM_DEBUG_TRACE | 関数レベルでのコマンドフローのトレースが可能になります。 すなわち、関数の入口と出口でカーネルの printf 出力が発生します。 |
CAM_DEBUG_SUBTRACE | |
関数内部でのデバッグ出力が可能になります。 | |
CAM_DEBUG_CDB | 特定のデバイス (群) に送信されたすべての SCSI コマンドをカーネルが印字するようになります。 |
これらのフラグのうち、特に CAM_DEBUG_TRACE と CAM_DEBUG_SUBTRACE は膨大な量のカーネルの printf 出力を発生しますので、 あまり有益ではありません。 CAM_DEBUG_INFO のレベルでログ出力されるものは多くはありませんので、 これもそれほど有益ではありません。 最も有益なデバッグフラグは CAM_DEBUG_CDB フラグです。 以下のカーネルオプションを使用して、 カーネル設定ファイルからデバッグを有効にできます:
CAMDEBUG | CAM のデバッグを有効にします。 このオプションなしでは、ユーザランドから camcontrol(8) を経由してデバッグを有効にすることもできません。 |
CAM_DEBUG_FLAGS | 上に述べたような各種のデバッグフラグを、 カーネル設定ファイルで設定することが可能になります。 フラグの論理和を取れば、 複数のデバッグレベルでの printf 出力を見ることもできます。 |
CAM_DEBUG_BUS | デバッグの対象とするバスを指定します。 すべてのバスをデバッグするには、この値を -1 に設定します。 |
CAM_DEBUG_TARGET | |
デバッグの対象とするターゲットを指定します。 すべてのターゲットをデバッグするには、この値を -1 に設定します。 | |
CAM_DEBUG_LUN | デバッグの対象とする論理ユニット番号を指定します。 すべての論理ユニット番号をデバッグするには、この値を -1 に設定します。 |
あるバス、ターゲット、もしくは論理ユニット番号を指定する場合には、 上述した 3 つのバス/ターゲット/論理ユニット番号のオプションを すべて指定することが必須となります。 ワイルドカードを使用すれば、 ほとんどの機器についてデバッグを有効にすることができます。
CAMDEBUG オプションを設定ファイルに含めていれば、 camcontrol(8) ユーティリティを使用して、起動中に printf デバッグを有効にすることもできます。 詳細は camcontrol(8) を参照して下さい。
FreeBSD 3.0 | SCSI (4) | October 15, 1998 |
総合手引 | セクション 4 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | One of the advantages of using UNIX to teach an operating systems course is the sources and documentation will easily fit into a student's briefcase. | ” |
— John Lions |