nvramrc システム変数はスクリプトと呼ばれる内容を持ち、起動時に実行されるユーザー定義コマンドを格納します。
一般的に、nvramrc は起動時のシステム変数を保存したり、デバイスドライバコードをパッチしたり、インストール先固有のデバイス構成とデバイスの別名を定義するためにデバイスドライバが使用します。また、バグパッチまたはユーザーインストールの拡張用にも使用できます。コマンドは、ユーザーがコンソールから入力するように ASCII で格納されます。
use-nvramrc? システム変数が true の場合は、そのスクリプトが OpenBoot の起動処理で次のように評価されます。
電源投入時自己診断テスト (POST)を実行します。
システムの初期化を実行します。
(use-nvramrc? が true の場合) スクリプトを評価します。
probe-all を実行します (FCode を評価します)。
install-console を実行します。
banner を実行します。
二次診断を実行します。
(auto-boot? が true の場合) デフォルト起動を実行します。
場合によっては、probe-all install-console banner の処理を変更することが必要な場合があります。たとえば、差し込み式ディスプレイデバイスのプローブが終わってからコンソールデバイスの選択が終わるまでに、差し込み式デバイスの特性を変更するコマンドを実行する必要があることがあります。そのようなコマンドは、probe-all と install-console の間で実行する必要があります。出力をコンソールに表示するコマンドを install-console または banner の後に入れる必要があります。
これは、banner か suppress-banner を内容とするカスタムスクリプトを作成することにより実現できます。それは、そのスクリプトから banner か suppress-banner が実行されれば、probe-all、install-console および banner 処理が実行されないためです。つまり、そのスクリプト内部で probe-all、install-console、banner を場合により他のコマンドと混用する形で使用することができ、スクリプト終了後にそれらのコマンドを再び実行させないようにできます。
次の例外を除く、ほとんどすべてのユーザーインタフェースコマンドがスクリプトで使用できます。
boot
go
nvedit
password
reset-all
setenv security-mode
スクリプトエディタである nvedit では、表 3-5 に示すコマンドを使用して、スクリプトの内容を作成、変更することができます。
表 3-5 NVRAMAC に影響するコマンド
コマンド |
説明 |
---|---|
nvalias alias device-path |
スクリプトにコマンド devalias alias device-path を格納します。この別名は、nvunalias または set-defaults コマンドが実行されるまで有効です。 |
$nvalias |
スタックから引数 name-string と device-string を使用する以外は、nvalias と同じ機能です。 |
nvedit |
スクリプトエディタを起動します。前の nvedit セッションからのデータが一時バッファー内に残っている場合は、以前の内容の編集を再開します。残っていない場合は、nvramrc の内容を一時バッファーに読み取って、それらの編集を開始します。 |
nvquit |
一時バッファーの内容を、nvramrc に書き込まないで捨てます。捨てる前に、確認を求めます。 |
nvrecover |
nvramrc の内容が set-defaults の実行結果として失われている場合、それらの内容を回復し、次に nvedit の場合と同様にこのエディタを起動します。nvramrc の内容が失われたときから nvrecover が実行されるまでの間に nvedit を実行した場合は、nvrecover は失敗します。 |
nvrun |
一時バッファーの内容を実行します。 |
nvstore |
一時バッファーの内容を nvramrc にコピーします。一時バッファーの内容は捨てます。 |
nvunalias alias |
対応する別名を nvramrc から削除します。 |
$nvunalias |
スタックから引数 name-string を使用する以外は、nvunalias と同じ機能です。 |
表 3-6 にスクリプトエディタで使用できる編集コマンドを示します。
表 3-6 スクリプトエディタキー操作コマンド
キー操作 |
説明 |
---|---|
Control-B |
1 文字位置戻ります。 |
Escape B |
1 語戻ります。 |
Control-F |
1 文字位置進みます |
Escape F |
1 語進みます。 |
Control-A |
行の先頭に戻ります。 |
Control-E |
行の終わりに進みます。 |
Control-N |
スクリプト編集バッファーの次の行に進みます。 |
Control-P |
スクリプト編集バッファーの前の行に戻ります。 |
Return (Enter) |
カーソル位置に改行を挿入し、次の行に進みます。 |
Control-O |
カーソル位置に改行を挿入し、現在の行にとどまっています。 |
Control-K |
カーソル位置から行の終わりまで消去し、消去した文字を保存バッファーに格納します。カーソルが行の終わりにある場合は、現在の行に次の行をつなぎます (つまり、改行を削除します)。 |
Delete |
前の 1 文字を削除します。 |
Backspace |
前の 1 文字を削除します。 |
Control-H |
前の 1 文字を削除します。 |
Escape H |
語の先頭からカーソルの直前まで消去し、消去した文字を保存バッファーに格納します。 |
Control-W |
語の先頭からカーソルの直前まで消去し、消去した文字を保存バッファーに格納します。 |
Control-D |
次の 1 文字を消去します。 |
Escape D |
カーソルから語の終わりまで消去し、消去した文字を保存バッファーに格納します。 |
Control-U |
1 行全体を消去し、消去した文字を保存バッファーに格納します。 |
Control-Y |
保存バッファーの内容をカーソルの前に挿入します。 |
Control-Q |
次の文字の前に引用符を付けます (つまり、制御文字を挿入できます)。 |
Control-R |
1 行を入力し直します。 |
Control-L |
編集バッファーの内容全体を表示します。 |
Control-C |
エディタを終了し、OpenBoot コマンドインタプリタに戻ります。一時バッファーは保存されていますが、スクリプトには戻されません。(後で nvstore を使用して書いて戻してください。) |
次の手順で、スクリプトコマンドファイルを作成し起動してください。
エディタのコマンドを使用してスクリプトの内容を編集します。
変更を保存するために nvstore をまだ入力していない場合、nvrun と入力して一時編集バッファーの内容を実行できます。
nvstore と入力して変更結果を保存します。
次のように入力して、スクリプトを有効にします。
setenv use-nvramrc? true |
reset-all と入力してシステムをリセットしてからスクリプトの内容を実行するか、次のように入力してスクリプトの内容を直接実行します。
nvramrc evaluate |
次の例で、nvramrc 内に単純なコロン定義を作成する方法を示します。
ok nvedit 0: : hello ( -- ) 1: ." Hello, world. " cr 2: ; 3: ^C ok nvstore ok setenv use-nvramrc? true ok reset-all ... ok hello Hello, world. ok |
上の例で nvedit の行番号のプロンプト (0:、1:、2:、3:) に注意してください。これらのプロンプトはシステムによって異なることがあります。