日本語 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.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
LOADER_4TH(8) FreeBSD システム管理者マニュアル LOADER_4TH(8) 名称 loader_4th -- カーネルブートストラップの最終ステージ 解説 loader_4th と呼ばれるプログラムは、FreeBSD のカーネルのブートストラッププ ロセスの最終ステージです。IA32 (i386) アーキテクチャで、それは、BTX クラ イアンです。それは、libsa(3) に静的にリンクされていて、通常、ディレクトリ /boot に置かれます。 タスクの自動化、事前設定、またはリカバリ手続きの補助に使用することができ る、スクリプト言語を提供しています。このスクリプト言語は、大まかに 2 つの 主要構成要素に分かれています。小さいものは、一般ユーザによって直接使用す るように設計されたコマンドの組で、歴史的な理由のために "組み込みコマンド" と呼ばれています。これらのコマンドの主な目的は、ユーザの利便性です。より 大きな要素は、John Sadler によって、FICL をベースにした ANS Forth 互換の Forth インタプリタです。 初期化の間に、loader_4th は、コンソールをフローブし、console 変数を設定す るか、または前のブートステージでシリアルコンソール (``comconsole'') を使 用するなら、それを設定します。複数のコンソールが選択されるなら、空白で区 切ってリストされます。それから、デバイスがプローブされ、currdev と loaddev が設定され、LINES は、24 に設定されます。次に、FICL が初期化さ れ、組み込みタンゴは、語彙に追加され、/boot/boot.4th は、存在するなら、処 理されます。そのファイルが読み込まれている間に、ディスクの切り替えはでき ません。内部のインタプリタ loader_4th は、FICL で使用し、次に FICL のデ フォルトである interpret に設定します。その後、/boot/loader.rc は、利用可 能であるなら、処理されます。これらのファイルは、それらを処理する前に、メ モリにそれらのすべてを読み込みディスクの変更が可能になる、include コマン ドを通して処理されます。 この時点で、autoboot (自動起動) が試みられていなくて、autoboot_delay が ``NO'' (大文字小文字を区別しません) に設定されていないなら、autoboot が試 みられます。システムがこのポイントを通り抜けたあんら、prompt (プロンプト) が設定され、loader_4th は、対話型モードになります。歴史的に、 autoboot_delay が ``0'' に設定されていても、カーネルとモジュールがロード されている間に、ユーザがコンソールで何らかのキーを押すことによって auto boot プロセスを割り込むことができることに注意してください。ある場合には、 そのような振る舞いは、autoboot_delay が ``-1'' に設定するすることを防ぐご とは、好ましくありません、この場合に、loader_4th は、autoboot に失敗した 場合にのみ対話モードになります。 組み込みコマンド loader_4th で、組み込みコマンドは、コマンド行からパラメータを取ります。現 在、スクリプトからこれらを呼び出す唯一の方法は、文字列で evaluate を使用 することです。エラー状態が起こったなら、ANS Forth の例外処理単語を使用し てインタセプトすることができる、例外が生成されます。インターセプトされな かったなら、エラーメッセージが表示され、インタプリタの状態がリセットさ れ、スタックが空になり、インタプリタモードに戻ります。コマンドは、 loader_simp(8) の ``組み込みコマンドの'' セクションで説明されています。 組み込みの環境変数 すべてのインタプリタに共通する環境変数は、loader_simp(8) の ``組み込み環 境変数'' セクションで説明されています。 組み込みパーサ 組み込みコマンドが実行されるとき、行の残りの部分がその引数によって取ら れ、通常の Forth コマンドのために使用されない特別なパーサによって処理され ます。 この特別なパーサは、解析されたテキストに次のルールを適用します: 1. すべてのバックスラッシュ文字は、前処理されます。 • \b , \f , \r , \n と \t は、C のように処理されます。 • \s は、空白に変換されます。 • \v は、ASCII に変換されます。 • \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_4th で、対話的に読まれた各行は、組み込みの単語を実行するため に loader_4th を呼び返す、FICL に供給されます。また、組み込みの include は、FICL を 1 度に 1 行ずつ供給します。 FICL で利用可能な単語は、4 つのグループに分類することができます。ANS Forth の標準単語、追加の FICL 単語、追加の FreeBSD 単語、と組み込みのコマ ンドです。後者は、すでに説明した通りです。ANS Forth の標準単語は、「規 格」セクションにリストされています。他の 2 つのグループに収まる単語は、次 のサブセクションで説明されています。 FICL 追加の単語 .env .ver -roll 2constant >name body> compare これは、STRING 単語のセットの compare (比較) です。 compile-only endif forget-wid parse-word sliteral これは、STRING 単語のセットの sliteral です。訳注: slit eral は、literal (定数) の間違いか? wid-set-super w@ w! x. empty cell- -rot FreeBSD 追加の単語 $ (--) 最初に印刷した後に入力バッファの残りの部分を評価します。 % (--) catch 例外ガードの下で入力バッファの残りを評価します。 .# . と同じように動作しますが、後続する空白は、出力されません。 fclose (fd --) ファイルをクローズします。 fkey (fd -- char) ファイルから 1 文字を読み込みます。 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) コンソールから 1 文字を読み込みます。 key? (-- flag) コンソールから読み込まれる利用可能な文字があるなら、true を返し ます。 ms (u --) u マイクロ秒待機します。 outb (port char --) ポートに 1 バイトを書き込みます。 seconds (-- u) 午前 0 時からの秒数を返します。 tib> (-- addr len) スタック文字列として入力バッファの残りを返します。 trace! (flag --) 追跡 (トレース) を有効にするか、または無効にします。catch で動 作しません。 FreeBSD で定義された環境変数 arch-i386 アーキテクチャが IA32 であるなら、TRUE。 FreeBSD_version コンパイル時の FreeBSD のバージョン。 loader_version loader_4th のバージョン。 セキュリティ loader_4th コマンド行にアクセスすることは、次のようなシステムセキュリティ を危険にさらすいくつかの方法をもたらしますが、次に限定されません: • currdev または loaddev 変数を設定することによって、リムーバブル記憶域 からブートします。 • init_path または init_script 変数を設定することによって、選択されたバ イナリを実行します。 • 任意のコードを ACPI サブシステムに注入するために ACPI DSDT を上書きし ます。 password を設定するか、autoboot_delay を -1 に設定することによって loader_4th コマンド行への不正アクセスを防ぐことができます。詳細について は、loader.conf(5) を参照してください。これを有効にするために、ファーム ウェア (BIOS または UEFI) を設定して、不正なデバイスからのブートを防止す るべきです。 MD loader_4th が MD_IMAGE_SIZE でコンパイルされたとき、メモリディスク (MD) を使用することができます。メモリディスクのサイズは、MD_IMAGE_SIZE によっ て決定されます。MD が利用可能であるなら、/sys/tools/embed_mfs.sh で loader_4th にファイルシステムを組み込むことができます。次に、MD は、プ ローブされ、初期化の間に currdev に設定されます。 現在、MD は、loader.efi(8) でのみサポートされています。 関連ファイル /boot/loader loader_4th 自体。 /boot/boot.4th 追加の FICL の初期化。 /boot/defaults/loader.conf /boot/loader.4th 特別な組み込みのような単語。 /boot/loader.conf /boot/loader.conf.local loader.conf(5) で説明されているような、 loader_4th の設定ファイル。 /boot/loader.rc loader_4th のブートストラップスクリプト。 /boot/loader.help help によってロードされます。ヘルプメッ セージを含みます。 /boot/support.4th loader.conf の処理語。 /usr/share/examples/bootforth/ ソードされた例。 使用例 シングルユーザモードでブートします: boot -s カーネルをロードし、スプラッシュ画面と、次に 5 秒後にオートブートします。 カーネルは、他の 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_4th によってスローされます: 100 ビルドインの処理で何らかのタイプのエラーがありました。 -1 Abort を実行しました。 -2 Abort" を実行しました。 -56 Quit を実行しました。 -256 テキストを解釈できません。 -257 成功するためによりテキストが必要です -- 次の実行で終了しま す。 -258 Bye を実行しました。 -259 特定されないエラー。 関連項目 libsa(3), loader.conf(5), tuning(7), boot(8), btxld(8) 規格 ANS Forth に準拠する目的のために、ローダは、環境制限がある ANS Forth シス テム、次を提供します、.(, :noname, ?do, parse, pick, roll, refill, to, value, \, false, true, <>, 0<>, compile, , erase, nip, tuck と marker コ ア拡張語のセットから、例外拡張語のセットを提供し、ローカル拡張語のセット を提供し、メモリ割り付け拡張語のセットを提供し、次を提供します、.s, bye, forget, see, words, [if], [else] と [then] Programming-Tools の拡張語の セットから、Search-Order 拡張語のセットを提供します。 歴史 loader_4th は、FreeBSD 3.1 ではじめて登場しました。 作者 loader_4th は、Michael Smith <msmith@FreeBSD.org> によって書かれました。 FICL は、John Sadler <john_sadler@alum.mit.edu> によって書かれました。 FreeBSD 13.2 September 29, 2021 FreeBSD 13.2