loader(8) FreeBSD 一般コマンドマニュアル

loader

前のページ 上に戻る 次のページ

loader


     る、最終段です。 IA32 (i386) アーキテクチャでは、これは BTX クライアント
     です。 libstand(3) に静的にリンクされ、通常はディレクトリ /boot に置かれ
     ます。

     また、作業自動化、事前設定、回復処理の補助に使用可能な、スクリプト言語を
     提供します。このスクリプト言語はおおまかに 2 つの主たる部分に分類されま
     す。小さな方は、通常のユーザが直接使用するようデザインされたコマンドの集
     合で、歴史的な事情により「組み込みコマンド」と呼ばれます。これらのコマン
     ドを提供した背景には、主としてユーザの使い勝手を改善する目的があります。
     大きな部品は ANS Forth 互換の Forth インタプリタであり、 John Sadler の
     ficl をベースにしています。

     初期化において、 loader はコンソールを検出して console 変数を設定します。
     直前のブートステージにシリアルコンソールを使用した場合には、この変数をシ
     リアルコンソール (``comconsole'') に設定します。その後、デバイスをプロー
     ブし、 currdevloaddev を設定し、 LINES を 24 に設定します。次に FICL
     が初期化され、組み込み語が語彙に追加され、存在する場合には /boot/boot.4th
     が処理されます。このファイルが読み込まれるまで、ディスクの交換はできませ
     ん。 loader が FICL とともに使用する内部インタプリタは interpret に設定さ
     れます。これは FICL のデフォルトです。この後、使用可能な場合
     /boot/loader.rc が処理され、そうでない場合には歴史的な理由で
     /boot/boot.conf が読み込まれます。これらのファイルは include コマンドを介
     して処理されます。このコマンドは、処理前にファイル内容すべてをメモリに読
     み込みますので、ディスク交換が可能となります。

     この時点で、 autoboot が試されていない場合でかつ autoboot_delay が ``NO''
     (大文字小文字は区別しません) に設定されていない場合、 autoboot が試されま
     す。システムがこの時点まで到達した場合、 prompt が設定され、 loader は対
     話モードになります。


