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

第 3 章 システム変数の設定

この章では、不揮発性 RAM (NVRAM) のシステム変数にアクセスし、変更する方法について説明します。

システム変数はシステム NVRAM に格納されます。それらの変数は、起動時のマシン構成と関連する通信特性を設定します。システム変数のデフォルト値は変更することができ、行った変更は電源再投入後も有効です。システム変数は常に注意深く調整する必要があります。これらの変数を正しく使用すれば、システムのハードウェアを柔軟に取り扱えます。

この章で説明する手順は、画面には ok プロンプトが表示されるものとしています。 Forth モニターに入る方法については 第 1 章「概要」を参照してください。

表 3-1 に現在の NVRAM のシステム変数の一覧を示します。

表 3-1 NVRAM システム変数

変数名 

設定値 

説明 

auto-boot?

true 

true の場合、電源投入またはリセット後に自動的に起動します。 

boot-device

disk  

起動するデバイス。 

boot-file

空白文字 

起動するファイル (空白文字の場合、第 2 ブーターがデフォルトを選択します)。 

boot-from

vmunix 

起動デバイスとファイルを指定します (1.x のみ)。

boot-from-diag

le()vmunix 

診断起動デバイスとファイル (1.x のみ)。

diag-device

net 

診断起動ソースデバイス。 

diag-file

空白文字 

診断モードで起動するファイル。 

diag-switch?

false 

true の場合、診断プログラムを実行します。 

fcode-debug?

false 

true の場合、差し込み式デバイス FCode の名前フィールドを取り入れます。 

hardware-revision

デフォルトなし 

システムバージョン情報。 

input-device

keyboard 

電源投入時の入力デバイス (通常 keyboardttya、または ttyb)。

keyboard-click?

false 

true の場合、キーボードクリックを使用可能にします。 

keymap

デフォルトなし 

カスタムキーボードのキーマップ。 

last-hardware-update

デフォルトなし 

システム更新情報。 

local-mac-address?

false 

true の場合、ネットワークドライバはシステムのアドレスではなく、自身の MAC アドレスを使用します。 

mfg-switch?

false 

true の場合、Stop-A で中断されるまでシステムの自己診断テストを繰り返します。

nvramrc

空白文字 

NVRAMRC の内容

oem-banner

空白文字 

カスタム OEM バナー (oem-banner? が true で使用可能になります)。

oem-banner?

false 

true の場合、カスタム OEM バナーを使用します。 

oem-logo

デフォルトなし 

バイト配列カスタム OEM ロゴ (oem-logo? が true で使用可能になります)。

16 進で表示 

oem-logo?

false 

true の場合、カスタム OEM ロゴを使用します (true でない場合は、サンロゴを使用します)。 

output-device

screen 

電源投入時の出力デバイス (通常 screenttyattyb)。

sbus-probe-list

0123 

プローブされる SBus スロット、それらのスロットがプローブされる順番。 

screen-#columns

80 

画面上のカラム数 (文字数 / 行)。 

screen-#rows

34 

画面上の行数。 

scsi-initiator-id

ホストアダプタの SCSI バスアドレス。範囲は 0 - 7。 

sd-targets

31204567 

SCSI ディスクユニットを割り当てます (1.x のみ)。

security-#badlogins

デフォルトなし 

誤ったセキュリティーパスワードの試行回数。 

security-mode

none 

ファームウェアセキュリティーレベル (nonecommand、または full)。

security-password

デフォルトなし 

ファームウェアセキュリティーパスワード (表示されません)。これを直接設定してはなりません。

selftest-#megs

テストするメモリーの M バイト数。 diag-switch?true の場合は無視されます。

skip-vme-loopback?

false 

true の場合、POST は VMEbus のループバックテストを行いません。 

st-targets

45670123 

SCSI テープユニットを割り当てます (1.x のみ)。

sunmon-compat?

false 

true の場合、制限付きモニタープロンプト (>) を表示します。 

testarea

1 バイトのスクラッチフィールド。読み取り/書き込みテストに使用されます。 

