FreeBSD 日本語マニュアル検索 (jman/japropos/jwhatis)


日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。

4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.3-RELEASE-K, 13.0-RELEASE-K から 13.2-RELEASE-K は、全翻訳済み)

13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。



検索コマンド: man apropos whatis
コマンド/キーワード:
日本語マニュアル RELEASE :
セクション:
Table of Contents
名称 | 解説 | 組み込みコマンド | FICL | セキュリティ | 関連ファイル | 使用例 | エラー | 関連項目 | 規格 | 歴史 | 作者 | バグ
LOADER(8)              FreeBSD システム管理者マニュアル              LOADER(8)

名称
     loader -- カーネルのブートストラップの最終段階

解説
     loader と呼ばれるプログラムは、FreeBSD のカーネルのブートストラッププロセ
     スの最終的な段階です。IA32 (i386) アーキテクチャでは、それは、BTX クライ
     アントです。それは、libstand(3) に静的にリンクされ、通常、ディレクトリ
     /boot に置かれます。

     それは、タスク、事前の設定、または復旧手続の補助を自動化するために使用す
     ることができるスクリプト言語を提供しています。このスクリプト言語は、2 つ
     の主要な要素におおまかに分割されます。小さいものは、歴史的な理由のために
     "組み込みコマンド" と呼ばれる通常のユーザによって直接使用するために設計さ
     れたコマンドの集合です。これらのコマンドの背景の主要な動因は、使い勝手の
     良さです。大きな要素は、John Sadler による FICL に基づく ANS Forth 互換の
     Forth インタプリタです。

     初期設定の間に、loader は、コンソールをプローブし、console 変数を設定する
     か、または以前のブート段階がそれを使用したなら、それを、シリアルコンソー
     ル (``comconsole'') に設定します。複数のコンソールが選択されるなら、それ
     らは、空白によって区切られてリストされます。次に、デバイスは、プローブさ
     れ、currdevloaddev が設定され、LINES は、24 に設定されます。次に、
     FICL は、初期設定され、組み込みの単語は、その語彙に追加され、それが存在す
     るなら、/boot/boot.4th が、処理されます。そのファイルが読み込まれている間
     に、ディスクの切り替えはできません。次に、FICL で使用される内部のインタプ
     リタの loader は、FICL のデフォルトである、interpret (解釈) するために設
     定されます。その後に、利用可能であるなら、/boot/loader.rc が処理されま
     す。これらのファイルは、ディスクに可能な変更を行い、それらを処理する前に
     メモリにそれらのすべてを読み込む include コマンドを通じて処理されます。

     この時点で、autoboot が試みられていなかったなら、autoboot_delay が、(大文
     字と小文字を区別せずに) ``NO'' に設定されないなら、autoboot が試みられま
     す。システムがこの時点を過ぎるなら、prompt が、設定され、loader は、対話
     型モードとなります。歴史的に autoboot_delay が ``0'' に設定されるときでさ
     え、カーネルとモジュールがロードされている間にコンソールのあるキーを押す
     ことによって、ユーザは、autoboot プロセスを割り込みすることができることに
     注意してください。ある場合には、そのようなふるまいが望ましくないかもしれ
     ません、それを防ぐには、autoboot_delay に ``-1'' を設定し、この場合に、
     loader は、autoboot が失敗した場合にだけ、対話モードを保証します。

