OpenBoot ファームウェアはシステム内のハードウェアデバイスを直接取り扱います。各デバイスには、デバイスの種類、システムアドレス構造内のそのデバイスの位置を表す固有の名前があります。次の例でデバイスのフルパス名を示します。
/sbus@1f,0/SUNW,fas@e,8800000/sd@3,0:a |
デバイスのフルパス名は、スラッシュ (/) で区切られた一連のノード名です。ツリーのルートは明示的には示されない、先頭のスラッシュ (/) で示されるマシンノードです。各ノード名は次の書式になっています。
driver-name@unit-address:device-arguments
表 1-1 でこれらの変数を説明します。
表 1-1 デバイスパス名の変数
変数名 |
説明 |
---|---|
driver-name |
1〜31文字の英字、数字、および記号「, . _ + - 」からなる可読文字で、なんらかのニーモニック値をもつ文字列。大文字と小文字の区別があります。場合によっては、この名前にはデバイスのメーカの名前とデバイスの型名がコンマで区切って入っていることがあります。一般には、メーカの名前としては株式略称 (たとえば SUNW,sd) が英文大文字で使用されます。組み込みデバイスの場合は、メーカの名前は通常省略されます (たとえば sbus)。 |
@ |
address 変数の前に入れます。 |
unit-address |
その親のアドレス空間内のデバイスの物理アドレスを表すテキスト文字列。テキストの書式はバスによって異なります。 |
: |
arguments 変数の前に入れなければなりません。 |
device-arguments |
形式が特定のデバイスによって決まるテキスト文字列。これを使用してデバイスのソフトウェアに追加情報を渡すことができます。 |
フルデバイスパス名は、システムが使用するハードウェアアドレス指定をまねて、異なるデバイスを区別します。したがって、特定のデバイスをあいまいさなしに指定できます。
一般的に、ノード名の unit-address 部分はその親の物理アドレス空間内の 1 つのアドレスを表します。特定のアドレスの正確な意味は、そのアドレスのデバイスが接続されているバスによって決まります。次の例を見てください。
/sbus@1f,0/esp@0,40000/sd@3,0:a |
SBus インタフェースはメインシステムバスに直接接続されているので、1f,0 はメインシステムバス上のアドレスを表します。
esp デバイスは SBus のスロット 0 のカード上のオフセット 40000 にあるので、0,40000 は SBus のスロット番号 (0) とそのスロット内のオフセット (40000) です。
ディスクデバイスは SCSI バスのターゲット 3、論理ユニット 0 に接続されているので 3,0 は SCSI のターゲットと論理ユニット番号です。
パス名を指定するときは、ノード名の @unit-address または driver-name 部分は省略できます。省略すると、ファームウェアは指定した名前に最もよく一致するデバイスを選択しようとします。一致するノードが複数存在すると、ファームウェアはその中から 1 つ選択します (ユーザーが希望するものと異なることもあります)。
たとえば、/sbus/esp@0,40000/sd@3,0 の例では、そのシステムにはメインシステムバス上の SBus が 1 つあるものとし、sbus を sbus@1f,0 と表すのと同じように明確にします。 しかし同じシステムでも、/sbus/esp/sd@3,0 と表すと、あいまいな場合と、そうでない場合があります。SBus には差し込み式カードが装着できるので、同じ SBus 上に esp デバイスが複数存在する可能性もあります。システム上に複数あると、esp だけを使用したのではどの esp デバイスかを指定できず、ファームウェアはユーザーが意図する esp デバイスを選択しないこともあります。
もう 1 つの例として、/sbus/@2,1/sd@3,0 は通常指定できるのに対して、 /sbus/scsi@2,1/@3,0 は通常では指定できません。それは、SCSI ディスクデバイスドライバと SCSI テープデバイスドライバの両方に SCSI のターゲット、論理ユニットアドレス 3,0 を使用できるためです。
ノード名の :device-arguments 部分も省略できます。同じ例を示します。
/sbus@1f,0/scsi@2,1/sd@3,0:a |
ディスクデバイスの引数は文字列 a です。このデバイスのソフトウェアドライバはその引数をディスクパーティションとして解釈するため、デバイスパス名はそのディスク上のパーティション a を参照します。
実装によっては、パス名構成要素の省略が可能です。あいまいさが生じなければ省略しても、その実装では目的とするデバイスが選択されます。たとえば、上の例のシステムに sd デバイスが 1 つしかなかった場合は、/sd:a これにより、前述した省略しない場合と同じデバイスが識別されます。