tpe-link-test?

true 

組み込みより対線 Ethernet 向け 10baseT リンクテストを有効にします。 

ttya-mode

9600,8,n,1,-  

ttya (ボーレート、データビット数、パリティー、ストッブビット数、ハンドシェーク)。 

ttyb-mode

9600,8,n,1,-  

ttyb (ボーレート、データビット数、パリティー、ストッブビット数、ハンドシェーク)。 

ttya-ignore-cd

true 

true の場合、オペレーティングシステムは ttya のキャリヤ検出を無視します。 

ttyb-ignore-cd

true 

true の場合、オペレーティングシステムは ttyb のキャリヤ検出を無視します。 

ttya-rts-dtr-off

false 

true の場合、オペレーティングシステムは ttya の DTR、RTS をアクティブにしません。 

ttyb-rts-dtr-off

false 

true の場合、オペレーティングシステムは ttyb の DTR、RTS をアクティブにしません。 

use-nvramrc?

false 

true の場合、システム起動時に NVRAMRC のコマンドを実行します。 

version2?

true 

true の場合、ハイブリッド (1.x/2.x) PROM がバージョン 2.x で起動します。

watchdog-reboot?

false 

true の場合、ウォッチドッグリセット後に再起動します。 


注 -

OpenBoot システムによっては一部の変数をサポートしていません。デフォルトは、システムのタイプや PROM のバージョンによって変わることがあります。


変数設定の表示と変更

NVRAM のシステム変数は、表 3-2 に示すコマンドを使用して表示、変更できます。

表 3-2 システム変数の表示と変更

コマンド  

説明 

printenv

すべての現在の変数とデフォルト値を表示します。 

(数値は通常 10 進で示されます。)  

printenv parameter は指定する変数の現在値を表示します。

setenv parameter value

parameter (変数) を 10 進またはテキスト値 value に設定します。(変更は永続的ですが、通常はリセット後に初めて有効になります。)

set-default parameter

指定する変数の値を工場出荷時のデフォルトに設定します。 

set-defaults

変数設定を工場出荷時のデフォルトに戻します。 

以降のページで、これらのコマンドの使用方法を示します。

システムの現在の変数設定のリストを表示するには、次のように入力します。


ok printenv  
Parameter Name        Value                          Default Value

oem-logo              2c 31 2c 2d 00 00 00 00 ...    
oem-logo?             false                          false
oem-banner                                           
oem-banner?           false                          false
output-device         ttya                           screen
input-device          ttya                           keyboard
sbus-probe-list       03                             0123
keyboard-click?       false                          false
keymap                                               
ttyb-rts-dtr-off      false                          false
ttyb-ignore-cd        true                           true
ttya-rts-dtr-off      false                          false
ttya-ignore-cd        true                           true
ttyb-mode             9600,8,n,1,-                   9600,8,n,1,-
ttya-mode             9600,8,n,1,-                   9600,8,n,1,-
diag-file                                            
diag-device           net                            net
boot-file                                            
boot-device           disk                           disk
auto-boot?            false                          true
watchdog-reboot?      false                          false
fcode-debug?          true                           false
local-mac-address?    false                          false
use-nvramrc?          false                          false
nvramrc                                              
screen-#columns       80                             80
screen-#rows          34                             34
sunmon-compat?        false                          true
security-mode         none                           none
security-password                                    
security-#badlogins   0                              
scsi-initiator-id     7                              7
version2?             true                           true
hardware-revision                                    
last-hardware-update                                 
testarea              0                              0
mfg-switch?           false                          false
diag-switch?          true                           false
ok

現在の設定の書式付きリストでは、数値変数は特に注記がない限り 10 進数で示されます。

変数設定を変更するには、次のように入力します。


setenv parameter value 

parameter は変数の名前であり、value は変数に該当する数値またはテキスト文字列です。数値のデータ型は 0x を前に付けなければ 10 進になります。0x は 16 進数の修飾子です。(大部分の変数変更は、次の電源再投入またはシステムリセットによって有効になります。)

