この章では、OpenBoot ファームウェアを使用して行う最も一般的な作業について説明します。次のような作業があります。
システムの起動
診断の実行
システム情報の表示
システムのリセット
OpenBoot ファームウェアの最も重要な機能はシステムを起動することです。起動とは、オペレーティングシステムなどのスタンドアロンプログラムを読み込み、実行するプロセスのことです。起動は、自動的にも、ユーザーインタフェースでコマンドを入力しても開始できます。
起動処理は多数のシステム変数によって制御されます (システム変数については、第 3 章「システム変数の設定」で詳細に説明します)。起動処理に関係するシステム変数を次に示します。
auto-boot?
この変数は、システムをリセットまたは電源投入後にシステムを自動的に起動させるかどうかを指定します。この変数は一般的に true です。
上記の各システム変数の値に基づいて、起動処理はさまざまな形態で進められます。次にいくつかの例を示します。
auto-boot? が true の場合は、OpenBoot が診断モードであるかどうかによって、マシンはデフォルトの起動デバイスか、診断起動デバイスから起動します。
auto-boot? が false の場合は、マシンはシステムを起動しないで、OpenBoot のユーザーインタフェースで停止します。システムを起動するには、次のいずれかを実行します。
引数をまったく指定しないで boot コマンドを入力します。マシンは、デフォルト起動引数を使用して、デフォルトの起動デバイスから起動します。
起動デバイスを明示的に指定して boot コマンドを入力します。マシンは、指定した引数を使用して、デフォルトの起動デバイスから起動します。
起動引数を明示的に指定して boot コマンドを入力します。マシンは、指定した引数を使用して、デフォルトの起動デバイスから起動します。
起動デバイスと起動引数を明示的に指定して boot コマンドを入力します。マシンは、指定した引数を使用して、指定したデバイスから起動します。
一般的に、auto-boot? は true、boot-command は boot に設定されており、OpenBoot は診断モードにはなりません。したがって、システムに最初に電源を投入したり、システムをリセットしたときは、システムは、boot-device によって記述されたデバイスから、boot-file によって記述された引数を使用してプログラムを読み込み、実行します。
auto-boot? が false のときにデフォルトプログラムを起動する場合は、ok プロンプトで boot と入力します。
起動はクライアントプログラムを読み込み実行するプロセスです。クライアントプログラムは、通常はオペレーティングシステムまたはオペレーティングシステムのローダプログラムですが、boot を使用して診断などその他の種類のプログラムを読み込み、実行することもできます。(オペレーティングシステム以外のプログラムの読み込みについての詳細は、第 5 章「プログラムの読み込みと実行」を参照してください。
起動は、普通は、上記で説明した各システム変数の内容値に基づいて自動的に行われますが、ユーザーインタフェースからも開始できます。
OpenBoot は起動処理で次に示す手順を実行します。
最後のリセット以降にクライアントプログラムが実行されている場合は、OpenBoot ファームウェアがマシンをリセットする場合があります。(リセットするかどうかは実装によって決まります。)
boot コマンド行を読み込んで、使用する起動デバイスと起動引数を知ることによりデバイスが選択されます。起動デバイスや起動引数値は、boot コマンドの形式によってはシステム変数から取り出されます。
デバイスツリーの /chosen ノードの bootpath、bootargs 特性に選択した値が設定されます。
選択されたプログラムが、選択したデバイスのタイプによって決まるプロトコルを使用してメモリーに読み込まれます。たとえば、ディスク起動の場合はディスクの先頭から決まったブロック数が読み込まれるのに対して、テープ起動では特定のテープファイルが読み込まれます。
読み込まれたプログラムが実行されます。プログラムの動作は、さらに、(存在する場合) 選択するシステム変数に設定されていた引数文字列、コマンド行で boot コマンドに渡される引数文字列によっても制御できます。
多くの場合、起動処理によって読み込み、実行されるプログラムは二次起動プログラムであり、それはさらに別のプログラムを読み込みすることを目的とします。この二次起動プログラムは、OpenBoot が使用するものとは異なるプロトコルを使用して二次起動プログラムを読み込むことができます。たとえば、OpenBoot は簡易ファイル転送プロトコル (TFTP) を使用して二次起動プログラムを読み込むこともでき、さらに読み込まれたた二次起動プログラムが今度はネットワークファイルシステム (NFS) を使用してオペレーティングシステムを読み込むこともできます。
一般的な二次起動プログラムには次の形式の引数を指定できます。
filename -flags
ここで、filename はオペレーティングシステムを格納しているファイルの名前であり、-flags は、二次起動プログラム、オペレーティングシステム、またはそれらの両方の起動フェーズの詳細制御用のオプションのリストです。すぐ次の boot コマンドのテンプレートに示すように、OpenBoot はそのようなテキストをすべて OpenBoot そのものには特別な意味をもたない、1 つの隠された引数文字列として取り扱うということ、つまり、引数文字列は変更されないでそのまま指定されたプログラムに渡されるということに注意してください。
boot コマンドの形式は次のとおりです。
ok boot [device-specifier] [arguments] |
boot コマンドの省略可能な変数を 表 2-1で説明します。
表 2-1 boot コマンドの省略可能な変数
変数名 |
説明 |
---|---|
[device-specifier] |
起動デバイスの名前 (フルパス名または devalias)。一般的には次のような値が使用されます。 cdrom (CD-ROM ドライブ ) disk (ハードディスク) floppy (3.5 インチフロッピーディスク) net ( Ethernet ) tape (SCSI テープ) device-specifier を指定しないときに、 diagnostic-mode? から false が返された場合は、 boot は boot-device システム変数によって指定されるデバイスを使用します。 device-specifier を指定しないときに、 diagnostic-mode? から true が返された場合は、 boot は diag-device システム変数によって指定されるデバイスを使用します。 |
[arguments] |
起動するプログラム (たとえば stand/diag) の名前と任意のプログラム引数。 arguments を指定しないときに、diagnostic-mode? から false が返された場合は、 boot は boot-file システム変数によって指定されるファイルを使用します。 arguments を指定しないときに、 diagnostic-mode? から true が返された場合は、 boot は diag-file システム変数によって指定されるファイルを使用します。 |
デバイス名を必要とする大部分の (boot や test などの) コマンドには、フルデバイス名でもデバイスの別名でも指定できます。本書では、device-specifier (デバイス指定子) という用語は、デバイスパス名でもデバイスの別名でも指定できるということを意味しています。
デバイスの別名は構文的には arguments と区別できないので、OpenBoot はこのあいまいさを次のように解決します。
コマンド行上の boot の後の空白文字で区切られた語の最初の文字が / である場合は、その語はデバイスパス、つまり device-specifier です。この device-specifier の右側のテキストはすべて arguments になります。
上記とは異なって、空白文字で区切られた語の最初の文字が / ではなくて、かつ既存のデバイスの別名と一致する場合は、その語は device-specifier です。この device-specifier の右側のテキストはすべて arguments になります。
上記のどちらとも異なる場合は、該当するデフォルトの起動デバイスが使用され、boot の右側のテキストはすべて arguments になります。
したがって、boot コマンド行には次に示すような書式が可能です。
ok boot |
この書式の場合は、boot はデフォルトの起動デバイスからデフォルトの起動引数によって指定されるプログラムを読み込み、実行します。
ok boot device-specifier |
boot の引数が 1 つだけであって、その最初の文字が / であるか、または定義されている devalias の名前である場合は、boot はその引数をデバイス指定子として使用します。つまり、boot は指定されたデバイスからデフォルト起動引数によって指定されるプログラムを読み込み、実行します。
たとえば、明示的にディスクから起動するには、次のように入力します。
ok boot disk |
明示的にネットワークから起動するには、次のように入力します。
ok boot net |
boot の引数が 1 つだけであって、かつその最初の文字が / でもなく、また定義されている devalias の名前でもない場合は、boot はその後のテキストをすべて boot の引数として使用します。
ok boot arguments |
boot はデフォルトの起動デバイスから引数によって指定されるプログラムを読み込み、実行します。
ok boot device-specifier arguments |
空白文字で区切られた引数が最低 2 つはあって、かつそれらの最初の引数の最初の文字が / であるか、または定義されている devalias の名前である場合は、boot は最初の引数をデバイス指定子として使用し、その後のテキストをすべて boot の引数として使用します。つまり、boot は指定されたデバイスから引数によって指定されるプログラムを読み込み、実行します。
上に示したすべての場合について、boot はそれが使用するデバイスを /chosenノードの bootpath 特性に記録します。boot はさらに、それが使用する引数も /chosen ノードの bootargs 特性に記録します。
デバイスの別名定義はシステムごとに異なります。第 1 章「概要」で説明している devalias を使用してシステムの別名の定義を調べてください。
いくつかの診断ルーチンがユーザーインタフェースで使用できます。これらのオンボードテストでは、ネットワークコントローラ、フロッピーディスクシステム、メモリー、装着されている SBus カード、SCSI デバイス、システムクロックなどのデバイスの機能を確認できます。
diagnostic-mode? から返される値は、次に示す設定を行います。
(デバイスとファイルがこれらのコマンドの引数として明示的に指定されなかった場合) boot、load コマンドが使用するデバイスとファイルを選択します。
電源投入時に自己診断テストで実行される診断の範囲と (実装によって異なる) 生成される診断メッセージ数を設定します。
OpenBoot は診断モードになり、次の条件のうち少なくとも 1 つが満たされた場合は、diagnostic-mode? コマンドから true が返されます。
(存在する場合) マシンの診断スイッチが「オン」である。
別のシステム依存のインジケータが拡張診断を要求している。
OpenBoot が診断モードのときは、diag-device の値は boot コマンドの「デフォルトの起動デバイス」として使用され、diag-file の値は「デフォルトの起動引数」として使用されます。
OpenBoot が診断モードでないときは、boot-device の値は boot コマンドの「デフォルトの起動デバイス」 として使用され、boot-file の値は「デフォルトの起動引数」として使用されます。
表 2-2に診断テスト用コマンドの一覧を示します。これらのテストは OpenBoot で実装していないことがあります。
表 2-2 診断テストコマンド
コマンド |
説明 |
---|---|
SCSI バスに接続されているデバイスを確認します。 |
|
指定したデバイスの自己診断テスト を実行します。例を示します。 |
|
watch-clock |
時計機能をテストします。 |
watch-net |
ネットワークの接続を監視します。 |
SCSI バスに接続されているデバイスの機能を確認するには、次のように入力します。
ok probe-scsi Target 1 Unit 0 Disk SEAGATE ST1480 SUN04246266 Copyright (C) 1991 Seagate All rights reserved Target 3 Unit 0 Disk SEAGATE ST1480 SUN04245826 Copyright (C) 1991 Seagate All rights reserved ok |
応答は SCSI バスに接続されているデバイスによって異なります。
取り付けられている 1 つのデバイスをテストするには、次のように入力します。
ok test device-specifier |
一般的に、メッセージが何も表示されなければテストは成功です。
多くのデバイスでは、このテストを実行するために、システムの diag-switch? パラメタを true にしておく必要があります。
フロッピーディスクドライブのテストは、フロッピーディスクドライブが正しく機能するかどうかを調べます。このテストを実行するには、フロッピーディスクドライブにフォーマット済みの高密度 (HD) ディスクをセットしておかなければなりません。
フロッピーディスクドライブをテストするには、次のように入力します。
ok test floppy Testing floppy disk system. A formatted disk should be in the drive. Test succeeded. ok |
一部の OpenBoot システムにはこのテストワードがありません。
ソフトウェアによる取り出しが可能なシステムのドライブからフロッピーディスクを取り出すには、次のように入力します。
ok eject-floppy ok |
メモリーをテストするには、次のように入力します。
ok test /memory Testing 16 megs of memory at addr 4000000 11 ok |
一部の OpenBoot システムにはこのテストワードはありません。
上の例で、最初の数値 (4000000) はテストの基底アドレスであり、その次の数値 (11) はテストされる M バイト数です。
ok watch-clock Watching the 'seconds' register of the real time clock chip. It should be ticking once a second. Type any key to stop. 1 ok |
数値が 1 秒ごとに 1 つずつ増えていきます。テストを停止するには任意のキーを押します。
一部の OpenBoot システムにはこのテストワードがありません。
ネットワークコントローラをテストするには、次のように入力します。
ok test net Internal Loopback test - (結果) External Loopback test - (結果) ok |
システムはテストの結果を示すメッセージを応答します。
特定のネットワークコントローラとシステムが接続しているネットワークのタイプとによって、各種レベルのテストが可能です。それらのテストによっては、ネットワークインタフェースをネットワークに接続することが必要な場合があります。
ok watch-net Internal Loopback test - succeeded External Loopback test - succeeded Looking for Ethernet packets. '.' is a good packet. 'X' is a bad packet. Type any key to stop ....................X.....X............... ok |
システムはネットワークトラフィックを監視し、エラーのないパケットを受け取るたびに . を、また、ネットワークハードウェアインタフェースによって検出できるエラーがあるパケットを受け取るたびに X をそれぞれ表示します。
一部の OpenBoot システムにはこのテストワードがありません。
ユーザーインタフェースはシステム情報を表示するコマンドをいくつか備えています。banner は ObenBoot のすべての実装で提供されます。その他のコマンドについては、一部の実装で拡張機能として提供されます。それらのコマンドを表 2-3に示します。これらのコマンドでは、システムバナー、Ethernet コントローラの Ethernet アドレス、ID ROM の内容、OpenBoot ファームウェアのバージョン番号を表示できます。(ID ROM 内容は、シリアル番号、製造年月日、マシンに割り当てられている Ethernet アドレスを含む各マシン固有の情報です。)
表 2-3 システム情報表示コマンド
コマンド |
説明 |
---|---|
電源投入時のバナーを表示します。 |
|
取り付けられ、プローブされる SBus デバイスのリストを表示します。 |
|
現在の Ethernet アドレスを表示します。 |
|
ID PROM の内容をフォーマットされた形式で表示します。 |
|
プロセッサに依存するトラップタイプのリストを表示します。 |
|
起動 PROM のバージョンと日付を表示します。 |
|
.speed |
プロセッサおよびバスの速度を表示します。 |
表 1-3のデバイスツリー表示コマンドも参照してください。
場合により、システムをリセットすることが必要になることがあります。
reset-all コマンドはシステム全体をリセットします。これは、電源再投入 (パワーサイクル) を行うのと同じです。
ok reset-all |
リセット時にパワーオン自己診断テスト (POST) および初期化手続きを実行するようにシステムを設定してある場合は、このコマンドを起動すると、それらの手続きの実行が開始されます。(システムによっては、電源投入後に POST だけが実行されます。) POST が終了すると、電源再投入後と同様に、システムは自動的に起動するか、ユーザーインタフェースに入ります。