4    DDR (動的デバイス認識)

ほとんどの場合,デバイス管理は自動で行われます。システムに追加したデバイスは,第 3 章 で説明したように認識され,マップされ,追加されます。しかし,自動的に検出してシステムに追加できないデバイスを手動で追加しなければならないこともあります。このようなデバイスには型の古いものや,新しいプロトタイプがあります。また,サポートしている標準 (SCSI など) に厳密に準拠していないものもあります。このような場合,この章で説明する ddr_config コマンドを用いて,デバイスとそのドライバをカーネル内に手作業で構成しなければなりません。

この章では,次の項目について説明します。

4.1    カーネルの再構成

カーネルの再構成と再構築を行う方法には,次の 2 種類があります。

4.2    動的メソッドの使用

以降の項では,ddr_config コマンドを使用してシステムの DDR (動的デバイス認識) データベースを管理する方法を説明します。これらの項では,DDR の概要を説明した後,ddr_config コマンドを用いて行う次のタスクについて説明します。

4.2.1    DDR (動的デバイス認識)

DDR は,SCSI デバイスの特性および操作パラメータを SCSI CAM I/O サブシステムに対して記述するためのフレームワークです。DDR を使用することによって,オペレーティング・システムをリブートせずに,新規の SCSI デバイスや変更した SCSI デバイスを,システムに追加できます。これにより,静的なデバイス認識による方法では避けられないユーザ・サービスやプロセスの中断を防ぐことができます。

DDR は SCSI デバイス認識の静的な方法に取って代わるものです。現在の静的な方法では,/sys/data/cam_data.c データ・ファイルを編集して SCSI デバイス情報をカスタマイズし,カーネルを再構成したのち,オペレーティング・システムをシャットダウンしてリブートします。

注意

SCSI デバイス認識の静的な方法は,将来のリリースではサポートされなくなる予定です。

同じシステムで両方の方法を使用することができますが,各方法で記述されているデバイスは,その方法に限定されます (二重に定義することはできません)。

DDR が SCSI デバイスに関して提供する情報は,SCSI ドライバが必要とするものです。ユーザは,新しい SCSI デバイスをシステムに追加するときに,DDR を使用してこの情報を提供することができます。そうでない場合は,/sys/data/cam_data.c データ・ファイルと静的構成方法を使用することができます。DDR が提供する情報は,cam_data.c ファイルが提供する情報と同じ目的を持っています。SCSI デバイスに関する情報を静的な方法で提供する場合と比較すると,DDR では,デバイス・ドライバまたはサブシステムがオペレーティング・システムに対して提供する情報量を最小にして,デバイス自体が提供する情報または DDR データベースで指定されている省略時の設定で提供される情報量を最大にします。

4.2.1.1    標準に対する準拠

システムに追加するデバイスは,少なくともSCSI-2, Small Computer System Interface-2 (X3.131-1994) に規定されている SCSI-2 標準に準拠していることが推奨されます。デバイスが標準に準拠していない場合,または標準に対して例外が必要な場合には,これらの相違に関する情報を DDR データベースに格納しておきます。デバイスが SCSI-2 標準に準拠している場合には,データベースを変更する必要はありません。このようなデバイスは,システムによって自動的に認識され,hwmgr コマンドを使ってこれらのデバイスを構成することができます。

4.2.1.2    DDR メッセージ

次のリストに,最も一般的な DDR メッセージのカテゴリと,メッセージに対する対応策 (ある場合) を示します。

ddr_config コマンドに -h オプションを指定すると,コマンド・オプションに関するヘルプが表示されます。

4.2.2    データベース・エントリの例

この節では,サード・パーティ製の製品をサポートする /etc/ddr.dbase ファイルにおける 2 つの典型的なエントリの例を示します。この情報は,サポートされているデバイスのベンダによって提供されます。インストールされている HP Tru64 UNIX のバージョンに対応する正しいパラメータの設定に関する重要な情報については,ベンダのドキュメントを参照してください。

警告

この節で示すエントリ例は使用しないでください。デバイスのベンダに問い合わせて,最新の構成設定を入手してください。HP では,システムの省略時の /etc/ddr.dbase ファイルにリストされているものを除き,サード・パーティ製デバイスの構成情報は提供しません。