たとえば、auto-boot? 変数の設定を true から false に変更するには、次のように入力します。


ok setenv auto-boot? false
ok 

set-default 変数と set-default コマンドを使用して、NVRAM のシステム変数の特定の 1 つまたは大部分をもとのデフォルト設定に戻すことができます。

たとえば、auto-boot? 変数をそのもとのデフォルト設定 (true) に戻すには、次のように入力します。


ok set-default auto-boot?
ok

大部分の変数をそれぞれのもとのデフォルト設定に戻すには、次のように入力します。


ok set-defaults
ok

セキュリティー変数の設定

NVRAM のシステムセキュリティー用として次に示す変数があります。

security-mode は、許可のないユーザーが Forth モニターから実行できる一連の処理を制限できます。3 つのセキュリティーモードを、セキュリティーの低い順序で示すと次のとおりです。

command モードおよび full モードを使用するには、制限付きモニターを使用します。セキュリティーを command モードまたは full モードに設定すると、OpenBootファームウェアは制限付きモニターとして起動します。 none セキュリティーモードでは、どちらがデフォルトかによって、OpenBoot ファームウェアは Forth モニターか、制限付きモニターとして起動します。

none セキュリティーモードでは、どのコマンドも制限付きモードで入力でき、パスワードは必要ありません。command および full セキュリティーモードでは、特定のコマンドを実行するのにパスワードが必要です。たとえば、Forth モードにするにはパスワードが必要です。Forth モニターに入った後は、パスワードは不要になります。

security-mode はオペレーティングシステムの eeprom ユーティリティーで変更できます。

コマンドセキュリティー

security-mode に設定しているときは、システムは制限付きモニターとして起動します。このモニターモードでは、パスワードの必要性は次のとおりです。

次に画面で例を示します。


> b        (パスワード必要なし)
> c        (パスワード必要なし)
> b filename (パスワード必要)
PROM Password:(入力時パスワードは画面表示されない)
> n        (パスワード必要)
PROM Password:(入力時パスワードは画面表示されない) 

セキュリティーパスワードと command セキュリティーモードを設定するには、ok プロンプトで次のように入力します。


ok password 
ok New password (only first 8 chars are used):
ok Retype new password:
ok setenv security-mode command 
ok


注 -

この例でも機能しますが、通常はオペレーティングシステムからの eeprom コマンドで 2 つの security 変数を設定します。


設定するセキュリティーパスワードは root パスワードと同じ規則に従います。つまり、6 〜 8 の英字および数字の組み合わせです。セキュリティーパスワードは root パスワードと同じでも、異なっても差し支えありません。システムをリセットする必要はありません。セキュリティー機能はコマンドを入力した直後に有効になります。


注意 - 注意 -

セキュリティーパスワードを絶対に忘れないようにしてください。このパスワードを忘れると、システムが使用できなくなります。販売代理店に連絡してマシンを再び起動可能にする必要があります。


誤ったセキュリティーパスワードを入力した場合は、約 10 秒の遅延があってから次の起動プロンプトが現れます。誤ったセキュリティーパスワードを入力した回数は security-#badlogins 変数に格納されます。この変数は 32 ビットの符号付きの数値です。

フルセキュリティー

full セキュリティーモードは最も制限の多いモードです。security-mode を full に設定した場合は、システムは制限付きモニターとして起動します。このモードでは、パスワードの必要性は次のとおりです。

次に例を示します。


> c        (パスワード必要なし)
> b        (パスワード必要)
PROM Password:(入力時パスワードは画面表示されない)
> b filename (パスワード必要)
PROM Password:(入力時パスワードは画面表示されない)
> n        (パスワード必要)
PROM Password:(入力時パスワードは画面表示されない) 

セキュリティーパスワードと full セキュリティーを設定するには、ok プロンプトで次のように入力します。


ok password
ok New password (only first 8 chars are used):
ok Retype new password:
ok setenv security-mode full 
ok 

電源投入時バナーの変更

バナー構成用として次の変数があります。