組み込みコマンド
     loader において、組み込みコマンドは、コマンド行からパラメータを取ります。
     現在、スクリプトからそれらを呼び出す唯一の方法は、文字列で evaluate を使
     用することです。エラー条件が生じるなら、例外が、発生し、ANS Forth 例外操
     作単語を使用してインタセプトすることができます。インタセプトされないな
     ら、エラーメッセージが表示され、インタプリタの状態は、スタックを空にし、
     インタプリットモードを復元してリセットされます。

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

     autoboot [seconds [prompt]]
             ユーザによって割り込まれないなら、多くの秒の後にシステムのブート
             ストラップに進みます。キーを押すことによって割り込まれない限り、
             システムがまさにブートされようとしているユーザに警告しているカウ
             ントダウンプロンプトを表示します。カーネルは、必要であるなら、最
             初にロードされます。デフォルトは、10 秒です。

     bcachestat
             ディスクキャッシュ使用法に関する統計値を表示します。デバッグだけ
             のためです。

     boot
     boot kernelname [...]
     boot -flag ...
             必要であるなら、カーネルをロードして、システムのブートストラップ
             に直ちに進みます。あらゆるフラグまたは引数は、カーネルに渡されま
             すが、カーネル名が提供されるなら、それらは、カーネル名に先行しな
             ければなりません。

             警告: loader.4th(8) がロードされるなら、この組み込みの振る舞い
             は、変更されます。

     echo [-n] [<message>]
             画面にテキストを表示します。-n が指定されないなら、改行が印刷 (表
             示) されます。

     heap    メモリ使用の統計値を表示します。デバッグの目的だけのためです。

     help [topic [subtopic]]
             /boot/loader.help から読み込むヘルプメッセージを表示します。特別
             なトピック index は、利用可能なトピックをリストしています。

     include file [file ...]
             スクリプトファイルを処理します。各ファイルは、次々と完全にメモリ
             に読み込まれ、次に、その行のそれぞれは、コマンド行インタプリタに
             渡されます。何かのエラーがインタプリタによって返されるなら、
             include コマンドは、他のファイルを読み込まずに、直ちにアボート
             し、エラー自体を返します (「エラー」を参照)。

     load [-t type] file ...
             カーネル、カーネルローダブルモジュール (kld)、ディスクイメージ、
             またはタイプ type であるようなタグ付けされた不透明な内容のファイ
             ルをロードします。カーネルとモジュールは、a.out または ELF 形式の
             いずれかでありえます。ロードされるファイルの名前の後に渡されるあ
             らゆる引数は、そのファイルに引数として渡されます。カーネルに、
             ファイルに裏打ちされた md(4) ディスクを作成させるために、md_image
             タイプを使用します。これは、一時的な rootfs からブートするために
             役に立ちます。現在、引数を渡すことは、カーネルに対して動作しませ
             ん。

     load_geli [-n keyno] prov file
             与えられたプロバイダ名のための geli(8) 暗号化キーファイルをロード
             します。キーインデックスを keyno を通して指定することできるか、ま
             たは 0 をデフォルトとします。

     ls [-l] [path]
             ディレクトリ path のファイルのリスト、または path が指定されない
             なら、ルートディレクトリのファイルのリストを表示します。-l が指定
             されるなら、ファイルのサイズも表示します。

     lsdev [-v]
             ZFS プールと同様に、モジュールをロードすることができるデバイスの
             すべてを表示します。-v が指定されるなら、zpool status 出力に似て
             いる形式で ZFS プール情報を含んで、詳細が印刷 (表示) されます。

     lsmod [-v]
             ロードされたモジュールを表示します。-v が指定されるなら、詳細が表
             示されます。

     lszfs filesystem
             プールの ZFS ファイルシステムの階層構造を調査するために使用するこ
             とができる ZFS 拡張コマンド。filesystem の直接の子供をリストしま
             す。ファイルシステムの階層構造は、プールと同じ名前でファイルシス
             テムのルートにされます。

     more file [file ...]
             各 LINES ごとに表示を停止して、指定されたファイルを表示します。

     pnpscan [-v]
             プラグアンドプレイのデバイスをスキャンします。これは、現在のとこ
             ろ機能的ではありません。

     read [-t seconds] [-p prompt] [variable]
             指定されるなら、variable にそれを格納して、端末から入力の行を読み
             込みます。-t でタイムアウトを指定することができますが、最初に押さ
             れたキーでキャンセルされます。また、プロンプトは、-p フラグを通し
             て表示されます。

     reboot  直ちに、システムをリブートします。

     set variable
     set variable=value
             ローダの環境変数を設定します。

     show [variable]
             指定された変数の値、または variable が指定されないなら、すべての
             変数とそれらの値を表示します。

     unload  メモリからすべてのモジュールを削除します。

     unset variable
             環境変数から variable を削除します。

     ?       利用可能コマンドをリストします。

   組み込みの環境変数
     loader は、実際に、異なった 2 種類の `環境' 変数があります。ANS Forth の
     環境問い合わせと Forth の単語で直接利用可能ではない組み込みコマンドによっ
     て使用される空白で区切られた環境変数があります。それは、このセクションが
     カバーする後者のタイプです。

     setunset 組み込みコマンドを通して、環境変数を設定して、未設定にするこ
     とができ、show 組み込みコマンドの使用を通して対話的に調べられるそれらの値
     を持つことができます。また、「組み込みパーサ」に記述されているように、そ
     れらの値をアクセスすることができます。

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

     わずかの変数は、loader によって自動的に設定されます。他の変数は、loader
     またはブート時にカーネルの振る舞いに影響するかもしれません。いくつかのオ
     プションは、値を必要としますが、他は、単に設定されていることによって振る
     舞いを定義します。組み込み変数の両方のタイプは、以下に説明されています。

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

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

               ``0'' に設定されるなら遅延は、挿入されませんが、ユーザは、
               autoboot プロセスを割り込み、カーネルとモジュールがロードされて
               いる間にコンソールから何らかのキーを押すことによって、対話モー
               ドに入ることができます。

               ``-1'' に設定されるなら遅延は、挿入されませんが、loader は、
               autoboot がある理由で失敗した場合にだけ、対話モードを保証しま
               す。

     boot_askname
               カーネルがブートされるとき、ルートデバイスの名前のためにユーザ
               にプロンプトをだすようにカーネルに指示します。

     boot_cdrom
               CD-ROM からルートファイルシステムをマウントすることを試みるよう
               にカーネルに指示します。

     boot_ddb  ブートされるとき、初期設定を続行するのではなく、DDB デバッガを
               開始するようにカーネルに指示します。

     boot_dfltroot
               静的にコンパイルされたルートファイルシステムをマウントするよう
               にカーネルに指示します。

     boot_gdb  デフォルトでカーネルデバッガのために gdb リモートモードを選択し
               ます。

     boot_multicons
               ブートの初期にカーネルで複数のコンソールのサポートを有効にしま
               す。実行しているシステムで、conscontrol(8) ユーティリティによっ
               てコンソールの設定を操作することができます。

     boot_mute
               コンソールがミュート (音を消) されるとき、すべてのカーネルのコ
               ンソール出力は、抑制されます。実行中のシステムでは、コンソール
               のミュート状態は、conscontrol(8) ユーティリティによって操作する
               ことができます。

     boot_pause
               デバイスをプローブ (検出) している間、各行は、印刷 (出力) され
               た後に一時停止します。

     boot_serial
               内部のコンソールが存在するときにさえ、シリアルコンソールの使用
               を強制します。

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

     boot_verbose
               この変数を設定することによって、特別のデバッグ情報が、ブート
               フェーズの間にカーネルによって印刷 (表示) されます。

     bootfile  ブート可能なカーネルのためにセミコロンで区切られた検索パスのリ
               スト。デフォルトは、``kernel'' です。

     comconsole_speed
               シリアルコンソールの速度を定義します (i386 と amd64 のみ)。以前
               のブートステージがシリアルコンソールが使用中であることを示して
               いるなら、この変数は、コンソールのシリアルポートの現在の速度に
               初期化されます。そうでなければ、loader がコンパイルされたとき、
               BOOT_COMCONSOLE_SPEED 変数を使用して上書きされないなら、9600 に
               設定されます。comconsole_speed 変数の変更は、直ちに有効となりま
               す。

     comconsole_port
               コンソール UART にアクセスするために使用される基本 I/O ポートを
               定義します (i386 と amd64 のみ)。変数が設定されていないなら、
               loader の編集の間に BOOT_COMCONSOLE_PORT 変数によって上書きされ
               ないなら、想定する値は、PC ポート COM1 に対応する 0x3F8 です。
               comconsole_port 変数の設定は、コンソールの位置のためのカーネル
               へのヒントを提供するために自動的に hw.uart.console 環境変数を設
               定します。ローダコンソールは、変数 comconsole_port が設定された
               直後に、変更されます。

     comconsole_pcidev
               シリアルコンソール UART として使用される、'単純な通信' クラスの
               PCI デバイスの位置を定義します (i386 と amd64 のみ)。変数の構文
               は、'bus:device:function[:bar]' で、ここで、すべてのメンバは、
               16 進数の値を示す 0x 接頭辞も指定できますが、数値でなければなり
               ません。bar メンバは、省略可能で、もし省略されるなら、0x10 と仮
               定されます。bar は、デコードされた I/O 空間でなければなりませ
               ん。変数 comconsole_pcidev の設定は、自動的に変数
               comconsole_port を選択された bar の基本とヒント hw.uart.console
               に設定します。ローダコンソールは、変数 comconsole_pcidev が設定
               された直後に変更されます。

     console   現在のコンソールまたは (複数の) コンソールを定義します。複数の
               コンソールが、指定できます。その場合に、最初にリストされたコン
               ソールは、ユーザランドの出力のためのデフォルトのコンソールにな
               ります (例えば、init(8) から)。

     currdev   デフォルトのデバイスを選択します。デバイスの構文は、奇妙です。

     dumpdev   カーネルダンプのためのデバイスを設定します。捕獲されるブートの
               初期の段階の間に起こるカーネルパニックを許可して、rc.conf(5) か
               らの対応している dumpdev ディレクティブが処理される前に、デバイ
               スが設定されることを保証するために、これを使用することができま
               す。

     init_chroot
               init(8) を参照してください。

     init_exec
               init(8) を参照してください。

     init_path
               カーネルが初期のプロセスとして実行しようと試みるバイナリのリス
               トを設定します。最初に一致するバイナリが、使用されます。デフォ
               ルトのリストは、``/sbin/init:/sbin/oinit:/sbin/init.bak:
               /rescue/init'' です。

     init_script
               init(8) を参照してください。

     init_shell
               init(8) を参照してください。

     interpret
               Forth の現在の状態がインタプリタであるなら、値 ``OK'' がありま
               す。

     LINES     ページャによって使用される画面の行の数を定義します。

     module_path
               ロード (load) コマンドまたは依存関係によって暗黙に必要とされる
               モジュールを検索するディレクトリのリストを設定します。この変数
               のためのデフォルト値は、``/boot/kernel;/boot/modules'' です。

     num_ide_disks
               ブート時にルートディスクを見つけることでのいくつかの問題に対す
               る回避方法として IDE ディスクの数を設定します。これは,
               root_disk_unit を支持して非推奨となっています。

     prompt    loader のプロンプトの値。"{ 解釈 }" へのデフォルトは、
               ``${interpret}'' です。変数 prompt が未設定であるなら、デフォル
               トのプロンプトは、`>' です。

     root_disk_unit
               ルートディスクのためのディスクユニット番号を検出するコードが、
               例えば、SCSI と IDE ディスクの混合によって、混乱するなら、また
               は、連続してギャップがある IDE ディスク (例えば、主要なスレーブ
               がない) が、混乱するなら、ユニット番号は、この変数を設定するこ
               とによって強制することができます。

     rootdev   デフォルトで currdev の値は、カーネルがブートされるとき、ルート
               ファイルシステムを設定するために使用されます。rootdev を明示的
               に設定することによって、これを上書きすることができます。

     他の変数は、カーネルの調整変数のパラメータを上書きするために使用されま
     す。次の調整変数が利用可能です:

     efi.rt.disabled
                   適用可能であるなら、カーネルの UEFI 実行時サービスを無効に
                   します。実行時サービスは、カーネルが UEFI 環境でブートされ
                   る場合のみ、利用可能で使用されます。

     hw.physmem    システムが使用する物理的なメモリの量を制限します。デフォル
                   トで、サイズは、バイト単位ですが、k, K, m, M, gG の接尾
                   辞も受け付けられ、それぞれキロバイト、メガバイト、とギガバ
                   イトを示します。無効の接尾辞は、カーネルによって無視されて
                   いる変数の結果となります。

     hw.pci.host_start_mem, hw.acpi.host_start_mem
                   他に強制するものが無いとき、メモリの開始アドレスを制限しま
                   す。デフォルトは、0x80000000 で、少なくともメモリのサイズを
                   設定し、他のリソースと衝突しないようにすべきです。通常、PCI
                   ブリッジは、メモリ開始アドレスを強制するので、PCI ブリッジ
                   が無いシステムでのみこの変数を設定する必要があります (そし
                   て、この変数は、ブリッジがこのアドレスを強制しないときのみ
                   使用されます)。

     hw.pci.enable_io_modes
                   いくつかの BIOS によってオフのままにされるか、またはデバイ
                   スドライバによって正しく有効にされない PCI のリソースを有効
                   にします。調整変数は、デフォルトで ON (1) に設定しますが、
                   これは、いくつかの周辺機器で問題を起こすかもしれません。

     kern.maxusers
                   多くの静的に割り付けられるシステムテーブルのサイズを設定し
                   ます。この調整変数のためにどのように適切な値を選択するかの
                   説明については、tuning(7) を参照してください。設定されると
                   き、調整変数は、カーネルのコンパイル時設定ファイルで宣言さ
                   れた値を置き換えます。

     kern.ipc.nmbclusters
                   割り付けられる mbuf クラスタの数を設定します。値は、カーネ
                   ルがコンパイルされたとき、決定されたデフォルトより下に設定
                   できません。

     kern.ipc.nsfbufs
                   割り付けられる sendfile(2) のバッファの数を設定します。
                   NSFBUFS を上書きします。すべてのアーキテクチャが、そのよう
                   なバッファを使用するわけではありません。詳細については、
                   sendfile(2) を参照してください。

     kern.maxswzone
                   1MB のメタデータごとのほぼ 200MB のスワップ空間の割合で、シ
                   ステムがサポートすることができるスワップの最大の量を直接管
                   理する、スワップのメタデータを保持するために使用される KVM
                   の量を制限します。この値は、KVA 空間のバイト単位で指定され
                   ます。値が提供されないなら、システムは、システムに存在する
                   物理的なメモリの量の 8 倍に相当するスワップの量を扱うために
                   十分なメモリを割り当てます。

                   理論的な制限に到達する前に、システムが空間を使い果たすかも
                   しれないことを意味する、スワップのメタデータを断片化するか
                   もしれないことに注意してください。したがって、理論的な最大
                   のほぼ半分より多くのスワップを設定しないように注意するべき
                   です。

                   スワップのメタデータのための空間を使い果たすことは、回復不
                   能な状態のシステムとなるかもしれません。したがって、バッ
                   ファキャッシュまたは kern.ipc.nmbclusters のような他のリ
                   ソースのための KVM 予約を大幅に拡張する必要があるなら、単
                   に、このパラメータを変更するべきです。カーネルオプション
                   VM_SWZONE_SIZE_MAX を修正します。

     kern.maxbcache
                   バイト単位に指定されるバッファキャッシュによって使用される
                   予約される KVM の量を制限します。デフォルトの最大値は、i386
                   で 200MB、と amd64 と sparc64 で 400MB です。このパラメータ
                   は、バッファキャッシュが大きなメモリのマシン設定で KVM を非
                   常に多く消費することを防止するために使用されます。スワップ
                   ゾーンまたは kern.ipc.nmbclusters のような他のリソースのた
                   めの KVM 予約を大きく拡張する必要があるなら、このパラメータ
                   のみを調整します。NBUF パラメータは、この制限を上書きするす
                   ることに注意してください。VM_BCACHE_SIZE_MAX を修正します。

     kern.msgbufsize
                   カーネルメッセージバッファのサイズを設定します。バッファを
                   調べるか、またはそれをファイルにダンプする間に大量のトレー
                   スデータが集められる必要がないなら、64KB のデフォルトの制限
                   で通常十分です。カーネルオプション MSGBUF_SIZE に優先しま
                   す。

     machdep.disable_mtrrs
                   i686 MTRR の使用を無効にします (x86 のみ)。

     net.inet.tcp.tcbhashsize
                   TCBHASHSIZE のコンパイル時の設定値、またはデフォルトの 512
                   のプリセットを上書きします。2 のべき乗でなければなりませ
                   ん。

     twiddle_divisor
                   カーネルとモジュールをロードする間に、表示される `twiddle'
                   (ひねる) I/O 進捗インジケータの出力を抑圧します。これは、書
                   き込まれるこれらの文字を待つために費される時間が、多くの秒
                   まで追加することができるところで、遅いシリアルコンソールで
                   役に立ちます。デフォルトは、1 です (全速力)。全速力の半分の
                   2 つの回転の値、その他。

     vm.kmem_size  カーネルメモリのサイズ (バイト) を設定します。これは、カー
                   ネルがコンパイルされたとき、決定される値を上書きします。
                   VM_KMEM_SIZE を修正します。

     vm.kmem_size_min

     vm.kmem_size_max
                   カーネルによって自動的に割り付けられるカーネルメモリの (そ
                   れぞれ) 最小と最大の量を設定します。カーネルがコンパイルさ
                   れたとき、これらは、決定された値を上書きします。
                   VM_KMEM_SIZE_MIN と VM_KMEM_SIZE_MAX を変更します。

   ZFS 機能
     loader は、loader(8) がデバイスの指定を参照するところであろうとも使用する
     ことができる、ZFS ファイルシステムを指定するための次の形式をサポートして
     います:

     zfs:pool/filesystem:

     ここで、pool/filesystem は、zfs(8) に記述されるように ZFS ファイルシステ
     ム名です。

     /etc/fstab が、ルートファイルシステムのためのエントリがなく、
     vfs.root.mountfrom が設定されないが、currdev が、ZFS ファイルシステムを参
     照するなら、loader は、ルートファイルシステムとして、そのファイルシステム
     を使用するカーネルに指示します。

   組み込みパーサ
     組み込みコマンドが実行されるとき、行の残りは、引数として取られ、それは、
     通常の Forth コマンドを使用されない特別なパーサによって処理されます。

     この特別なパーサは、次の規則を、解析されたテキストに適用します:

     1.   すべてのバックスラッシュ文字は、前処理されます。

          •   \b , \f , \r , \n と \t は、C のように処理されます。

          •   \s は、空白に変換されます。

          •   \v は、ASCII 11 に変換されます。

          •   \z は、単にスキップされます。``\0xf\z\0xf'' のようなものに役に立
              ちます。

          •   \0xN と \0xNN は、16 進数の N または NN によって置き換えられま
              す。

          •   \NNN は、8 進数の NNN の ASCII 文字によって置き換えられます。

          •   \" , \' と \$ は、下記のように、それらがステップ 2 で特別な処理
              を受けることを防止して、これらの文字をエスケープします。

          •   \\ は、単一の \ に置き換えられます。

          •   その他の出現において、バックスラッシュは、単に削除されます。

     2.   エスケープされないクォートまたはダブルクォートの間のすべての文字列
          は、残りのステップの目的のための単一の単語として処理されます。

     3.   あらゆる $VARIABLE または ${VARIABLE} は、環境変数 VARIABLE の値に置
          き換えられます。

     4.   空白で区切られた引数は、呼び出される組み込みコマンドに渡されます。ま
          た、\\ の使用を通して空白をエスケープできます。

     この解析の規則への例外が、存在し、「組み込みコマンドと FORTH」に記述され
     ています。

   組み込みコマンドと FORTH
     すべての組み込みの単語は、状態スマートで、即時の単語です。解釈されるな
     ら、それらは、前述のように正確に振る舞います。しかしながら、それらがコン
     パイルされるなら、それらは、コマンド行の代わりにスタックからそれらの引数
     を引き出します。

     コンパイルされるなら、組み込み単語は、スタックで次のパラメータを実行時に
     見つけることを要求します:
           addrN lenN ... addr2 len2 addr1 len1 N
     ここで、addrX lenX は、組み込みの引数に解析されるコマンド行を構成する文字
     列です。内部的に、これらの文字列は、それぞれの文字の間に空白が置かれた 1
     から N まで連結されます。

     引数がなにも渡されないなら、たとえ組み込みが引数を受け付けなくても、0
     が、渡されなければなりません。

     一方、この振る舞いには、利点があり、それには、トレードオフがあります。組
     み込みの実行トークンが (' または ['] を通して) 獲得され、次に catch また
     は execute に渡されるなら、組み込みの振る舞いは、catch または execute が
     処理される時点でシステムの状態に依存します!  これは、特に、例外の処理を望
     んでいるか、または必要とするプログラムに対して面倒です。この場合に、プロ
     キシの使用が推奨されます。例えば、次の通りです:
           : (boot) boot;

FICL
     FICL は、C 関数によって呼び出すことができ、逆もまた同様に呼び出すことがで
     きる forth 仮想マシンライブラリという形式の、C で書かれた Forth インタプ
     リタです。

     次に、loader において、対話形式で読み込まれた各行は、組み込みの単語を実行
     するために、loader に呼び戻される、FICL に供給されます。また、組み込みの
     include は、1 度に 1 行 FICL に供給します。

     FICL に利用可能な単語を 4 つのグループに分類できます。ANS Forth 標準の単
     語、特別の FICL の単語、特別の FreeBSD の単語、と組み込みコマンド。後者
     は、すでに説明されました。ANS Forth 標準の単語は、「規格」セクションでリ
     ストされます。2 つの別のグループに分けられている単語は、次のサブセクショ
     ンに記述されています。

   FICL の特別な単語
     .env

     .ver

     -roll

     2constant

     >name

     body>

     compare        これは、「文字列」単語セットの比較です。

     compile-only

     endif

     forget-wid

     parse-word

     sliteral       これは、「文字列」単語セットの sliteral です。訳注: slit
                    eral は、辞書にない。

     wid-set-super

     w@

     w!

     x.

     empty

     cell-

     -rot

   FREEBSD の特別な単語
     $ (--)    最初に入力バッファを印刷 (表示) した後に、その残りを評価しま
               す。

     % (--)    catch 例外保護の下で入力バッファの残りを評価します。

     .#        .  のように動作しますが、後続する空白を出力しません。

     fclose (fd --)
               ファイルをクローズします。

     fkey (fd -- char)
               ファイルから単一の文字を読み込みます。

     fload (fd --)
               ファイル fd を処理します。

     fopen (addr len mode -- fd)
               ファイルをオープンします。ファイル記述子を返し、失敗の場合に -1
               を返します。mode パラメータは、ファイルが、読み込みアクセス、書
               き込みアクセス、または両方のためにオープンされるかどうかを選択
               します。定数 O_RDONLY, O_WRONLY と O_RDWR は、それぞれ、読み込
               み専用、書き込み専用と読み込み書き込みアクセスを示し、
               /boot/support.4th に定義されています。

     fread (fd addr len -- len')
               ファイル fd から len バイトをバッファ addr に読み込むことを試み
               ます。読み込んだ実際のバイトの数を返します、またはファイルのエ
               ラーまたは終わりの場合に、-1 を返します。

     heap? (-- cells)
               セルの単位で、辞書のヒープに残っている空白を返します。これは、
               動的なメモリ割り付けの単語によって使用されたヒープに関連しませ
               ん。

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

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

     key? (-- flag)
               コンソールから読み込まれる利用可能な文字があるなら、を返しま
               す。

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

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

     seconds (-- u)
               真夜中以来の秒の数を返します。

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

     trace! (flag --)
               トレースを活性化するか、または非活性化します。catch で動作しま
               せん。

   FREEBSD で定義された環境の問い合わせ
     arch-i386
             アーキテクチャが IA32 であるなら、。

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

     loader_version
             loader のバージョン。

セキュリティ
     loader のコマンド行へのアクセスは、セキュリティ侵害があるシステムのセキュ
     リティのいくつかの方法を提供し、含んでいますが、制限されません:

     •   currdev または loaddev 変数を設定することによって、取り外し可能な記憶
         域からブートします。

     •   init_path または init_script 変数を設定することによて、選択のバイナリ
         を実行します。

     •   任意のコードを ACPI サブシステムに注入するために、ACPI DSDT を上書き
         します。

     password を設定することによって、または autoboot_delay を -1 に設定するこ
     とによって、loader コマンド行への権限のないアクセスを防止することができま
     す。詳細については、loader.conf(5) を参照してください。これが効果的である
     ために、それは、権限のないデバイスからブートすることを防止するために、
     ファームウェア (BIOS または UEFI) も設定するべきです。

関連ファイル
     /boot/loader                    loader 自体。
     /boot/boot.4th                  追加の FICL の初期設定。
     /boot/defaults/loader.conf
     /boot/loader.4th                特別な組み込みに似た単語。
     /boot/loader.conf
     /boot/loader.conf.local         loader.conf(5) に記述される loader 設定
                                     ファイル。
     /boot/loader.rc                 loader ブートストラップのスクリプト。
     /boot/loader.help               help によってロードされます。ヘルプメッ
                                     セージを含んでいます。
     /boot/support.4th               loader.conf 処理単語。
     /usr/share/examples/bootforth/  分類された例。

使用例
     シングルユーザモードでブートします:

           boot -s

     カーネル、splash 画面と、次に 5 秒で autoboot ロードします。カーネルは、
     他の load が試みられる前に、ロードされなければならないことに注意してくだ
     さい。

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

     ルートデバイスのディスクユニットを 2 に設定し、次にブートします。これは、
     ada1 の代わりに、ada2 に接続された 2 番目の IDE ディスクがある、2 つの
     IDE ディスクがあるシステムで必要とされます。

           set root_disk_unit=2
           boot /boot/kernel/kernel

     ZFS ファイルシステムからカーネルをロードするために使用されるデフォルトの
     デバイスを設定します:

           set currdev=zfs:tank/ROOT/knowngood:

エラー
     次の値が loader によって与えられます:

           100    組み込みコマンドの処理におけるあらゆるタイプのエラー。

           -1     実行された Abort。

           -2     実行された Abort"。

           -56    実行された Quit。

           -256   インタプリットされるテキストの範囲外です。

           -257   成功するために、より多くのテキストが必要です -- 次の実行で終
                  了します。

           -258   実行された Bye。

           -259   特定されないエラー。

関連項目
     libstand(3), loader.conf(5), tuning(7), boot(8), btxld(8)

規格
     ANS Forth 準拠の目的のために、ローダは、環境制約がある ANS Forth システム
     であり、コア拡張 (Core Extension) 単語セットから .(, :noname, ?do, parse,
     pick, roll, refill, to, value, \, false, true, <>, 0<>, compile, , erase,
     nip, tuck と marker を提供し、例外拡張 (Exception Extension) 単語セットを
     提供し、ローカル拡張 (Local Extension) 単語セットを提供し、メモリ割り付け
     拡張 (Memory-Allocation Extension) 単語セットを提供し、(プログラミング
     ツール) 拡張単語セットから .s, bye, forget, see, words, [if], [else] と
     [then] を提供し、検索順序 (Search-Order) 拡張単語セットを提供しています。

歴史
     loader は、FreeBSD 3.1 ではじめて登場しました。

作者
     loader は、Michael Smith <msmith@FreeBSD.org> によって書かれました。

     FICL は、John Sadler <john_sadler@alum.mit.edu> によって書かれました。

バグ
     expectaccept の単語は、コンソールの代わりに入力バッファから読み込みま
     す。後者は、固定されますが、前者は、固定されません。

FreeBSD 12.2                    August 15, 2018                   FreeBSD 12.2

Table of Contents

FreeBSD マニュアル検索