4.2.2.1    DDR エントリの例,StorageTek 9840

次の DDR エントリ例は,StorageTek 9840 磁気テープ・デバイスをサポートします。パラメータ,モードの選択,密度,属性の各フィールドの詳細については, ddr.dbase(4) を参照してください。デバイスに付属のハードウェア・ドキュメントに,属性の設定についての情報が記載されています。

# Please note that this entry is not supported by HP
# It is supplied by StorageTek as a means of enabling
# their tape drive to work in HP Tru64 UNIX.
# If you experience problems when using this drive
# contact StorageTek Technical Support.
 
SCSIDEVICE
  #
  # STK 9840
  #
  Type = tape
  Name = "STK" "9840"
  #
 PARAMETERS:
  TypeSubClass 		= 3480
  MaxTransferSize 	= 0x40000     #256k
  SyncTransfers 	= enabled
  WideTransfers 	= enabled
  Disconnects 		= enabled
  CmdReordering 	= disabled
  TaggedQueuing 	= disabled
  TagQueueDepth 	= 0
  WCE_Capable 		= false
  PwrMgmt_Capable 	= false
  LongTimeoutRetry 	= disabled
  ReadyTimeSeconds 	= 240
  DisperseQueue 	= false
  CMD_PreventAllow	= supported
  CMD_ExtReserveRelease	= supported
 
 DENSITY:
	#
	# /dev/tape/tapeX_d0, _d4
	#
	DensityNumber = 0,4
	DensityCode = density_code_42
	CompressionCode = 0
	Buffered = 0x1
	#
 DENSITY:
	#
	# /dev/tape/tapeX_d1, _d5
	#
	DensityNumber = 1,5
	DensityCode = density_code_42
	CompressionCode = 1
	Buffered = 0x1
	#
	#
	# /dev/tape/tapeX_d2, _d6
	#
 DENSITY:
	DensityNumber = 2,6
	DensityCode = density_code_43
	CompressionCode = 0
	Buffered = 0x1
	#
	#
	# /dev/tape/tapeX_d3, _d7
	#
 DENSITY:
	DensityNumber = 3,7
	DensityCode = density_code_43
	CompressionCode = 1
	Buffered = 0x1
 
 
         Buffered = 0x1
 
     DENSITY:
         #
         DensityNumber = 1
         DensityCode = default
         CompressionCode = 0x1
         Buffered = 0x1

4.2.2.2    DDR エントリ例,EMC Symmetrix

次の DDR エントリ例は,EMC Symmetrix ディスク・ストレージ・デバイスとファイバ・チャネル・デバイスをサポートします。 パラメータ,モードの選択,密度,属性の各フィールドの詳細については, ddr.dbase(4) を参照してください。

サードパーティ製デバイスに付属のハードウェア・ドキュメントに属性の設定についての情報が記載されています。この例では,ATTRIBUTE 設定には ubyte[0] 属性に対して設定し得る値を示すコメントが含まれています。これらの設定については,デバイスのハードウェア・ドキュメントを参照するか,ベンダに問い合わせてください。

SCSIDEVICE
# 
# SAMPLE Entry for Symmetrix SCSI devices (DO NOT USE, CONSULT EMC) 
# 
Type = disk 
Name = "EMC" "SYMMETRIX"
PARAMETERS:
TypeSubClass = hard_disk, raid
BlockSize = 512
BadBlockRecovery = disabled
DynamicGeometry = true
LongTimeoutRetry = enabled
DisperseQueue = false
TagQueueDepth = 20
ReadyTimeSeconds = 45
InquiryLength = 160
RequestSenseLength = 160
PwrMgmt_Capable = false
ATTRIBUTE:
# ubyte[0] = 8 Disable AWRE/ARRE only, PR enabled
# ubyte[0] = 25 Disable PR & AWRE/ARRE, Enable I/O Barrier Patch resets
AttributeName = "DSBLflags"
Length = 4 
ubyte[0] = 8 
 
