OpenBoot 2.x コマンド・リファレンスマニュアル

第 1 章 概要

この章では、サンシステムの標準ファームウェアである OpenBoot ファームウェアを紹介します。

OpenBoot バージョン 1 は、サンの SPARCstation 1 で導入したファームウェアで、SPARCstation 1+、SPARCstation IPC、SPARCstation SLC(TM) の各システムでも使用されています。このマニュアルでは、バージョン 2 ファームウェアについて説明します。

このファームウェアは、SPARCstation 2 システムから導入されています。

OpenBoot ファームウェアは、システムの起動 PROM (プログラマブル読み取り専用メモリー) に格納されているため、システムの電源を入れるとただちに実行されます。OpenBoot ファームウェアの最初の動作は、大容量記憶装置またはネットワークからオペレーティングシステムを起動することです。このファームウェアは、その他にハードウェアとソフトウェアを対話的にテストするための豊富な機能も備えています。

OpenBoot の特長

OpenBoot のアーキテクチャーは、以前のサンシステムでの起動 PROM よりも、大きく拡張された機能を提供します。このアーキテクチャーは、SPARC システムで、はじめて導入したものですが、その設計はプロセッサに依存しません。次に、OpenBoot ファームウェアの主な機能をいくつか示します。

ユーザーインタフェース

次の方法で OpenBoot 環境に入ります。

OpenBoot ファームウェアには、次の 3 つの外部インタフェースがあります。

このマニュアルでは 3 つ目のインタフェースである、システムコンソールから使用するコマンド行インタフェースについて説明します。

コマンド行インタフェースには次の 2 つのモードがあります。

制限付きモニター

制限付きモニターでは、簡単なコマンドセットを使用して、システムの起動開始、システムの実行再開、または、Forth モニターに入ることができます。また、制限付きモニターはシステムのセキュリティーを設定するためにも使用します。(システムセキュリティーについては、第 3 章「システム変数の設定」を参照してください。)

制限付きモニターのプロンプトは > です。制限付きモニターに入ると次の画面が表示されます。


Type b (boot), c (continue), or n (new command mode)
> 

制限付きモニターのコマンドの例を次の表に示します。

表 1-1 制限付きモニターコマンド
 コマンド 説明
b [specifiers] オペレーティングシステムを起動します。
c 停止しているプログラムの実行を再開します。
nForth モニタに入ります。

Forth モニター

制限付きモニターの機能 b (システムの起動) と c (停止しているプログラムの実行再開)は、Forth モニターではそれぞれ boot (第 2 章「システムの起動とテスト」を参照) と go (第 5 章「プログラムの読み込みと実行」を参照) コマンドとして提供されています。

Forth モニターは対話型コマンドインタプリタで、これによりハードウェアおよびソフトウェア開発、障害の切り分け、デバッグ用の広範な機能にアクセスできます。エンドユーザーから、システム管理者、システム開発者にいたるまで、さまざまなシステムユーザーがこれらの機能を利用できます。

Forth モニターのプロンプトは ok です。Forth モニターに入ると次のメッセージが表示されます。


Type help for more information
ok 

デフォルトモード

初期の OpenBoot システムでは、デフォルトモードは制限付きモニターでした。これは、OpenBoot より前のシステムに近いデフォルトのルック & フィールを提供するのが主な目的でした。

The SPARCserver(TM) 690 システムは、Forth モニターをデフォルトモードとして備える最初のシステムでした。それ以降に発表されたシステムはすべて、デフォルトでこのモードになります。これらのシステムにおいては、制限付きモニターの実用的な機能はシステムセキュリテイのサポートだけです。(システムセキュリティーについては、第 3 章「システム変数の設定」で説明します。)

Forth モニターを終了して制限付きモニターに入るには、次のように入力します。


ok old-mode

デバイスツリー

デバイスは、相互に接続されたバス上で SPARC ベースのシステムに接続されています。OpenBoot ファームウェアは、接続されたバスとそれらのバスに接続されたデバイスをノードのツリーという形で表します。そのようなツリーをデバイスツリーと呼びます。マシン全体を表すノードが、ツリーのルートノードになります。

各デバイスノードには次があります。

子があるノードは通常、複数のバスと、それらのバスに接続されているコントローラを表します。そのようなノードはそれぞれ、それらに接続されているデバイス相互間を区別する物理的なアドレス空間を定義します。そのノードの子には、親のアドレス空間内の物理アドレスがそれぞれ割り当てられます。