電源投入時バナーを表示するには、次のように入力します。


ok banner
            SPARCstation 2, Type 4 Keyboard 
            ROM Rev. 2.0, 16MB memory installed, Serial # 289
            Ethernet address 8:0:20:d:e2:7b, Host ID: 55000121
ok

PROM がシステムバナーを表示します。これは SPARCstation 2 のバナーの例です。SPARC システムによりバナーはこれとは異なることがあります。

バナーは、テキストフィールドとロゴの 2 つの部分からなっています (シリアルポートを介す場合は、テキストフィールドしか表示されません)。oem-banneroem-banner? システム変数を使用して、既存のテキストフィールドを、カスタマイズしたテキストメッセージに置き換えることができます。

電源投入時バナーにカスタマイズしたテキストフィールドを挿入するには、次のように入力します。


ok setenv oem-banner Hello Mom and Dad
ok setenv oem-banner? true
ok banner

             Hello Mom and Dad

ok

システムは、この画面に示すように、新しいメッセージ付きのバナーを表示します。

図形ロゴは多少異なる方法で取り扱わなければなりません。oem-logo は、64 × 64 に配列された合計 4096 ビットからなる 512 バイトの配列です。各ビットはそれぞれ 1 ピクセルに相当します。最初のバイトの最上位ビット (MSB) が左上コーナーのピクセルを制御します。次のビットはその右のピクセルを制御し、以下同様に各ビットは順次にピクセルに対応します。

新しいロゴを作成するには、まず、正しいデータを収容した Forth 配列を作成し、次にこの配列を oem-logo にコピーします。次の例では、Forth のコマンドを使用して配列を作成しています。(ロゴは、オペレーティングシステムのもとでも eeprom コマンドを使用して作成できます。) 作成した配列を次に to コマンドを使用してコピーしています。次の例では、oem-logo の上側の半分に昇順パターンを書き込んでいます。


ok create logoarray d# 512 allot
ok logoarray d# 256 0 do i over i + c! loop drop
ok logoarray d# 256 to oem-logo
ok setenv oem-logo? true
ok banner 

初期設定のサンの電源投入時バナーを復元するには、oem-logo? および oem-banner? 変数を false に設定します。


ok setenv oem-logo? false
ok setenv oem-banner? false
ok

oem-logo 配列は非常に大きいので、printenv は最初のほぼ 8 バイト (16 進) しか表示しません。配列全体を表示するには、oem-logo dump コマンドを使用します。 oem-logo 配列は、データの復元が難しいことがあるので、set-defaults によって消去されません。しかし、set-defaults を実行すると、 oem-logo? が false に設定され、したがってカスタマイズしたロゴはそれ以降表示されなくなります。

入出力の制御

システム入出力の制御関係の構成用として次に示す変数があります。

これらの変数を使用して入出力用の電源投入時デフォルトを割り当て、ttya と ttyb のシリアルポートの通信特性を調整できます。ttya-modettyb-mode の結果を除いて、これらの値は次の電源再投入またはシステムリセットまで有効になりません。

入出力デバイスオプションの選択

input-device および output-device 変数は、電源投入リセット後の入出力デバイスの選択を制御します。input-device のデフォルト値は keyboard であり、 output-device のデフォルト値は screen です。出入力は、表 3-3 の値に設定できます。

表 3-3 入出力デバイス変数

オプション 

説明 

device-specifier

そのデバイスのパス名または別名によって識別されるデバイス。 

keyboard

(入力専用) デフォルトシステムキーボード。 

screen

(出力専用) デフォルトグラフィックスディスプレイ。 

ttya

シリアルポート A 

ttyb

シリアルポート B 

システムをリセットすると、指定したデバイスがデフォルトの入力または出力デバイスになります。(入力または出力デバイスを一時的に変更する場合は、第 4 章「Forth ツールの使用方法」で説明する input または output コマンドを使用します。)

ttya を電源投入時デフォルト入力デバイスとして設定するには、次のように入力します。


ok setenv input-device ttya
ok