SCSIDEVICE
# 
# Entry for Symmetrix Fibre Channel devices 
# 
Type = disk 
Stype = 2 
Name = "EMC" "SYMMETRIX"
PARAMETERS:
TypeSubClass = hard_disk, raid
BlockSize = 512
BadBlockRecovery = disabled
DynamicGeometry = true
LongTimeoutRetry = enabled
DisperseQueue = false
TagQueueDepth = 20
ReadyTimeSeconds = 45
InquiryLength = 160
RequestSenseLength = 160
PwrMgmt_Capable = false
ATTRIBUTE:
AttributeName = "DSBLflags"
Length = 4 
ubyte[0] = 8

4.3    DDR データベースの手作業による変更

SCSI デバイスの操作パラメータまたは特性を変更した場合には,/etc/ddr.dbase ファイルにその変更を記述する必要があります。ddr_config -c コマンドを使用して,その変更をコンパイルします。

変更を行う一般的な理由は次の 2 つです。

ddr_config -c コマンドを使用して /etc/ddr.dbase ファイルをコンパイルし,バイナリのデータベース・ファイル /etc/ddr.db を作成します。カーネルは,ファイル状態の変更を認識すると,新しい /etc/ddr.dbase ファイルをロードします。 このように,SCSI CAM I/O サブシステムは,/etc/ddr.dbase ファイルに対して行われた変更に基づいて動的に更新され,ディスク上のデータベースの内容が,メモリ内のデータベースの内容と同期化されます。

次の手順に従って,/etc/ddr.dbase データベースをコンパイルします。

  1. root としてログインするか,またはスーパユーザになります。

  2. ddr_config -c コマンドを入力します。たとえば,次のように入力します。

    # /sbin/ddr_config -c 
    

正常に完了したことを確認するメッセージは表示されません。プロンプトが表示されると,コンパイルが終了します。構文エラーがあるとエラーが標準出力に出力され,コンパイル済みの出力ファイルは生成されません。

4.4    カスタマイズ済みの cam_data.c 情報の変換

次の手順を使用して,SCSI デバイスに関するカスタマイズ済み情報を,/sys/data/cam_data.c ファイルから /etc/ddr.dbase テキスト・データベースに転送します。この例では,MACHINE は使用しているマシンのシステム構成ファイル名です。

  1. root としてログインするか,またはスーパユーザになります。

  2. /etc/ddr.dbase ファイルに対して行われた追加および変更の要約を作成するために,ddr_config -x コマンドを実行します。たとえば次のようにします。

    # /sbin/ddr_config -x MACHINE > output.file
    

    このコマンドは,システム構成ファイルを入力として使用します (構成ファイルは,現在実行中のカーネルを構築したときに指定したファイルです)。この手順はマルチユーザ・モードで実行され,開始後に入力を行う必要はありません。出力をファイルにリダイレクトして,要約情報を保存しておくようにしてください。コンパイル・エラーは標準エラーに報告され,エラーが報告されるとコマンドは直ちに終了します。警告メッセージは標準エラーに出力され,コマンドは終了しません。

  3. 出力ファイルにリストされた特性を,/etc/ddr.dbase ファイルの構文に従って,そのファイル内に編集します。/etc/ddr.dbase データベースの編集方法については, ddr.dbase(4) を参照してください。

  4. ddr_config -c コマンドを入力して,変更をコンパイルします。

詳細は,4.3 節を参照してください。

以降の項で説明する手順に従うと (DDR を使用せずに) 擬似端末,ディスク,およびテープ・デバイスを静的に追加することができます。

4.5    DDR を使用せずに擬似端末とデバイスを追加する

特に指定しなくても System V Release 4 (SVR4) の擬似端末 (ptys) はインプリメントされており,次のように定義されています。

/dev/pts/N

変数 N は,0 〜 9999 の数値です。

この機能により,BSD の pty (tty[a-zA-Z][0-9a-zA-Z]) より高いスケーラビリティが得られます。ベース・システムのコマンドおよびユーティリティは,SVR4 と BSD の pty をサポートしています。元の省略時の設定に戻るには,MAKEDEV コマンドを用いて BSD ptys を作成します。 SYSV_PTY(8)pty(7)MAKEDEV(8) も参照してください。

4.5.1    擬似端末の追加

