devlinks - 各種デバイスや擬似デバイス用の /dev エントリの追加
/usr/sbin/devlinks [-d] [-r rootdir] [-t table-file]
devfsadm(1M) が /dev と /devices 用の優先コマンドとなったため、devlinks の代わりに使用するようにしてください。
devlinks は、/dev ディレクトリツリーから /devices ディレクトリツリーの下の実際のブロックおよび文字特殊デバイスノードへのシンボリックリンクを作成します。リンクは、table-file (デフォルトでは /etc/devlink.tab) にある指定に従って作成されます。
devlinks はシステムが再構成ブートされるたびに呼び出され、drvconfig(1M) の実行後にのみ実行できます。
table-file (通常は /etc/devlink.tab) は、レコードごとに 1 行の ASCII ファイルです。コメント行が許可されており、ハッシュ文字 (「#」) が最初の文字として含まれている必要があります。各エントリには少なくとも 2 つのフィールドが含まれている必要がありますが、3 つのフィールドを含めることができます。フィールドは単一 TAB 文字で区切られます。
フィールドは次のとおりです。
devinfo ノードへのリンクを作成するための指定。この指定は 1 つ以上のキーワード - 値ペアから構成され、キーワードと値は等号 (「=」) で区切られ、キーワード - 値ペアは互いにセミコロンで区切られます。
使用できるキーワードは次のとおりです。
devinfo デバイスタイプ。使用できる値は ddi_create_minor_node(9F) で指定されています
ノードの名前。これは、/devices ツリーエントリ名の、最初の「@」または「:」文字の前にある部分です。
ノード名のアドレス部分。これは、ノード名の「@」文字と「:」文字の間にある部分です。ノード名にはアドレス部分がない場合があり、多くの擬似デバイスノードがその例です。addr のあとが数字の場合は、アドレスフィールドのコンマ区切りのサブフィールドに対応します。addr1 は最初のサブフィールドに一致し、addr2 は 2 番目に一致し、以下同様です。addr0 は addr と同じで、フィールド全体に一致します。
ノード名のマイナー部分 - 名前の「:」のあとの部分。上の addr と同じく、minor キーワードのあとの数字は、一致するサブフィールドを指定します。
これら 4 つの指定のうち、type 指定だけは常に存在している必要があります。
devinfo ノードに対応する /dev リンクの指定。devlinks はこのフィールドによって、検出した /devices ノードに一致する /dev 名を判別できます。このフィールドの指定には、/devices 名の一部を /dev 名に含めたり、ノード名の作成時にカウンタを使用したりできるように、エスケープシーケンスを使用します。名前の作成時にカウンタを使用する場合は、カウンタより前にある名前部分は完全に指定されている必要があり、/dev/ サブディレクトリ内で一致するすべての名前 (カウンタを含む) は、同じデバイスのサブデバイスとみなされます。これは、それらがすべて /devices/ ツリーの下の同じディレクトリ (name および address) を指すはずであることを意味します。
使用可能なエスケープシーケンスは次のとおりです。
対応する devinfo ノード名の device-name (名前) 部分に置換されます。
対応する devinfo ノード名の address コンポーネントの n 番目のコンポーネントに置換されます。サブコンポーネントはコンマで区切られ、サブコンポーネント 0 は address コンポーネントの全体です。
対応する devinfo ノード名の minor コンポーネントの n 番目のサブコンポーネントに置換されます。サブコンポーネントはコンマで区切られ、サブコンポーネント 0 は minor コンポーネント全体です。
n から始まる「カウンタ」の値に置換されます。各 dev-spec に使用できるカウンタは 1 つだけで、カウンタ値には既存のリンク名と衝突しない最小限の値が選択されます。
dev-spec では、counter シーケンスのあとに数字を続けてはいけません (明示的に、または別のエスケープシーケンス展開の結果として)。これが発生した場合、既存の /dev 名を正確に解析できなくなるため、既存のリンクをそれらのカウンタエントリに正しく一致させることができなくなります。
最初の /dev リンク (フィールド 2 で指定) を指す追加 /dev リンクの指定 (オプション)。このフィールドには、(dev-spec フィールドで説明した) counter エスケープシーケンスを含めることができますが、ほかのエスケープシーケンスは含めることができません。これによって、特定の /dev 名のエイリアスを指定できます。
サポートしているオプションは、次のとおりです。
デバッグモード - 検出されたすべての devinfo ノードを出力し、どのようなリンクが作成される予定かを示しますが、何も行いません。
デバイスノードやリンクが作成される /dev および /devices ディレクトリのルートとして、rootdir を使用します。ルートディレクトリを変更しても /etc/devlink.tab デフォルトテーブルの場所は変更されず、–t オプションに指定されたファイル名にルートディレクトリは適用されません。
作成する必要のあるリンクを指定するために devlinks によって使用されるテーブルファイルを設定します。このオプションを指定しない場合は /etc/devlink.tab が使用されます。このオプションを使用することで、devlinks で作成したいリンクタイプだけをコマンドファイル内に指定して devlinks に渡すことができるため、特定の作業だけを実行するように devlinks に指示できます。
devlinks は table-file の行にエラーを検出すると、標準出力に警告メッセージを出力し、エラールールに指定されたアクションを実行せずに table-file 内の次の行に進みます。
ファイルシステム関連の理由によりリンクを作成できない場合は、エラーメッセージを出力し、現在のルールで続行します。
必要なデータを読み取れない場合は、エラーメッセージを出力し、次の table-file 行に進みます。
/etc/devlink.tab フィールドの例を示します。
type=pseudo;name=win win\M0 type=ddi_display framebuffer/\M0 fb\N0
最初の例では、タイプが pseudo、名前コンポーネントが win のすべてのデバイスが /dev/winx (x は devinfo-name のマイナーコンポーネント) にリンクされることを示します (win ドライバの場合は常に単一の数字)。
2 番目の例では、タイプ ddi_display のすべての devinfo ノードが、/dev/framebuffer ディレクトリの下のエントリ (名前が /devices 名のマイナーコンポーネント全体と同じもの) にリンクされることを示します。さらに、/dev/fbn から /dev/framebuffer の下のエントリを指し示す追加リンクが作成されます。このエントリでは、名前の末尾でカウンタが使用されます。
一般用途の各種デバイスのエントリ
デバイスノード
デフォルトルールファイル
属性についての詳細は、マニュアルページの attributes(5) を参照してください。
|
devfsadm(1M), attributes(5), devfs(7FS), ddi_create_minor_node(9F)
互いに矛盾するリンク指定や決して一致しない指定を構築することは、非常に簡単です。プログラムはこうした状態をチェックしません。