input-device として keyboard を選択したが、このデバイスが接続されていない場合は、次の電源再投入またはシステムリセット後は、入力は ttya から受け入れられます。output-device として screen を選択したが、フレームバッファーが存在しない場合は、次の電源再投入またはシステムリセット後は、出力は ttya に送られます。

デフォルト出力デバイスとして bwtwo フレームバッファーを指定するには (特にシステムに複数のフレームバッファーが存在する場合)、次のように入力します。


ok setenv output-device /sbus/bwtwo 
ok 

シリアルポート特性の設定

大部分のサンシステムで、ボーレート ttya と ttyb の両方に対して次のデフォルト設定が使用されます。

9600 ボー、8 データビット、パリティーなし、1 ストップビット、ハンドシェークなし

2 つのシリアルポート ttya および ttyb の通信特性は、ttya-mode および ttyb-mode の各変数に次の値を設定します。

たとえば、ttya を 1200 ボー、7 データビット、偶数パリティー、1 ストップビット、ハンドシェークなしに設定するには、次のように入力します。


ok setenv ttya-mode 1200,7,e,1,- 
ok

これらの変数値の変更はただちに有効になります。


注 -

システムによっては、rts/cts および xon/xoff ハンドシェークは実装されていません。選択したプロトコルが実装されていないときは、handshake 変数は受け入れられますが、無視されます。メッセージは何も表示されません。


起動オプションの選択

次にシステム変数を使用して、電源再投入またはシステムリセット後にシステムを自動的に起動させるかどうかを設定できます。

auto-boot?true の場合は、システムは (boot-device 診断デバイスからの起動と boot-file 診断ファイルからの起動の値を使用して) 自動的に起動します。

手動起動時にも、これらの変数を使用して起動デバイスと起動するプログラムを選択することができます。たとえば、自動起動の設定、Ethernet サーバーからの自動起動を指定するには、次のように入力します。


ok setenv boot-device net 
ok boot 

指定した起動は通常、すぐに開始されます。


注 -

boot-deviceboot-file の指定方法は、diag-switch? を true に設定しているときには異なります。詳細は、次の節を参照してください。


電源投入時の自己診断テストの制御

電源投入時テスト用として次に示す変数があります。

大部分のシステムでは、diag-switch? 変数の工場出荷時のデフォルトは falseです。diag-switch?true に設定するには、次のように入力します。


ok setenv diag-switch? true 
ok

diag-switch? を有効にすると、システムはそれ以降の電源投入時に常により厳密な自己診断テストを実行します。diag-switch? を有効にすると、追加ステータスメッセージが (一部は ttya に、一部は指定した出力デバイスに) 送出され、全メモリーがテストされ、さまざまなデフォルト起動オプションが使用されます。起動 PROM は diag-file 変数によって指定されたプログラムを diag-device によって指定されるデバイスから起動しようとします。


注 -

一部の SPARC システムはハードウェアの診断スイッチを備えています。そのハードウェアスイッチまたは diag-switch? が設定されている場合は、システムは電源投入時にフルテストを実行します。


電源投入時に Stop-D キー処理を使用しても、diag-switch? を true に強制設定できます。

diag-switch?false に設定するには、次のように入力します。


ok setenv diag-switch? false 
ok

diag-switch?false のときは、診断テストは実行されるので、(テストでエラーが発生しなければ) システムは診断テストを呼び出さず、診断の一部を実行します。

NVRAMRC の使用方法

NVRAM の一部に nvramrc と呼ばれる部分があります。そのサイズはそれぞれの SPARC システムによって異なります。これは、起動時に実行されるユーザー定義のコマンドの格納用として予約されています。

一般的に、NVRAMRC は起動時システム変数を保存したり、デバイスドライバコードをパッチしたり、インストール先固有のデバイス構成とデバイスの別名を定義するためにデバイスドライバが使用します。また、バグパッチまたはユーザーインストールの拡張用にも使用できます。コマンドは、ユーザーがコンソールから入力するとおりの ASCII で格納されます。

