aboutsummaryrefslogtreecommitdiff
path: root/ja_JP.eucJP/man/man8/loader.8
blob: 68bcf85abb673cc8a8bfc003c49170460abd9752 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
.\" Copyright (c) 1999 Daniel C. Sobral
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\"    notice, this list of conditions and the following disclaimer in the
.\"    documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" %FreeBSD: src/sys/boot/i386/loader/loader.8,v 1.1.2.7 1999/08/29 16:21:07 peter Exp %
.\"
.\" Note: The date here should be updated whenever a non-trivial
.\" change is made to the manual page.
.\"
.\" jpman %Id: loader.8,v 1.2 1999/05/07 11:24:21 horikawa Stab %
.Dd March 14, 1999
.Dt LOADER 8
.Os
.Sh 名称
.Nm loader
.Nd システムブートストラップの第 3 段階
.Sh 解説
.Nm
と呼ばれるプログラムは、
FreeBSD の 3 段階ブートストラップにおける、3 段目です。
これは
.Xr libstand 3
に静的にリンクされた
.Pa BTX
クライアントであり、通常はディレクトリ
.Pa /boot
に置かれます。
.Pp
また、作業自動化、事前設定、回復処理の補助に使用可能な、
スクリプト言語を提供します。
このスクリプト言語はおおまかに 2 つの主たる部分に分類されます。
小さな方は、通常のユーザが直接使用するようデザインされたコマンドの集合で、
歴史的な事情により「組み込みコマンド」と呼ばれます。
これらのコマンドを提供した背景には、
主としてユーザの使い勝手を改善する目的があります。
大きな部品は
.Tn ANS
Forth 互換の Forth インタプリタであり、
.An John Sadler
の ficl をベースにしています。
.Pp
初期化において、
.Nm
はコンソールを検出して
.Va console
変数を設定します。
直前のブートステージにシリアルコンソールを使用した場合には、
この変数をシリアルコンソール
.Pq Dq comconsole
に設定します。
その後、デバイスをプローブし、
.Va currdev
と
.Va loaddev
を設定し、
.Va LINES
を 24 に設定します。
次に
.Tn FICL
が初期化され、組み込み語が語彙に追加され、存在する場合には
.Pa /boot/boot.4th
が処理されます。
このファイルが読み込まれるまで、ディスクの交換はできません。
.Nm
が
.Tn FICL
とともに使用する内部インタプリタは
.Ic interpret
に設定されます。これは
.Tn FICL
のデフォルトです。
この後、使用可能な場合
.Pa /boot/loader.rc
が処理され、そうでない場合には歴史的な理由で
.Pa /boot/boot.conf
が読み込まれます。
これらのファイルは
.Ic include
コマンドを介して処理されます。
このコマンドは、
処理前にファイル内容すべてをメモリに読み込みますので、
ディスク交換が可能となります。
.Pp
この時点で、
.Ic autoboot
が試されていない場合でかつ
.Va autoboot_delay
が
.Dq NO
(大文字小文字は区別しません) に設定されていない場合、
.Ic autoboot
が試されます。
システムがこの時点まで到達した場合、
.Va prompt
が設定され、
.Nm
は対話モードになります。
.Sh 組み込みコマンド
.Nm
の組み込みコマンドは、パラメータをコマンドラインから受け取ります。
現在、スクリプトからの呼び出し方法は、文字列上で
.Pa evaluate
を使用することだけです。
エラー状態が発生すると、
.Tn ANS
Forth 例外操作語でインタセプト可能な例外が生成されます。
インタセプトされない場合、エラーメッセージが表示され、
インタプリタの状態がリセットされます。
これにより、スタックが空になりインタプリタのモードが元に戻ります。
.Pp
使用可能な組み込みコマンドは次の通りです:
.Pp
.Bl -tag -width Ds -compact -offset indent
.It Ic autoboot Op Ar seconds
ユーザが割り込まない場合には、
指定した秒数の後にシステムのブートストラップへ進みます。
キーが押されて割り込まれるまで、
カウントダウンプロンプトを表示し、
ユーザに対してシステムがブートするところであることを警告します。
必要であれば、最初にカーネルがロードされます。
デフォルトは 10 秒です。
.Pp
.It Ic bcachestat
ディスクキャッシュの使用状況を表示します。
デバッグのためだけにあります。
.Pp
.It Ic boot
.It Ic boot Ar kernelname Op Cm ...
.It Ic boot Fl flag Cm ...
システムのブートストラップへすぐに進み、
必要であればカーネルをロードします。
すべてのフラグまたは引数はカーネルに渡されますが、
カーネル名が指定された場合、これらはカーネル名の後にある必要があります。
.Pp
.It Ic echo Xo
.Op Fl n
.Op Aq message
.Xc
画面にテキストを表示します。
.Fl n
を指定しない場合、改行が表示されます。
.Pp
.It Ic heap
メモリ使用状況が表示されます。デバッグ目的のためだけにあります。
.Pp
.It Ic help Op topic Op subtopic
ヘルプメッセージを
.Pa /boot/loader.help
から読み込んで表示します。
特殊トピック
.Em index
は、使用可能なトピックを表示します。
.Pp
.It Ic include Ar file Op Ar
スクリプトファイルを処理します。
各ファイルは、順番がまわって来たところで完全にメモリに読み込まれ、
各行がコマンドラインインタプリタに渡されます。
インタプリタがエラーを返すと、
他のファイルは読み込まずに include コマンドは即時に異常終了し、
自身にエラーを返します (
.Sx エラー
参照)。
.Pp
.It Ic load Xo
.Op Fl t Ar type
.Ar file Cm ...
.Xc
カーネル、カーネルローダブルモジュール (kld)、内容を問わず
.Ar type
とタグ付けされているファイルのいずれかをロードします。
カーネルとモジュールは、a.out または elf のどちらの形式であってもかまいません。
ロードされるファイルの後で渡される引数は、
そのファイルに対する引数として渡されます。
現在のところ、これはカーネルに対しては動作しないことに注意してください。
.Pp
.It Ic ls Xo
.Op Fl l
.Op Ar path
.Xc
ディレクトリ
.Ar path
、または
.Ar path
を指定しなかった場合にはルートディレクトリのファイル一覧を表示します。
.Fl l
を指定すると、ファイルの大きさも表示します。
.Pp
.It Ic lsdev Op Fl v
モジュールのロード元となりうるデバイスをすべて表示します。
.Fl v
を指定すると、更なる詳細を表示します。
.Pp
.It Ic lsmod Op Fl v
ロード済のモジュールを表示します。
.Fl v
を指定すると、更なる詳細を表示します。
.Pp
.It Ic more Ar file Op Ar
.Va LINES
行を表示するごとに停止しながら、指定したファイルを表示します。
.Pp
.It Ic pnpscan Op Fl v
プラグアンドプレイデバイスをスキャンします。
現在のところ動作しません。
.Pp
.It Ic read Xo
.Op Fl t Ar seconds
.Op Fl p Ar prompt
.Op Va variable
.Xc
入力行を端末から読み込み、
.Va variable
が指定された場合にはこれに読み込み結果を格納します。
タイムアウトは
.Fl t
で指定可能ですが、これは最初に押されるキーにより打ち消されます。
プロンプトもまた
.Fl p
フラグにより表示可能です。
.Pp
.It Ic reboot
即時にシステムをリブートします。
.Pp
.It Ic set Ar variable
.It Ic set Ar variable Ns = Ns Ar value
ローダの環境変数を設定します。
.Pp
.It Ic show Op Va variable
指定した変数の値を表示します。
.Va variable
を指定しないと、すべての変数とその値を表示します。
.Pp
.It Ic unload
全モジュールをメモリから取り除きます。
.Pp
.It Ic unset Va variable
.Va variable
を環境から取り除きます。
.Pp
.It Ic \&?
.Dq help index
と同じです。
.Pp
.El
.Ss 組み込みの環境変数
.Nm
は実際のところ、異なった 2 種類の
.Sq 環境
変数を持ちます。
それは、ANS Forth の
.Em 環境問い合わせ
と、別の空間であり組み込みコマンドが使用する環境変数です。
後者は Forth の語としては直接使用できません。
この節で説明するのは、後者です。
.Pp
環境変数の設定および設定解除は、
.Ic set
と
.Ic unset
の組み込みコマンドを介して行います。これらの値は、
.Ic show
組み込みコマンドを使用して対話的に検査できます。
これらの値は、
.Sx 組み込みパーザ
で説明する方法でもまたアクセス可能です。
.Pp
この環境変数は、システムブート後にシェルに継承されないことに注意してください。
.Pp
数個の変数が
.Nm
により自動的に設定されます。
他の変数は、
.Nm
またはブート時のカーネル動作に影響し得ます。
これらのうち値を要求するものがある一方、
設定されるだけで動作を定義するものもあります。
これらを以下に示します。
.Bl -tag -width bootfile -offset indent
.It Va autoboot_delay
.Ic autoboot
がブート前に待つ秒数です。この変数が定義されていない場合、
.Ic autoboot
はデフォルトの 10 秒になります。
.Pp
.Dq NO
に設定すると、
.Pa /boot/loader.rc
の処理の後に
.Ic autoboot
を自動的には試みなくなります。
しかし、明示的に
.Ic autoboot
を指定すると、デフォルトの 10 秒の遅延の後に通常通り処理されます。
.It Va boot_askname
カーネルブート時にルートデバイス名をユーザに尋ねるように、
カーネルに指示します。
.It Va boot_ddb
ブート時に初期化に進むのではなく DDB デバッガを開始するように、
カーネルに指示します。
.It Va boot_gdb
gdb リモートモードを、カーネルデバッガのデフォルトとして選択します。
.It Va boot_single
カーネルがマルチユーザスタートアップを開始することを防ぎ、
カーネルがデバイスプローブを完了したときにはシングルユーザモードになります。
.It Va boot_userconfig
カーネルブート時に
カーネルの対話的なデバイス設定プログラムを実行するよう要求します。
.It Va boot_verbose
この変数を設定すると、
ブートフェーズ中に追加のデバッグ情報をカーネルが表示します。
.It Va bootfile
セミコロンで区切った検索パスのリストであり、
ここからブート可能なカーネルを探します。
デフォルトは
.Li Dq kernel;kernel.old
です。
.It Va console
現在のコンソールを定義します。
.It Va currdev
デフォルトデバイスを選択します。デバイスの文法は奇妙なものです。
.It Va init_path
カーネルが初期プロセスとして実行しようとすべきバイナリのリストを指定します。
デフォルトは
.Li Dq /sbin/init:/sbin/oinit:/sbin/init.bak:/stand/sysinstall
です。
.It Va interpret
Forth の現在の状態がインタプリタの場合、
.Li Dq ok
という値を持ちます。
.It Va LINES
画面上の行数を定義します。ページャが使用します。
.It Va module_path
モジュールを検索するディレクトリのリストを設定します。
モジュール名は、load コマンドまたは依存関係により暗黙的に指定されます。
この変数のデフォルト値は
.Li Dq /;/boot;/modules
です。
.It Va num_ide_disks
IDE ディスクの数を設定します。
これは、ブート時にルートディスクを見つけることに関する問題への対処です。
.Va root_disk_unit
により価値が低下しています。
.It Va prompt
.Nm
のプロンプトの値です。
デフォルトは
.Li Dq "${currdev}>"
です。
.It Va root_disk_unit
ルートディスクのディスクユニット番号を検出するコードが混乱する場合、
この変数を設定することでユニット番号を強制可能です。
混乱するのは、例えば SCSI と IDE のディスクを両方持つ場合や、
IDE ディスクの並びに隙間がある場合 (プライマリスレーブが無い場合など) です。
.It Va rootdev
デフォルトでは、カーネルブート時にルートファイルシステムの設定には
.Va currdev
が使用されます。
これは
.Va rootdev
を明示的に設定することによりオーバライド可能です。
.El
.Pp
他の変数を使用することにより、
カーネルの調整可能なパラメータをオーバライド可能です。
次の調整可能な変数が使用可能です:
.Bl -tag -width Va -offset indent
.It Va kern.ipc.nmbclusters
割り当てられる mbuf クラスタ数を設定します。
カーネルコンパイル時に決定されたデフォルト値より小さくは、設定できません。
.Va NMBCLUSTERS
を変更します。
.It Va kern.vm.kmem.size
カーネルメモリの大きさ (バイト) を設定します。
カーネルコンパイル時に決定された値に、完全に優先します。
.Va VM_KMEM_SIZE
を変更します。
.It Va machdep.pccard.pcic_irq
通常時に PCCARD コントローラに割り当てられる IRQ をオーバライドします。
典型的には、最初に利用可能な割り込みが割り当てられてしまい、
他のハードウェアと衝突してしまうかもしれません。
この値を 0 に設定すると、割り込みは割り当てられず、
コントローラはポーリングモードのみで動作します。
.It Va net.inet.tcp.tcbhashsize
.Va TCBHASHSIZE
のコンパイル時の設定値をオーバライドするか、
デフォルトの 512 にプリセットします。
2 のべき乗である必要があります。
.El
.Ss 組み込みパーザ
組み込みコマンドが実行されるとき、
行の残りはコマンドが引数として受け取り、
通常の Forth コマンドには使用されない特別なパーザがコマンドを処理します。
.Pp
この特別なパーザは、解析したテキストに対して次のルールを適用します:
.Pp
.Bl -enum
.It
すべてのバックスラッシュ文字は前処理されます。
.Bl -bullet
.It
\eb , \ef , \er , \en, \et は C の
.Fn printf
のように処理されます。
.It
\es は空白文字に変換されます。
.It
\ev は
.Tn ASCII
の 11 に変換されます。
.It
\ez は単にスキップされます。
.Dq \e0xf\ez\e0xf
のように使用すると便利です。
.It
\e0xN と \e0xNN は 16 進数の N と NN に変換されます。
.It
\eNNN は 8 進数 NNN の
.Tn ASCII
文字に変換されます。
.It
\e" , \e' , \e$ は、これらの文字をエスケープし、
後述するステップ 2 における特殊な意味を与えられないようにします。
.It
\e\e は単一の \e に変換されます。
.It
他の場合、バックスラッシュは単に取り除かれます。
.El
.It
エスケープされていないクォートまたはダブルクォートの間のすべての文字列は、
後続するステップにおいて単一の語として扱われます。
.It
.Li $VARIABLE
または
.Li ${VARIABLE}
は、環境変数
.Va VARIABLE
の値に変換されます。
.It
空白で区切られた複数の引数を、呼び出した組み込みコマンドへ渡します。
空白は \e\e を使用することによりエスケープ可能です。
.El
.Pp
解析ルールには例外があり、これは
.Sx 組み込み語と FORTH
で説明します。
.Ss 組み込み語と FORTH
すべての組み込み語は、状態を意識する即時実行語です。
インタプリトされると、これらは前述の通りに振舞います。
一方コンパイルされると、
引数をコマンドラインからではなくスタックから取り出します。
.Pp
コンパイルされると、
実行時に組み込み語は、スタック上で次のパラメータを見付けられると期待します:
.D1 Ar addrN lenN ... addr2 len2 addr1 len1 N
ここで
.Ar addrX lenX
は文字列であり、組み込み語の引数として解釈されるコマンドラインを構成します。
内部的には、おのおのの間に空白を狭んで、
これらの文字列は 1 から N まで結合されます。
.Pp
引数が渡されない場合、組み込み語が引数を受け付けない場合であっても、
単一の 0 を渡す
.Em 必要
があります。
.Pp
この動作には利点がありますが、それ自身にはトレードオフがあります。
組み込み語の実行トークンが (
.Ic No '
または
.Ic No [']
を通して) 得られて、
.Ic catch
または
.Ic execute
に渡された場合、組み込み語の動作は
.Bf Em
.Ic catch
または
.Ic execute
が実行されるときの
.Ef
システムの状態に依存します !
これは、
例外を扱いたいまたは扱う必要があるプログラムにとっては、特に悩ましいものです。
この場合、代理 (proxy) を使用することをお勧めします。
例えば次のようにします:
.Dl : (boot) boot ;
.Sh FICL
.Tn FICL
は C で記述された Forth インタプリタであり、
C の関数などとして呼び出し可能な forth 仮想マシンライブラリの形式です。
.Pp
.Nm
では、対話的に読み込まれた各行は
.Tn FICL
に与えられます。
.Tn FICL
は、組み込み語を実行するために
.Nm
を呼び戻します。
組み込みの
.Ic include
もまた、1 度に 1 行ずつを
.Tn FICL
へ与えます。
.Pp
.Tn FICL
へ使用可能な語は 4 グループへ分類可能です。それは、
.Tn ANS
Forth 標準語、追加の
.Tn FICL
語、追加の
.Os
語、そして組み込みコマンドです。
最後のものは既に説明しました。
.Tn ANS
Forth 標準語は、
.Sx 規格
の節に列挙しています。
別の 2 グループの語については、以降の小節において説明します。
.Ss FICL 追加語
.Bl -tag -width wid-set-super -offset indent
.It Ic .env
.It Ic .ver
.It Ic -roll
.It Ic 2constant
.It Ic >name
.It Ic body>
.It Ic compare
This is the STRING word set's
.Ic compare .
.It Ic compile-only
.It Ic endif
.It Ic forget-wid
.It Ic parse-word
.It Ic sliteral
This is the STRING word set's
.Ic sliteral .
.It Ic wid-set-super
.It Ic w@
.It Ic w!
.It Ic x.
.It Ic empty
.It Ic cell-
.It Ic -rot
.El
.Ss FREEBSD 追加語
.Bl -tag -width XXXXXXX -offset indent
.It Ic tib> Pq -- Ar addr len
入力バッファの残りを、スタック上の文字列として返します。
.It Ic \&% Pq --
.Ic catch
例外ガード下の、入力バッファの残りを評価します。
.It Ic \&$ Pq --
入力バッファの残りを表示した後、評価します。
.It Ic fopen Pq Ar addr len -- fd
ファイルをオープンします。ファイル記述子を返します。
失敗時には -1 を返します。
.It Ic fclose Pq Ar fd --
ファイルをクローズします。
.It Xo
.Ic fread
.Pq Ar fd addr len -- len'
.Xc
ファイル
.Em fd
から
.Em len
バイトを、バッファ
.Em addr
へ読み込もうとします。
実際に読み込んだバイト数を返します。
エラー時またはファイルの終了の場合には -1 を返します。
.It Ic fload Pq Ar fd --
ファイル
.Em fd
を処理します。
.It Ic fkey Pq Ar fd -- char
ファイルから 1 文字読み込みます。
.It Ic key Pq -- Ar char
コンソールから 1 文字読み込みます。
.It Ic key? Pq -- Ar flag
コンソールから読み込み可能な文字がある場合、
.Ic 真
を返します。
.It Ic ms Pq Ar u --
.Em u
マイクロ秒待ちます。
.It Ic seconds Pq -- Ar u
深夜 0 時からの秒数を返します。
.It Ic trace! Pq Ar flag --
トレースを有効または無効にします。
.Ic catch
とともには動作しません。
.It Ic outb Pq Ar port char --
ポートへバイトを書き込みます。
.It Ic inb Pq Ar port -- char
ポートからバイトを読み込みます。
.El
.Ss FREEBSD で定義される環境問い合わせ
.Bl -tag -width Ds -offset indent
.It arch-i386
アーキテクチャが IA32 の場合
.Ic 真
です。
.It arch-alpha
アーキテクチャが AXP の場合
.Ic 真
です。
.It FreeBSD_version
コンパイル時の
.Fx
バージョンです。
.It loader_version
.Nm
のバージョンです。
.El
.Ss システム文書
.Sh 関連ファイル
.Bl -tag -width /dev/loader.helpX -compact
.It Pa /boot/loader
.Nm
自身。
.It Pa /boot/boot.4th
追加の
.Tn FICL
の初期化。
.It Pa /boot/boot.conf
.Nm
のブートストラップスクリプト。価値が低下しています。
.It Pa /boot/loader.rc
.Nm
のブートストラップスクリプト。
.It Pa /boot/loader.help
.Ic help
がロードします。
ヘルプメッセージを含みます。
.El
.Sh 使用例
シングルユーザモードでブートします:
.Pp
.Dl boot -s
.Pp
カーネルのユーザ設定ファイルをロードします。
他の
.Ic load
コマンドを試みる前にカーネルをロードする必要があることに注意してください。
.Pp
.Bd -literal -offset indent -compact
load kernel
load -t userconfig_script /boot/kernel.conf
.Ed
.Pp
カーネルと起動画面をロードし、5 秒以内に自動ブートします。
.Pp
.Bd -literal -offset indent -compact
load kernel
load splash_bmp
load -t splash_image_data /boot/chuckrulez.bmp
autoboot 5
.Ed
.Pp
ルートデバイスのディスクユニットを 2 に設定し、ブートします。
IDE ディスクが 2 台のシステムで、
2 台目の IDE が wd1 ではなく wd2 に固定されているシステムにおいて、
必要となるでしょう。
.Pp
.Bd -literal -offset indent -compact
set root_disk_unit=2
boot /kernel
.Ed
.Pp
次を参照してください:
.Bl -tag -width /usr/share/examples/bootforth/X
.It Pa /boot/loader.4th
追加の組み込み的な語について。
.It Pa /boot/support.4th
.Pa loader.conf
が処理する語について。
.It Pa /usr/share/examples/bootforth/
分類された使用例。
.El
.Sh エラー
次の値を
.Nm
は返します:
.Bl -tag -width XXXXX -offset indent
.It 100
組み込みコマンド処理において任意のタイプのエラーが発生しました。
.It -1
.Ic Abort
が実行されました。
.It -2
.Ic Abort"
が実行されました。
.It -56
.Ic Quit
が実行されました。
.It -256
インタプリトするテキストがありません。
.It -257
成功するためには更なるテキストが必要です -- 次の実行で終了します。
.It -258
.Ic Bye
が実行されました。
.It -259
未定義エラー。
.El
.Sh 関連項目
.Xr libstand 3 ,
.Xr loader.conf 5 ,
.Xr boot 8 ,
.Xr btxld 8
.Sh 規格
ANS Forth 互換性の観点では、loader は
.Bf Em
環境に制限がある ANS Forth System です。
Core Extensions 語集合からは、
.Ef
.Bf Li
.No .( ,
.No :noname ,
.No ?do ,
parse, pick, roll, refill, to, value, \e, false, true,
.No <> ,
.No 0<> ,
compile\&, , erase, nip, tuck, maker
.Ef
.Bf Em
を提供しています。
Exception Extensions 語集合を提供しています。
Locals Extensions 語集合を提供しています。
Memory-Allocation Extensions 語集合を提供しています。
Programming-Tools 拡張語集合からは
.Ef
.Bf Li
\&.s ,
bye, forget, see, words,
\&[if] ,
\&[else] ,
\&[then]
.Ef
.Bf Em
を提供しています。
Search-Order 拡張語集合を提供しています。
.Ef
.Sh 歴史
.Nm
が最初に登場したのは
.Fx 3.1
です。
.Sh 作者
.Bl -item
.It
.Nm
は
.An Michael Smith Aq msmith@freebsd.org
が記述しました。
.It
.Tn FICL
は
.An John Sadler Aq john_sadler@alum.mit.edu
が記述しました。
.El
.Sh バグ
.Tn FICL
は大文字小文字を区別します。
これは標準違反ではありませんが、
すべての Forth の語は小文字ですから、
結果として標準違反となります。
このバグに依存しないようにしてください。
.Pp
.Ic expect
と
.Ic accept
の語は、コンソールからではなく入力バッファから読み込みます。
後者については修正されますが、前者は修正されません。