擬似端末を使用することによって,ネットワーク経由でシステムにアクセスすることができます。擬似端末は,システムへのハードウェア端末の接続をエミュレートする 1 組のキャラクタ・デバイスです。ハードウェアの代わりに,マスタ・デバイスとスレーブ・デバイスが存在します。擬似端末は,通常の端末と違い,対応する物理的な端末ポートがシステム上に存在しません。リモート・ログイン・セッション,ウィンドウ・ソフトウェア,およびシェルは,擬似端末を使用してシステムにアクセスします。特に指定しなければ,SRV4 のデバイス特殊ファイル (/dev/pts/n など) が作成されます。/dev/ttyp/n のような BSD の擬似端末を作成するには,/dev/MAKEDEV を使用しなければなりません。利用できる擬似端末の種類は 2 つあります。BSD STREAMS と BSD clist の 2 つです。

環境によっては,pty デバイスの省略時の数で十分な場合があります。しかし,環境が拡大し,その中で各ユーザが 1 台以上のタイムシェアリング・マシンで複数のセッションを実行しようとすると,マシンの pty の数が足りなくなることも考えられます。現在の値を調べるには,次のコマンドを実行します。

# sysconfig -q pts
pts:
nptys = 255

次のように,sysconfig コマンドでこの値を動的に変更することもできますが,リブートするとその変更は無効になります。

# sysconfig -r pts nptys=400

変更した値をリブート後も維持するには,次の手順に従ってください。

  1. スーパユーザ (root) としてログインします。

  2. システム構成ファイル /etc/sysconfigtab で擬似デバイスを追加または編集します。省略時の設定では,カーネルは 255 個の擬似端末をサポートします。さらに多くの擬似端末をシステムに追加する場合は,システム構成ファイルを編集して,追加したい擬似端末数まで増加させます。次の例では擬似端末を 400 個増加する方法を示しています。

    pts:
    nptys=400
    

    clist ベースの擬似端末に対する擬似端末エントリは,次のようになります。

    pseudo-device pty 655
    

    構成ファイルとその擬似デバイス・キーワードの詳細については,『システム管理ガイド』を参照してください。

  3. clist ベースの擬似端末では,さらに,新しいカーネルを再構築してブートします。新しいカーネルの再構築とブートについては,『システム管理ガイド』を参照してください。

    システムを最初にインストールした際には,構成ファイルの擬似デバイスエントリに省略時の設定として 255 の擬似端末数が設定されます。この値が削除されている場合,システムの省略値の擬似端末数は最小の 80 になります。最大値は 131072 です。

BSD 端末を作成する場合は,次のように /dev/MAKEDEV コマンドを使用します。

  1. root としてログインし,/dev ディレクトリに移動します。

  2. 次のように MAKEDEV コマンドを使用して,デバイス特殊ファイルを作成します。

    ./MAKEDEV pty_#
    

     #  (番号記号)には,作成したい擬似端末のセット数 (0〜101) を指定します。最初の 51セット (0〜50) は,各セットでそれぞれ 16 の擬似端末を作成します。残りの 51 セット (51〜101) は,各セットに対して 46 の擬似端末を作成します。大量の擬似端末を作成する手順については, MAKEDEV(8) を参照してください (サポートされている擬似端末の数の上限については,Tru64 UNIX『QuickSpecs』を参照してください)。

    注意

    省略時の設定では,インストレーション・ソフトウェアは,擬似端末の最初の 2 セット,pty0 および pty1 のデバイス特殊ファイルを作成します。pty0 擬似端末には,/dev/ttyp0 から /dev/ttypf までの名前が付いた対応するデバイス特殊ファイルがあります。pty1 擬似端末には,/dev/ttyq0 から/dev/ttyqf までの名前が付いた対応するデバイス特殊ファイルがあります。

    インストレーション・ソフトウェアは pty0pty1 を設定するので,システムに擬似端末を追加する場合には,pty# 変数は pty1 より大きくなければなりません。たとえば,擬似端末の 3 番目のセットのためのデバイス特殊ファイルを作成するには,次のコマンドを入力します。

    # ./MAKEDEV pty2
    

    MAKEDEV コマンドは,作成したデバイス特殊ファイルのリストを表示します。たとえば次のように表示されます。

    MAKEDEV: special file(s) for pty2:
    ptyr0 ttyr0 ptyr1 ttyr1 ptyr2 ttyr2 ptyr3 ttyr3 ptyr4 ttyr4
    ptyr5 ttyr5 ptyr6 ttyr6 ptyr7 ttyr7 ptyr8 ttyr8 ptyr9 ttyr9
    ptyra ttyra ptyrb ttyrb ptyrc ttyrc ptyrd ttyrd ptyre ttyre
    ptyrf ttyrf
    

  3. BSD の pty を削除するには,/dev/SYSV_PTY コマンドを使用します。

  4. すべての擬似端末で root ログインを許可する場合は,/etc/securettys ファイルに ptys エントリを記述します。擬似端末での root ログインを許可しない場合は,/etc/securettys ファイルの ptys エントリを削除します。たとえば,新しい tty ラインのエントリを追加し,すべての擬似端末で root ログインを許可する場合は,/etc/securettys ファイルに次の行を追加します。

    /dev/tty08     # direct tty
    /dev/tty09     # direct tty
    /dev/tty10     # direct tty
    /dev/tty11     # direct tty
    ptys
    

    詳細については, securettys(4) を参照してください。