組み込みコマンド

     loader の組み込みコマンドは、パラメータをコマンドラインから受け取ります。
     現在、スクリプトからの呼び出し方法は、文字列上で evaluate を使用すること
     だけです。エラー状態が発生すると、 ANS Forth 例外操作語でインタセプト可能
     な例外が生成されます。インタセプトされない場合、エラーメッセージが表示さ
     れ、インタプリタの状態がリセットされます。これにより、スタックが空になり
     インタプリタのモードが元に戻ります。

     使用可能な組み込みコマンドは次の通りです:

     autoboot [seconds]
             ユーザが割り込まない場合には、指定した秒数の後にシステムのブート
             ストラップへ進みます。キーが押されて割り込まれるまで、カウントダ
             ウンプロンプトを表示し、ユーザに対してシステムがブートするところ
             であることを警告します。必要であれば、最初にカーネルがロードされ
             ます。デフォルトは 10 秒です。

     bcachestat
             ディスクキャッシュの使用状況を表示します。デバッグのためだけにあ
             ります。

     boot
     heap    メモリ使用状況が表示されます。デバッグ目的のためだけにあります。

     help [topic [subtopic]]
             ヘルプメッセージを /boot/loader.help から読み込んで表示します。特
             殊トピック index は、使用可能なトピックを表示します。

     include file [file ...]
             スクリプトファイルを処理します。各ファイルは、順番がまわって来た
             ところで完全にメモリに読み込まれ、各行がコマンドラインインタプリ
             タに渡されます。インタプリタがエラーを返すと、他のファイルは読み
             込まずに include コマンドは即時に異常終了し、自身にエラーを返しま
             す ( エラー参照)。

     load [-t type] file ...
             カーネル、カーネルローダブルモジュール (kld)、内容を問わず type
             とタグ付けされているファイルのいずれかをロードします。カーネルと
             モジュールは、a.out または elf のどちらの形式であってもかまいませ
             ん。ロードされるファイルの後で渡される引数は、そのファイルに対す
             る引数として渡されます。現在のところ、これはカーネルに対しては動
             作しないことに注意してください。

     ls [-l] [path]
             ディレクトリ path 、または path を指定しなかった場合にはルート
             ディレクトリのファイル一覧を表示します。 -l を指定すると、ファイ
             ルの大きさも表示します。

     lsdev [-v]
             モジュールのロード元となりうるデバイスをすべて表示します。 -v を
             指定すると、更なる詳細を表示します。

     lsmod [-v]
             ロード済のモジュールを表示します。 -v を指定すると、更なる詳細を
             表示します。

     more file [file ...]
             LINES 行を表示するごとに停止しながら、指定したファイルを表示しま
             す。

     pnpscan [-v]
             プラグアンドプレイデバイスをスキャンします。現在のところ動作しま
             せん。

     read [-t seconds] [-p prompt] [variable]
             入力行を端末から読み込み、 variable が指定された場合にはこれに読
             み込み結果を格納します。タイムアウトは -t で指定可能ですが、これ
             は最初に押されるキーにより打ち消されます。プロンプトもまた -p フ
             ラグにより表示可能です。

     reboot  即時にシステムをリブートします。

     set variable
     set variable=value
     loader は実際のところ、異なった 2 種類の `環境' 変数を持ちます。それ
     は、ANS Forth の 環境問い合わせと、別の空間であり組み込みコマンドが使用す
     る環境変数です。後者は Forth の語としては直接使用できません。この節で説明
     するのは、後者です。

     環境変数の設定および設定解除は、 setunset の組み込みコマンドを介して
     行います。これらの値は、 show 組み込みコマンドを使用して対話的に検査でき
     ます。これらの値は、 組み込みパーザで説明する方法でもまたアクセス可能で
     す。

     この環境変数は、システムブート後にシェルに継承されないことに注意してくだ
     さい。

     数個の変数が loader により自動的に設定されます。他の変数は、 loader また
     はブート時のカーネル動作に影響し得ます。これらのうち値を要求するものがあ
     る一方、設定されるだけで動作を定義するものもあります。これらを以下に示し
     ます。

     autoboot_delay
               autoboot がブート前に待つ秒数です。この変数が定義されていない場
               合、 autoboot はデフォルトの 10 秒になります。

               ``NO'' に設定すると、 /boot/loader.rc の処理の後に autoboot を
               自動的には試みなくなります。しかし、明示的に autoboot を指定す
               ると、デフォルトの 10 秒の遅延の後に通常通り処理されます。

     boot_askname
               カーネルブート時にルートデバイス名をユーザに尋ねるように、カー
               ネルに指示します。

     boot_ddb  ブート時に初期化に進むのではなく DDB デバッガを開始するように、
               カーネルに指示します。

     boot_gdb  gdb リモートモードを、カーネルデバッガのデフォルトとして選択し
               ます。

     boot_single
               カーネルがマルチユーザスタートアップを開始することを防ぎ、カー
               ネルがデバイスプローブを完了したときにはシングルユーザモードに
               なります。

     boot_userconfig
               カーネルブート時にカーネルの対話的なデバイス設定プログラムを実
               行するよう要求します。

     boot_verbose
               この変数を設定すると、ブートフェーズ中に追加のデバッグ情報をカ
               ーネルが表示します。

     bootfile  セミコロンで区切った検索パスのリストであり、ここからブート可能
               なカーネルを探します。デフォルトは ````kernel;kernel.old'''' で
               す。
               ます。

     LINES     画面上の行数を定義します。ページャが使用します。

     module_path
               モジュールを検索するディレクトリのリストを設定します。モジュー
               ル名は、load コマンドまたは依存関係により暗黙的に指定されます。
               この変数のデフォルト値は ``/;/boot;/modules'' です。

     num_ide_disks
               IDE ディスクの数を設定します。これは、ブート時にルートディスク
               を見つけることに関する問題への対処です。 root_disk_unit により
               価値が低下しています。

     prompt    loader のプロンプトの値です。デフォルトは ``${currdev}>'' で
               す。

     root_disk_unit
               ルートディスクのディスクユニット番号を検出するコードが混乱する
               場合、この変数を設定することでユニット番号を強制可能です。混乱
               するのは、例えば SCSI と IDE のディスクを両方持つ場合や、 IDE
               ディスクの並びに隙間がある場合 (プライマリスレーブが無い場合な
               ど) です。

     rootdev   デフォルトでは、カーネルブート時にルートファイルシステムの設定
               には currdev が使用されます。これは rootdev を明示的に設定する
               ことによりオーバライド可能です。

     他の変数を使用することにより、カーネルの調整可能なパラメータをオーバライ
     ド可能です。次の調整可能な変数が使用可能です:

     kern.ipc.nmbclusters
                   割り当てられる mbuf クラスタ数を設定します。カーネルコンパ
                   イル時に決定されたデフォルト値より小さくは、設定できませ
                   ん。 NMBCLUSTERS を変更します。

     kern.vm.kmem.size
                   カーネルメモリの大きさ (バイト) を設定します。カーネルコン
                   パイル時に決定された値に、完全に優先します。 VM_KMEM_SIZE
                   を変更します。

     machdep.pccard.pcic_irq
                   通常時に PCCARD コントローラに割り当てられる IRQ をオーバラ
                   イドします。典型的には、最初に利用可能な割り込みが割り当て
                   られてしまい、他のハードウェアと衝突してしまうかもしれませ
                   ん。この値を 0 に設定すると、割り込みは割り当てられず、コン
                   トローラはポーリングモードのみで動作します。

     net.inet.tcp.tcbhashsize
                   TCBHASHSIZE のコンパイル時の設定値をオーバライドするか、デ
                   フォルトの 512 にプリセットします。 2 のべき乗である必要が
                   あります。

          o   \v は ASCII の 11 に変換されます。

          o   \z は単にスキップされます。 ``\0xf\z\0xf'' のように使用すると便
              利です。

          o   \0xN と \0xNN は 16 進数の N と NN に変換されます。

          o   \NNN は 8 進数 NNN の ASCII 文字に変換されます。

          o   \" , \' , \$ は、これらの文字をエスケープし、後述するステップ 2
              における特殊な意味を与えられないようにします。

          o   \\ は単一の \ に変換されます。

          o   他の場合、バックスラッシュは単に取り除かれます。

     2.   エスケープされていないクォートまたはダブルクォートの間のすべての文字
          列は、後続するステップにおいて単一の語として扱われます。

     3.   $VARIABLE または ${VARIABLE} は、環境変数 VARIABLE の値に変換されま
          す。

     4.   空白で区切られた複数の引数を、呼び出した組み込みコマンドへ渡します。
          空白は \\ を使用することによりエスケープ可能です。

     解析ルールには例外があり、これは 組み込み語と FORTH で説明します。

   B>組B>みB>込B>みB>語B>と FORTH
     すべての組み込み語は、状態を意識する即時実行語です。インタプリトされる
     と、これらは前述の通りに振舞います。一方コンパイルされると、引数をコマン
     ドラインからではなくスタックから取り出します。

     コンパイルされると、実行時に組み込み語は、スタック上で次のパラメータを見
     付けられると期待します:
           addrN lenN ... addr2 len2 addr1 len1 N
     ここで addrX lenX は文字列であり、組み込み語の引数として解釈されるコマン
     ドラインを構成します。内部的には、おのおのの間に空白を狭んで、これらの文
     字列は 1 から N まで結合されます。

     引数が渡されない場合、組み込み語が引数を受け付けない場合であっても、単一
     の 0 を渡す 必要があります。

     この動作には利点がありますが、それ自身にはトレードオフがあります。組み込
     み語の実行トークンが ( ' または ['] を通して) 得られて、 catch または
     execute に渡された場合、組み込み語の動作は catch または execute が実行さ
     れるときの システムの状態に依存します !  これは、例外を扱いたいまたは扱う
     必要があるプログラムにとっては、特に悩ましいものです。この場合、代理
     (proxy) を使用することをお勧めします。例えば次のようにします:
           : (boot) boot;


FICL

     FICL は C で記述された Forth インタプリタであり、 C の関数などとして呼び

     .ver

     -roll

     2constant

     >name

     body>

     compare        This is the STRING word set's compare.

     compile-only

     endif

     forget-wid

     parse-word

     sliteral       This is the STRING word set's sliteral.

     wid-set-super

     w@

     w!

     x.

     empty

     cell-

     -rot

   FREEBSD B>追B>加B>語

     $ (--)    最初に入力バッファを表示した後、入力バッファの残りを評価しま
               す。

     % (--)    catch 例外ガード下の、入力バッファの残りを評価します。

     .#        .  と同様に動作しますが、後続の空白を表示しません。

     fopen (addr len -- fd)
               ファイルをオープンします。ファイル記述子を返します。失敗時には
               -1 を返します。

     fclose (fd --)
               ファイルをクローズします。
               の終了の場合には -1 を返します。

     heap      ディレクトリヒープ中に残された空間を、セル数の単位で返します。
               これは、動的なメモリ割り当ての意味で使われるヒープとは無関係で
               す。

     inb (port -- char)
               ポートからバイトを読み込みます。

     key (-- char)
               コンソールから 1 文字読み込みます。

     key? (-- flag)
               コンソールから読み込み可能な文字がある場合、 B>真を返します。

     ms (u --)
               u マイクロ秒待ちます。

     outb (port char --)
               ポートへバイトを書き込みます。

     seconds (-- u)
               深夜 0 時からの秒数を返します。

     tib> (-- addr len)
               入力バッファの残りを、スタック上の文字列として返します。

     trace! (flag --)
               トレースを有効または無効にします。 catch とともには動作しませ
               ん。

   FREEBSD B>でB>定B>義B>さB>れB>るB>環B>境B>問B>いB>合B>わB>せ

     arch-i386
             アーキテクチャが IA32 の場合 B>真です。

     arch-alpha
             アーキテクチャが AXP の場合 B>真です。

     FreeBSD_version
             コンパイル時の FreeBSD バージョンです。

     loader_version
             loader のバージョンです。

   B>シB>スB>テB>ムB>文B>書


関連ファイル

     /boot/loader                loader 自身。
     /boot/boot.4th              追加の FICL の初期化。
     /boot/boot.conf             loader のブートストラップスクリプト。価値が低
                                 下しています。

     にカーネルをロードする必要があることに注意してください。

           load kernel
           load -t userconfig_script /boot/kernel.conf

     カーネルと起動画面をロードし、5 秒以内に自動ブートします。

           load kernel
           load splash_bmp
           load -t splash_image_data /boot/chuckrulez.bmp
           autoboot 5

     ルートデバイスのディスクユニットを 2 に設定し、ブートします。 IDE ディス
     クが 2 台のシステムで、 2 台目の IDE が wd1 ではなく wd2 に固定されている
     システムにおいて、必要となるでしょう。

           set root_disk_unit=2
           boot /kernel

     次を参照してください:

     /boot/loader.4th                 追加の組み込み的な語について。

     /boot/support.4th                loader.conf が処理する語について。

     /usr/share/examples/bootforth/   分類された使用例。


エラー

     次の値を loader は返します:

           100    組み込みコマンド処理において任意のタイプのエラーが発生しまし
                  た。

           -1     Abort が実行されました。

           -2     Abort" が実行されました。

           -56    Quit が実行されました。

           -256   インタプリトするテキストがありません。

           -257   成功するためには更なるテキストが必要です -- 次の実行で終了し
                  ます。

           -258   Bye が実行されました。

           -259   未定義エラー。


関連項目

     libstand(3), loader.conf(5), boot(8), btxld(8)


規格


     FICL は John Sadler <john_sadler@alum.mit.edu> が記述しました。


バグ

     expectaccept の語は、コンソールからではなく入力バッファから読み込みま
     す。後者については修正されますが、前者は修正されません。

FreeBSD 4.4                     March 14, 1999                     FreeBSD 4.4

ABELNET VPSサービス