bsドライバは、WD33C93用(PC-9801-55ボード互換用)のSCSI ドライバーです。このデバイスドライバーは、NetBSD/pc98 core teamによって作成されたものをFreeBSD(98)用に移植 したものです。 1. カーネルの構築ファイル bsドライバを使用する場合は、以下のように記述します。 controller bs0 at isa? port "IO_SCSI" bio irq 5 drq 3 iomem 0xdd000 iosiz 0x1000 flags 0x40000 flagsには、使用するボードの種類を表す以下の数字のいずれか 一つを記述します。 flags ボードの種類 0x00000 NEC PC-9801-55/92互換ボード(DMA転送) 0x10000 IO DATA SC98II (バスマスタ転送) 0x20000 TEXA HA-55-BS2以降 (バスマスタ転送) 0x30000 ELECOM バスマスタタイプのボード (バスマスタ転送) 0x40000 各社SMIT転送のボード (SMIT転送) 0x50000 Logitec LHA-20xシリーズ (バスマスタ転送) SMIT転送を用いる場合は、iomemにBIOS ROMベースアドレス+0x1000 (通常は0xdd000)を指定し、iosizは0x1000を指定して下さい。他の ボードでは、iomemおよびiosizを書く必要はありません。 controller scbus0 at bs0 device sd0 at scbus0 target 0 unit 0 flags 0x320c000b device sd1 at scbus0 target 2 unit 0 flags 0x320c000b device sd2 at scbus0 target 3 unit 0 flags 0x320c000b device od0 at scbus0 target 4 unit 0 flags 0x00000106 device st0 at scbus0 target 5 unit 0 flags 0x00000107 device cd0 at scbus0 target 6 unit 0 flags 0x00000106 使用するSCSIデバイスすべてを記述します。FreeBSD(98)では、 複数の同種SCSIデバイスに対して自動的にユニット番号を割り 付ける機能がありますが、bsドライバではその機能を使用せず に、個々のデバイスを記述することを強く推奨します。(理由は 後で述べます) "at scbus0" の部分は、どのSCSIサブシステムにぶら下がるか (すなわち、どのSCSIボードを使用するか)を指定します。 "target 0" の部分は、SCSI IDを指定して下さい。 "unit 0" の部分は、LUN(論理ユニット番号)を指定します。 "flags" の部分は、それぞれの機器に対してどのようなアクセス 方法をとるか指定します。この値は使用するデバイスごとに最適 値が異なっています。これが、SCSIデバイスをすべて記述する 理由です。 flagsの部分は、以下のような構造になっています。 MSB LSB +---------------+---------------+-+---------+-+-+-----+-+-+-+-+-+ |3 3 2 2 2 2 2 2|2 2 2 2 1 1 1 1|1|1 1 1 1 1| | | | | | | | | |1 0 9 8 7 6 5 4|3 2 1 0 9 8 7 6|5|4 3 2 1 0|9|8|7 6 5|4|3|2|1|0| +---------------+---------------+-+---------+-+-+-----+-+-+-+-+-+ | s | F |n| r |n|n| r |q|l|w|d|s| | y | I |o| s |o|o| s |t|i|a|i|y| | n | F | | v | | | v |a|n|i|s|n| | c | O |S| d |p|s| d |g|k|t|c|c| | | |M| 2 |a|a| 1 | | | | | | | r | s |I| |r|t| | | | | | | | a | i |T| |i| | | | | | | | | t | z | | |t| | | | | | | | | e | e | | |y| | | | | | | | +---------------+---------------+-+---------+-+-+-----+-+-+-+-+-+ + sync 1で同期転送、0で非同期転送 + disc 1でdisconect/reselectをサポート、0で使用しない - wait 1で他のターゲットと競合するバス調停を禁止、0で許可 + link 1でコマンドリンクを使用、0なら使用しない qtag タグ付きキューのため予約 rsvd1 予約 - no sat 1でWD33C93のコンビネーションコマンドを使用しない、0なら使用 + no parity 1でパリティラインを監視しない、0なら監視する rsvd2 予約 - no SMIT 1でSMIT転送を禁止、0で許可(ボードがサポートしていれば) FIFO size 同期転送時のバッファサイズ sync rate 同期転送速度(転送速度を0.1MB単位で表す) "+" をつけたオプションは、1にすると効率向上の効果があり、"-"を つけたオプションは1にすると効率が下がります。 sync rateについては、転送速度を0.1MB単位で表した数字になります。 (例) 5MB/secの場合 5MB/sec = 50 * 0.1MB/secなので、0x32 flagsを省略した場合は、 0xffff0301 同期転送(offsetとperiodはネゴシエーションによって決定) disconnectは用いない コマンドリンク不使用 コンビネーションコマンドを使用しない パリティラインを監視しない となります。また、 options BS_TARG_SAFEMODE を指定すると、ハードディスク以外に対して同期転送を行なわなく なります。 ハードディスクについては、 flags 0x320c0003 をとりあえず用いると良いと思います。また、CD-ROMやMOなどは、 flags 0x020c0304 あたりを指定して、そこからチューニングしていくよいと思います。 2. 運用時の注意事項 bsドライバは、SCSIバスがハングアップした場合にSCSIバスのリセット を試みます。もし、ハードディスクのアクセスランプが点灯したまま カーネルがお亡くなりになったように見えても、しばらくはそのまま にしておいてください。ハングアップの原因がSCSIバス側にあるので あれば復旧する可能性があります。 信頼性を求めるのであれば、パリティラインの監視を有効にしてくだ さい。読み込み時にパリティエラーが発生した場合は完全に復旧され ます。書き込み時はデバイスに依存します。