NVRAMRC 関係のシステム変数には次の 2 つがあります。

NVRAMRC 内のコマンドは、use-nvramrc?true に設定している場合に、システム起動時に実行されます。次の例外を除く、ほとんどすべての Forth モニターコマンドがここで使用できます。

NVRAMRC 内容の編集

NVRAMRC のエディタである nvedit では、表 3-4 に示すコマンドを使用して、NVRAMRC の内容を作成、変更することができます。

表 3-4 NVRAMRC エディタコマンド

コマンド 

説明 

nvalias alias device-path

NVRAMRC に devalias alias device-path を格納します。この別名は、nvunalias または set-defaults コマンドが実行されるまで有効です。

nvedit

NVRAMRC エディタを起動します。前の nvedit セッションからのデータが一時バッファー内に残っている場合は、以前の内容の編集を再開します。残っていない場合は、NVRAMRC の内容を一時バッファーに読み込んで、それらの編集を開始します。

nvquit

一時バッファーの内容を、 NVRAMRC に書かないで捨てます。捨てる前に、確認を求めます。 

nvrecover

NVRAMRC の内容が set-defaults の実行結果として失われている場合、それらの内容を回復し、次に nvedit の場合と同様にこのエディタを起動します。NVRAMRC の内容が失われたときから nvrecover が実行されるまでの間に nvedit を実行した場合は、 nvrecover は失敗します。

nvrun

一時バッファーの内容を実行します。 

nvstore

一時バッファーの内容を NVRAMRC にコピーします。一時バッファーの内容は捨てます。 

nvunalias alias

対応する別名を NVRAMRC から削除します。 


注 -

一部の OpenBoot 2.x には nvalias および nvunalias コマンドがありません。


表 3-5 に NVRAM で使用できる編集コマンドを示します。

表 3-5 nvedit キー操作コマンド

キー操作 

説明 

Control-B

1 文字位置戻ります。 

Control-C

エディタを終了し、OpenBook コマンドインタプリタに戻ります。一時バッファーは保存されていますが、 NVRAMRC には戻されません。 (後で nvstore を使用して一時バッファーを NVRAMRC に書いて戻してください。)

Control-F

1 文字位置戻ります。 

Control-K

行の終わりでは、現在行に次の行をつなぎます (つまり、2 つの行を 1 つにします)。 

Control-L

すべての行を表示します。 

Control-N

NVRAMRC 編集バッファの次の行に進みます。 

Control-O

カーソル位置に new line を挿入し、現在行にとどまっています。 

Control-P

NVRAMRC 編集バッファーの前の行に戻ります。 

Delete

前の 1 文字を削除します。 

Return

カーソル位置に改行を挿入し、次の行に進みます。 

そのほかの標準的エディタ用コマンドについては、第 4 章「Forth ツールの使用方法」を参照してください。

NVRAMRC ファイルの起動

次の手順で、NVRAMRC コマンドファイルを起動してください。

  1. ok プロンプトで、nvedit と入力します。

    エディタのコマンドを使用して NVRAMRC の内容を編集します。

  2. Control-C を入力してエディタを終了し、再び ok プロンプトを表示させます。

  3. nvstore と入力して変更結果を保存します。

  4. setenv use-nvramrc? true と入力して、NVRAMRC を有効にします。

  5. reset と入力してシステムをリセットしてから NVRAM の内容を実行するか、 nvramrc eval と入力して nvramrc の内容を直接実行します。nvstore と入力して変更結果を保存しなかった場合は、nvrun と入力して一時編集バッファーの内容を実行してください。

次の例で、NVRAMRC 内に単純なコロン定義を作成する方法を示します。


ok nvedit 
0: : hello ( -- ) 
1: ." Hello, world. " cr 
2: ; 
3: ^-C 
ok nvstore 
ok setenv use-nvramrc? true 
ok reset 
....
ok hello 
Hello, world.
ok 

上記の例で、nvedit の行番号のプロンプト (0:、1:、2:、3:) に注意してください。これらのプロンプトはシステムによって異なることがあります。