4.5.2    他のデバイスの追加

新しい SCSI デバイスをシステムに追加すると,システムが自動的にそれらを検出して構成します。適切な hwmgr コマンドと dsfmgr コマンドを実行して,デバイスを登録し,識別子を割り当て,デバイス特殊ファイルを作成します。しかし,他のデバイスについては,MAKEDEV コマンドを用いて手作業でデバイス名を作成する必要があるかもしれません。間違ってシステムから削除されたデバイス特殊ファイルを再度作成しなければならないこともあります。

新しいデバイスの場合には,そのデバイスを物理的に接続して,システムにデバイスを認識させなければなりません。この方法には,静的ドライバ用とロード可能ドライバ用の 2 つの方法があります。デバイスを追加する前に,システム・プロセッサに添付されているオーナーズ・マニュアルと,デバイス自体に添付されているドキュメントを必ず読んでください。また,ドライバ・ソフトウェアの入ったディスクが必要になることもあります。

第 8 章 には,システムに PCMCIA モデムを追加する例の概要と,デバイス特殊ファイルの作成方法が示されています。

古いデバイス特殊ファイル rz または tz/dev に作成する (/dev/rz5 など) だけであれば,MAKEDEV コマンドは使う必要はありません。dsfmgr コマンドを使えば,これらのデバイス名を作成できます。 ロード可能ドライバにデバイスを追加する方法については,デバイス・ドライバのマニュアルを参照してください。

静的ドライバ用にデバイスを追加するには,4.5.1 項を参照してください。

続いて,次の手順を実行して,そのデバイス用にデバイス特殊ファイルを作成します。

  1. /dev ディレクトリに移動します。

  2. 次のように MAKEDEV コマンドを使用して,デバイス特殊ファイルを作成します。

    # ./MAKEDEV deviceN
    

    変数 device は,追加しようとしているデバイスを示すデバイス・ニーモニックです。変数  N はデバイス番号を示します。たとえば,2 つの PCMCIA モデム・カードのデバイス特殊ファイルを作成するには,次のコマンドを入力します。

    # ./MAKEDEV ace2 ace3
    

    MAKEDEV: special file(s) for ace2:
    tty02
    MAKEDEV: special file(s) for ace3:
    tty03
    

    作成されるデバイス特殊ファイルは次のようになります。

    crw-rw-rw-   1 root     system    35,  2 Oct 27 14:02 tty02
    crw-rw-rw-   1 root     system    35,  3 Oct 27 14:02 tty03
    

  3. shutdown コマンドを使用してシステムを停止し,システムの電源を切ります。詳細については,『システム管理ガイド』と shutdown(8) を参照してください。

  4. システムの電源を入れます。すべてのデバイスをシステムに認識させるためには,周辺装置の電源を先に入れてから,システム本体の電源を入れてください。

  5. 新しいカーネルでシステムをブートします。ブートについての詳細は,『システム管理ガイド』を参照してください。