OpenBoot ファームウェアはシステム内のハードウェアデバイスを直接取り扱います。各デバイスには、デバイスの種類、システムアドレス構造内のそのデバイスの位置を表す固有の名前があります。次の例でデバイスのフルパス名を示します。
/sbus@1,f8000000/esp@0,40000/sd@3,0:a
デバイスのフルパス名は、スラッシュ (/)で区切られた一連のノード名です。ツリーのルートは明示的には示されない、先頭のスラッシュ (/) で示されるマシンノードです。各ノード名は次の形式になっています。
name@address:arguments
以下の表でこれらの変数を説明します。
表 1-2 デバイスパス名の変数
変数名 |
説明 |
---|---|
name |
理想的には、なんらかのニーモニック値をもつテキスト文字列。(たとえば、sd は SCSI disk を表します。) 多くの名前、特に差し込み式モジュールの名前は、デバイスのメーカの名前または株式略称を含みます (たとえば SUNW,esp) 。 |
@ |
address 変数の前に入れます。 |
address |
アドレスを表すテキスト文字列。通常は、 hex_number,hex_number の形式。(数値は 16 進形式で指定します。) |
: |
arguments 変数の前に入れなければなりません。 |
arguments |
形式が特定のデバイスによって決まるテキスト文字列。これを使用してデバイスのソフトウェアに追加情報を渡すことができます。 |
フルデバイスパス名は、システムが使用するハードウェアアドレス指定をまねて、異なるデバイスを区別します。したがって、特定のデバイスをあいまいさなしに指定できます。
一般的に、ノード名の address 部分はその親のアドレス空間内の 1 つのアドレスを表します。特定のアドレスの正確な意味は、そのアドレスのデバイスが接続されているバスによって決まります。同じ例をもう一度示します。
/sbus@1,f8000000/esp@0,40000/sd@3,0:a
SBus インタフェースはメインシステムバスに直接接続されているので、1,f8000000 はメインシステムバス上のアドレスを表します。
esp デバイスは SBus のスロット 0、オフセット 40000にあるので、0,40000 は SBus のスロット番号 (0) とそのスロット内のオフセット (40000) です。(明確にわかる名前ではありませんが、この例では、デバイスは SCSI のホストアダプタです。)
sd デバイスは SCSI バスのターゲット 3、論理ユニット 0 に接続されているので、3,0 は SCSI のターゲットと論理ユニット番号です。
パス名を指定するときは、ノード名の @address または name 部分は省略できます。省略すると、ファームウェアは指定した名前に最もよく一致するデバイスを選択しようとします。同じ程度に一致するデバイスが複数存在すると、ファームウェアはそれらから選択します (ユーザーが希望するものと異なることもあります)。
たとえば、 /sbus/esp@0,40000/sd@3,0 を使用するとすると、そのシステムにはメインシステムバス上の SBus インタフェースが 1 つあるものとし、sbus を sbus@1,f8000000 と表すのと同じように明確にします。しかし同じシステムでも、 /sbus/esp/sd@3,0 と表すと、あいまいな場合と、そうでない場合があります。SBus には差し込み式カードが装着できるので、同じ SBus 上に esp だけを使用したのではどのデバイスかを指定できず、ファームウェアはユーザーが意図する esp デバイスを選択しないことがあります。
もう 1 つの例として、/sbus/@0,40000/sd@3,0 は通常指定できるのに対して、 /sbus/esp@0,40000/@3,0 は通常では指定できません。それは、SCSI ディスクデバイスドライバ (sd) と SCSI テープデバイスドライバ (st) の両方に SCSI のターゲット、論理ユニットアドレス 3,0 を使用できるためです。
ノード名の :arguments 部分も省略できます。同じ例を示します。
/sbus@1,f8000000/esp@0,40000/sd@3,0:a
sd デバイスの引数は文字列 a です。sd のソフトウェアドライバはその引数をディスクパーティションとして解釈するため、デバイスパス名はそのディスク上のパーティション a を参照します。