カーネルは、デバイスツリーを構築することに加えて、デバイスの管理に使用されるドライバを判別します。
ドライバのデバイスへのバインドとは、システムが特定のデバイスを管理するためにドライバを選択するプロセスを指します。バインド名とは、ドライバを、デバイス情報ツリー内の一意のデバイスノードにリンクする名前のことです。システムはデバイスツリー内のデバイスごとに、インストール済みのドライバの一覧からドライバを選択しようとします。
各デバイスノードには関連付けられた name プロパティーがあります。このプロパティーは、PROM などの外部エージェントから割り当てる、システムブート時に割り当てる、または driver.conf 構成ファイルから割り当てることができます。どの場合にも、name プロパティーはデバイスツリー内のデバイスに割り当てられるノード名を表します。ノード名は、/devices に表示され、prtconf(1M) の出力に一覧で示される名前です。
図 2-3 デバイスノード名
デバイスノードには compatible プロパティーを関連付けることもできます。compatible プロパティーには、1 つ以上の使用可能なドライバ名またはデバイスのドライバ別名の一覧が、並び替えて格納されています。
システムは compatible プロパティーと name プロパティーの両方を使用してデバイスのドライバを選択します。システムは compatible プロパティーが存在する場合、最初に compatible プロパティーの内容を、システム上のドライバと照合しようとします。システムは compatible プロパティーの一覧に記載された最初のドライバ名から処理を開始し、ドライバ名をシステム上の既知のドライバと照合しようとします。一覧の各エントリは、システムが一致するものを見つけるか、一覧の最後に達するまで処理されます。
name プロパティーまたは compatible プロパティーのいずれかの内容がシステム上のドライバと一致する場合、そのドライバがデバイスノードにバインドされます。一致するものが見つからない場合、どのドライバもデバイスノードにはバインドされません。
一部のデバイスでは、name プロパティーの値として汎用デバイス名が指定されています。汎用デバイス名は、そのデバイス用に特定のドライバを実際に結び付けるのではなく、デバイスの機能を説明するものです。たとえば、ある SCSI ホストバスアダプタが scsi という汎用デバイス名を持っている場合があります。また、イーサネットデバイスが ethernet という汎用デバイス名を持っていることがあります。
compatible プロパティーを利用すると、システムは汎用デバイス名を持つデバイス用の代替ドライバを判定できます。たとえば、scsi HBA デバイスドライバには glm を、ethernet デバイスドライバには hme を見つけることができます。
汎用デバイス名を持つデバイスには、compatible プロパティーを指定する必要があります。
次の図は、固有のデバイス名を持つデバイスノードを示しています。ドライバのバインド名 SUNW,ffb はデバイスノード名と同じ名前です。
図 2-4 ドライバノードの固有名のバインド
次の図は、汎用デバイス名 display を持つデバイスノードを示しています。ドライバのバインド名 SUNW,ffb は、システムのドライバ一覧に記載されているドライバと一致している、compatible プロパティーのドライバ一覧で最初の名前です。この場合、display がフレームバッファーの汎用デバイス名です。
図 2-5 汎用ドライバノードのバインド