物理アドレスは、一般に (デバイスがインストールされているバスアドレスまたはスロット番号などの) デバイス固有の物理的性質を表します。これにより、他のデバイスをシステムにインストールしたときに、デバイスアドレスの変更を避けることができます。

デバイスのパス名、アドレス、引数

OpenBoot ファームウェアはシステム内のハードウェアデバイスを直接取り扱います。各デバイスには、デバイスの種類、システムアドレス構造内のそのデバイスの位置を表す固有の名前があります。次の例でデバイスのフルパス名を示します。

/sbus@1,f8000000/esp@0,40000/sd@3,0:a

デバイスのフルパス名は、スラッシュ (/)で区切られた一連のノード名です。ツリーのルートは明示的には示されない、先頭のスラッシュ (/) で示されるマシンノードです。各ノード名は次の形式になっています。

name@address:arguments

表 1-2でこれらの変数を説明します。

表 1-2 デバイスパス名の変数

変数名 

説明 

name

理想的には、なんらかのニーモニック値をもつテキスト文字列。(たとえば、 sd は SCSI ディスクを表します。多くの名前、特に差し込み式モジュールの名前は、デバイスのメーカの名前または株式略称を含みます (たとえば、SUNW)。

@

address 変数の前に入れます。

address

アドレスを表すテキスト文字列。通常は、hex_numberhex_number の形式。(数値は 16 進形式で指定します。)

:

arguments 変数の前に入れなければなりません。

arguments

形式が特定のデバイスによって決まるテキスト文字列。これを使用してデバイスのソフトウェアに追加情報を渡すことができます。 

フルデバイスパス名は、システムが使用するハードウェアアドレス指定をまねて、異なるデバイスを区別します。したがって、特定のデバイスをあいまいさなしに指定できます。

一般的に、ノード名の address 部分はその親のアドレス空間内の 1 つのアドレスを表します。特定のアドレスの正確な意味は、そのアドレスのデバイスが接続されているバスによって決まります。同じ例をもう一度示します。

/sbus@1,f8000000/esp@0,40000/sd@3,0:a

パス名を指定するときは、ノード名の @addressまたは name 部分は省略できます。省略すると、ファームウェアは指定した名前に最もよく一致するデバイスを選択しようとします。同じ程度に一致するデバイスが複数存在すると、ファームウェアはそれらから選択します (ユーザーが希望するものと異なるかも知れません)。

たとえば、/sbus/esp@0,40000/sd@3,0 を使用するとすると、そのシステムにはメインシステムバス上の sbus インタフェースが 1 つあるものとし、sbussbus@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 を参照します。

デバイスの別名

デバイスの名前には次の 2 種類があります。

デバイスの別名、あるいは、単に別名 (alias) とは、デバイスのパス名を表す方法の 1 つです。別名はデバイスのパス名の構成要素ではなく、デバイスのパス名全体を表します。たとえば、disk という別名は次のようにデバイスのパス名を表します。

/sbus@1,f8000000/esp@0,40000/sd@3,0:a

システムは、よく使用されるデバイスのほとんどに対して、デバイスの別名をあらかじめ定義しているので、デバイスのパス名を全部入力することはまれにしかありません。

表 1-3で、別名の確認、作成、変更を行う devalias コマンドを説明します。

表 1-3 デバイス別名の確認と作成

コマンド 

説明 

devalias

現在のすべてのデバイス別名を表示します。 

devalias alias

alias に対応するデバイスパス名を表示します。

devalias alias device-path

device path を表す別名を定義します。同じ名前の別名がすでに存在すると、新しい名前に更新します。

ユーザーが定義する別名は、システムのリセット後、または電源の再投入後に失われます。永続的な別名を作成するには、devalias コマンドの出力を NVRAMRC と呼ばれる不揮発性 RAM (NVRAM) の一部に手作業で格納するか nvalias コマンド、nvunalias コマンドを使用します。(詳細は、第 3 章「システム変数の設定」を参照してください。)

デバイスツリーの表示

デバイスツリーを表示し、ブラウズして、個々のデバイスツリーノードを調べ、変更することができます。デバイスツリーの表示用コマンドは、UNIX(R) ディレクトリツリーで作業ディレクトリを変更する UNIX コマンドと同じです。デバイスノードを選択すると、それが現在のノードになります。

デバイスツリーは表 1-4に示すコマンドを使用して調べます。

表 1-4 デバイスツリー表示コマンド

コマンド 

説明 

.attributes

現在のノードの特性の名前と値を表示します。 

cd device-path

指定されたデバイスノードを選択し、それを現在のノードにします。 

cd node-name

指定されたノード名を現在のノードの下のサブツリーで検索し、最初に見つかったノードを選択します。 

cd ..

現在のノードの親にあたるデバイスノードを選択します。 

cd /

ルートマシンノードを選択します。 

device-end

現在のデバイスノードを選択解除し、ノードが選択されない状態にします。 

ls

現在のノードの子の名前を表示します。 

pwd

現在のノードを示すデバイスパス名を表示します。 

show-devs [device-path]

デバイス階層内の指定されたレベルのすぐ下の、システムに認識されているすべてのデバイスを表示します。 show-devs だけを使用すると、デバイスツリー全体を表示します。

words

現在のノードの方式名を表示します。 

デバイスツリーを表示していて、システムをリセットする場合は、次のように入力します。


ok device-end 
ok reset

次の例で .attributesの使用例を示します。


ok cd /zs@1,f0000000 
ok .attributes 
address               ffee9000 
port-b-ignore-cd 
port-a-ignore-cd 
keyboard 
device_type           serial 
slave                 00000001 
intr                  0000000c  00000000 
interrupts            0000000c 
reg                   00000001  f0000000  00000008 
name                  zs
ok 

show-devs は次の例で示すように、OpenBoot デバイスツリー上のすべてのデバイスのリストを表示します。


ok show-devs 
/fd@1,f7200000 
/virtual-memory@0,0 
/memory@0,0 
/sbus@1,f8000000 
/auxiliary-io@1,f7400003 
/interrupt-enable@1,f5000000 
/memory-error@1,f4000000 
/counter-timer@1,f3000000 
/eeprom@1,f2000000 
/audio@1,f7201000 
/zs@1,f0000000 
/zs@1,f1000000 
/openprom 
/aliases 
/options 
/packages 
/sbus@1,f8000000/cgsix@3,0 
/sbus@1,f8000000/le@0,c00000 
/sbus@1,f8000000/esp@0,800000 
ok 

次に wordsの使用例を示します。


ok cd /zs 
ok words 
selftest        ring-bell      read           remove-abort?  
install-abort   close          open           abort?         restore 
clear           reset          initkbdmouse   keyboard-addr  mouse 
1200baud        setbaud        initport       port-addr 
ok 

ヘルプの表示

ディスプレイ上に ok が表示されているときは、表 1-5に示すヘルプコマンドを入力して、ヘルプを表示できます。

表 1-5 ヘルプコマンド

コマンド  

説明 

help

ヘルプの主なカテゴリを表示します。 

help category

カテゴリ内の全コマンドのヘルプを表示します。カテゴリ記述の最初の単語だけを使用します。 

help command

各コマンドのヘルプを表示します (ただし、ヘルプが提供されている場合)。 

help のみを入力すると、ヘルプシステムの使用方法についての説明と、提供されているヘルプのカテゴリが表示されます。コマンドの数は非常に多いため、ヘルプはよく使用されるコマンドだけに用意されています。

選択したカテゴリ内のすべてのコマンドのヘルプメッセージ、あるいは、サブカテゴリのリストを表示するには、次のように入力します。


ok help category

特定のコマンドのヘルプが必要な場合は、次のように入力します。


ok help  command

たとえば、dump コマンドのヘルプは次のように表示されます。


ok help dump
Category: Memory access
dump ( addr length -- ) display memory at addr for length bytes
ok 

上記のヘルプメッセージは、まず、dumpメモリーアクセスカテゴリのコマンドであることを示し、さらに、dump コマンドの構文も示します。


注 -

一部の新しいシステムでは、help コマンドでマシン固有の追加コマンドの説明を表示できます。


一部の OpenBoot コマンドの使用上の注意

オペレーティングシステムを起動し、Stop-A または halt コマンドでオペレーティングシステムを終了してから、特定の OpenBoot コマンドを使用した場合、それらのコマンドは期待どおりに動作しないことがあります。

たとえば、オペレーティングシステムを起動し、 Stop-A で終了し、次に probe-scsi コマンドを実行したものとします。probe-scsi の実行が失敗し、オペレーティングシステムの実行が再開できないことがあります。このような場合、次のコマンドを入力します。


ok sync 
ok boot

オペレーティングシステムが停止したために正常に実行できなかった OpenBoot コマンドを実行し直すには、次のようにシステムをリセットしてから、そのコマンドを起動します。


ok reset 
ok probe-scsi 
ok