]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/boot/common/loader.8
This commit was generated by cvs2svn to compensate for changes in r98121,
[FreeBSD/FreeBSD.git] / sys / boot / common / loader.8
1 .\" Copyright (c) 1999 Daniel C. Sobral
2 .\" All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\"
13 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23 .\" SUCH DAMAGE.
24 .\"
25 .\" $FreeBSD$
26 .\"
27 .\" Note: The date here should be updated whenever a non-trivial
28 .\" change is made to the manual page.
29 .Dd March 14, 1999
30 .Dt LOADER 8
31 .Os
32 .Sh NAME
33 .Nm loader
34 .Nd kernel bootstrapping final stage
35 .Sh DESCRIPTION
36 The program called
37 .Nm
38 is the final stage of
39 .Fx Ns 's
40 kernel bootstrapping process.
41 On IA32 (i386) architectures, it is a
42 .Pa BTX
43 client.
44 It is linked statically to
45 .Xr libstand 3
46 and usually located in the directory
47 .Pa /boot .
48 .Pp
49 It provides a scripting language that can be used to
50 automate tasks, do pre-configuration or assist in recovery
51 procedures.
52 This scripting language is roughly divided in
53 two main components.
54 The smaller one is a set of commands
55 designed for direct use by the casual user, called "builtin
56 commands" for historical reasons.
57 The main drive behind these commands is user-friendliness.
58 The bigger component is an
59 .Tn ANS
60 Forth compatible Forth interpreter based on ficl, by
61 .An John Sadler .
62 .Pp
63 During initialization,
64 .Nm
65 will probe for a console and set the
66 .Va console
67 variable, or set it to serial console
68 .Pq Dq comconsole
69 if the previous boot stage used that.
70 Then, devices are probed,
71 .Va currdev
72 and
73 .Va loaddev
74 are set, and
75 .Va LINES
76 is set to 24.
77 Next,
78 .Tn FICL
79 is initialized, the builtin words are added to its vocabulary, and
80 .Pa /boot/boot.4th
81 will be processed if it exists.
82 No disk switching is possible while that file is being read.
83 The inner interpreter
84 .Nm
85 will use with
86 .Tn FICL
87 is then set to
88 .Ic interpret ,
89 which is
90 .Tn FICL Ns 's
91 default.
92 After that,
93 .Pa /boot/loader.rc
94 is processed if available, and, failing that,
95 .Pa /boot/boot.conf
96 will be read for historical reasons.
97 These files are processed through the
98 .Ic include
99 command, which reads all of them into memory before processing them,
100 making disk changes possible.
101 .Pp
102 At this point, if an
103 .Ic autoboot
104 has not been tried, and if
105 .Va autoboot_delay
106 is not set to
107 .Dq NO
108 (not case sensitive), then an
109 .Ic autoboot
110 will be tried.
111 If the system gets past this point,
112 .Va prompt
113 will be set and
114 .Nm
115 will engage interactive mode.
116 .Sh BUILTIN COMMANDS
117 .Nm Loader Ns 's
118 builtin commands take its parameters from the command line.
119 Presently,
120 the only way to call them from a script is by using
121 .Pa evaluate
122 on a string.
123 If an error condition occurs, an exception will be generated,
124 which can be intercepted using
125 .Tn ANS
126 Forth exception handling
127 words.
128 If not intercepted, an error message will be displayed and
129 the interpreter's state will be reset, emptying the stack and restoring
130 interpreting mode.
131 .Pp
132 The builtin commands available are:
133 .Pp
134 .Bl -tag -width Ds -compact
135 .It Ic autoboot Op Ar seconds
136 Proceeds to bootstrap the system after a number of seconds, if not
137 interrupted by the user.
138 Displays a countdown prompt
139 warning the user the system is about to be booted,
140 unless interrupted by a key press.
141 The kernel will be loaded first if necessary.
142 Defaults to 10 seconds.
143 .Pp
144 .It Ic bcachestat
145 Displays statistics about disk cache usage.
146 For depuration only.
147 .Pp
148 .It Ic boot
149 .It Ic boot Ar kernelname Op Cm ...
150 .It Ic boot Fl flag Cm ...
151 Immediately proceeds to bootstrap the system, loading the kernel
152 if necessary.
153 Any flags or arguments are passed to the kernel, but they
154 must precede the kernel name, if a kernel name is provided.
155 .Pp
156 .Em WARNING :
157 The behavior of this builtin is changed if
158 .Xr loader.4th 8
159 is loaded.
160 .Pp
161 .It Ic echo Xo
162 .Op Fl n
163 .Op Aq message
164 .Xc
165 Displays a text on the screen.
166 A new line will be printed unless
167 .Fl n
168 is specified.
169 .Pp
170 .It Ic heap
171 Displays memory usage statistics.
172 For debugging purposes only.
173 .Pp
174 .It Ic help Op topic Op subtopic
175 Shows help messages read from
176 .Pa /boot/loader.help .
177 The special topic
178 .Em index
179 will list the topics available.
180 .Pp
181 .It Ic include Ar file Op Ar
182 Process script files.
183 Each file is, at a turn, completely read into memory,
184 and then have each of its lines passed to the command line interpreter.
185 If any error is returned by the interpreter, the include
186 commands aborts immediately, without reading any other files, and
187 returns an error itself (see
188 .Sx ERRORS ) .
189 .Pp
190 .It Ic load Xo
191 .Op Fl t Ar type
192 .Ar file Cm ...
193 .Xc
194 Loads a kernel, kernel loadable module (kld), or a file of opaque
195 contents tagged as being of the type
196 .Ar type .
197 Kernel and modules can be either in a.out or elf format.
198 Any arguments passed after the name of the file to be loaded
199 will be passed as arguments to that file.
200 Notice, though, that, at the present, this does not work for the kernel.
201 .Pp
202 .It Ic ls Xo
203 .Op Fl l
204 .Op Ar path
205 .Xc
206 Displays a listing of files in the directory
207 .Ar path ,
208 or the root directory if
209 .Ar path
210 is not specified.
211 If
212 .Fl l
213 is specified, file sizes will be shown too.
214 .Pp
215 .It Ic lsdev Op Fl v
216 Lists all of the devices from which it may be possible to load modules.
217 If
218 .Fl v
219 is specified, more details are printed.
220 .Pp
221 .It Ic lsmod Op Fl v
222 Displays loaded modules.
223 If
224 .Fl v
225 is specified, more details are shown.
226 .Pp
227 .It Ic more Ar file Op Ar
228 Display the files specified, with a pause at each
229 .Va LINES
230 displayed.
231 .Pp
232 .It Ic pnpscan Op Fl v
233 Scans for Plug-and-Play devices.
234 This is not functional at the present.
235 .Pp
236 .It Ic read Xo
237 .Op Fl t Ar seconds
238 .Op Fl p Ar prompt
239 .Op Va variable
240 .Xc
241 Reads a line of input from the terminal, storing it in
242 .Va variable
243 if specified.
244 A timeout can be specified with
245 .Fl t ,
246 though it will be canceled at the first key pressed.
247 A prompt may also be displayed through the
248 .Fl p
249 flag.
250 .Pp
251 .It Ic reboot
252 Immediately reboots the system.
253 .Pp
254 .It Ic set Ar variable
255 .It Ic set Ar variable Ns = Ns Ar value
256 Set loader's environment variables.
257 .Pp
258 .It Ic show Op Va variable
259 Displays the specified variable's value, or all variables and their
260 values if
261 .Va variable
262 is not specified.
263 .Pp
264 .It Ic unload
265 Remove all modules from memory.
266 .Pp
267 .It Ic unset Va variable
268 Removes
269 .Va variable
270 from the environment.
271 .Pp
272 .It Ic \&?
273 Same as
274 .Dq help index .
275 .Pp
276 .El
277 .Ss BUILTIN ENVIRONMENT VARIABLES
278 The
279 .Nm
280 has actually two different kinds of
281 .Sq environment
282 variables.
283 There are ANS Forth's
284 .Em environmental queries ,
285 and a separate space of environment variables used by builtins, which
286 are not directly available to Forth words.
287 It is the later ones that this session covers.
288 .Pp
289 Environment variables can be set and unset through the use of the
290 .Ic set
291 and
292 .Ic unset
293 builtins, and have their value interactively examined through the
294 use of the
295 .Ic show
296 builtin.
297 Their values can also be accessed as described in
298 .Sx BUILTIN PARSER .
299 .Pp
300 Notice that these environment variables are not inherited by any shell
301 after the system has been booted.
302 .Pp
303 A few variables are set automatically by
304 .Nm .
305 Others can affect either
306 .Nm
307 or kernel's behavior at boot.
308 While some of these may require a value,
309 others define behavior just by being set.
310 These are described below.
311 .Bl -tag -width bootfile
312 .It Va autoboot_delay
313 Number of seconds
314 .Ic autoboot
315 will wait before booting.
316 If this variable is not defined,
317 .Ic autoboot
318 will default to 10 seconds.
319 .Pp
320 If set to
321 .Dq NO ,
322 no
323 .Ic autoboot
324 will be automatically attempted after processing
325 .Pa /boot/loader.rc ,
326 though explicit
327 .Ic autoboot Ns 's
328 will be processed normally, defaulting to 10 seconds delay.
329 .It Va boot_askname
330 Instructs the kernel to prompt the user for the name of the root device
331 when the kernel is booted.
332 .It Va boot_ddb
333 Instructs the kernel to start in the DDB debugger, rather than
334 proceeding to initialise when booted.
335 .It Va boot_gdb
336 Selects gdb-remote mode for the kernel debugger by default.
337 .It Va boot_single
338 Prevents the kernel from initiating a multi-user startup, single-user
339 mode will be entered when the kernel has finished device probes.
340 .It Va boot_userconfig
341 Requests that the kernel's interactive device configuration program
342 be run when the kernel is booted.
343 .It Va boot_verbose
344 Setting this variable causes extra debugging information to be printed
345 by the kernel during the boot phase.
346 .It Va bootfile
347 List of semicolon-separated search path for bootable kernels.
348 The default is
349 .Dq Li kernel;kernel.old .
350 .It Va console
351 Defines the current console.
352 .It Va currdev
353 Selects the default device.
354 Syntax for devices is odd.
355 .It Va init_path
356 Sets the list of binaries which the kernel will try to run as initial
357 process.
358 The default is
359 .Dq Li /sbin/init:/sbin/oinit:/sbin/init.bak:/stand/sysinstall .
360 .It Va interpret
361 Has the value
362 .Dq Li ok
363 if the Forth's current state is interpreting.
364 .It Va LINES
365 Define the number of lines on the screen, to be used by the pager.
366 .It Va module_path
367 Sets the list of directories which will be searched in for modules
368 named in a load command or implicitly required by a dependency.
369 The default value for this variable is
370 .Dq Li /;/boot;/modules .
371 .It Va num_ide_disks
372 Sets the number of IDE disks as a work around for some problems in
373 finding the root disk at boot.
374 This has been deprecated in favor of
375 .Va root_disk_unit .
376 .It Va prompt
377 Value of
378 .Nm Ns 's
379 prompt.
380 Defaults to
381 .Dq Li "${currdev}>" .
382 .It Va root_disk_unit
383 If the code which detects the disk unit number for the root disk is
384 confused, eg. by a mix of SCSI and IDE disks, or IDE disks with
385 gaps in the sequence (eg. no primary slave), the unit number can
386 be forced by setting this variable.
387 .It Va rootdev
388 By default the value of
389 .Va currdev
390 is used to set the root filesystem
391 when the kernel is booted.
392 This can be overridden by setting
393 .Va rootdev
394 explicitly.
395 .It Va dumpdev
396 A name of device where the kernel can save a crash dump in the case
397 of a panic.
398 This automatically sets
399 .Va kern.dumpdev
400 .Xr sysctl 3
401 MIB variable.
402 .El
403 .Pp
404 Other variables are used to override kernel tunable parameters.
405 The following tunables are available:
406 .Bl -tag -width Va
407 .It Va hw.physmem
408 Limit the amount of physical memory the system will use.
409 By default the size is in bytes, but the
410 .Cm k , K , m , M , g
411 and
412 .Cm G
413 suffixes
414 are also accepted and indicate kilobytes, megabytes and gigabytes
415 respectively.
416 An invalid suffix will result in the variable being ignored by the
417 kernel.
418 .It Va kern.maxusers
419 Set the size of a number of statically allocated system tables; see
420 .Xr tuning 7
421 for a description of how to select an appropriate value for this
422 tunable.
423 When set, this tunable replaces the value declared in the kernel
424 compile-time configuration file.
425 .It Va kern.ipc.nmbclusters
426 Set the number of mbuf clusters to be allocated.
427 The value cannot be set below the default
428 determined when the kernel was compiled.
429 Modifies
430 .Va NMBCLUSTERS .
431 .It Va kern.vm.kmem.size
432 Sets the size of kernel memory (bytes).
433 This overrides completely the value
434 determined when the kernel was compiled.
435 Modifies
436 .Va VM_KMEM_SIZE .
437 .It Va kern.maxswzone
438 Limits the amount of KVM to be used to hold swap
439 meta information, which directly governs the
440 maximum amount of swap the system can support.
441 This value is specified in bytes of KVA space
442 and defaults to around 70MBytes.
443 Care should be taken
444 to not reduce this value such that the actual
445 amount of configured swap exceeds 1/2 the
446 kernel-supported swap.
447 The default 70MB allows
448 the kernel to support a maximum of (approximately)
449 14GB of configured swap.
450 Only mess around with
451 this parameter if you need to greatly extend the
452 KVM reservation for other resources such as the
453 buffer cache or
454 .Va NMBCLUSTERS .
455 Modifies
456 .Va VM_SWZONE_SIZE_MAX .
457 .It Va kern.maxbcache
458 Limits the amount of KVM reserved for use by the
459 buffer cache, specified in bytes.
460 The default maximum is 200MB.
461 This parameter is used to
462 prevent the buffer cache from eating too much
463 KVM in large-memory machine configurations.
464 Only mess around with this parameter if you need to
465 greatly extend the KVM reservation for other resources
466 such as the swap zone or
467 .Va NMBCLUSTERS .
468 Note that
469 the NBUF parameter will override this limit.
470 Modifies
471 .Va VM_BCACHE_SIZE_MAX .
472 .It Va machdep.pccard.pcic_irq
473 Overrides the IRQ normally assigned to a PCCARD controller.
474 Typically the first available interrupt will be allocated,
475 which may conflict with other hardware.
476 If this value is set to 0,
477 an interrupt will not be assigned
478 and the controller will operate in polled mode only.
479 .It Va net.inet.tcp.tcbhashsize
480 Overrides the compile-time set value of
481 .Va TCBHASHSIZE
482 or the preset default of 512.
483 Must be a power of 2.
484 .El
485 .Ss BUILTIN PARSER
486 When a builtin command is executed, the rest of the line is taken
487 by it as arguments, and it is processed by a special parser which
488 is not used for regular Forth commands.
489 .Pp
490 This special parser applies the following rules to the parsed text:
491 .Pp
492 .Bl -enum
493 .It
494 All backslash characters are preprocessed.
495 .Bl -bullet
496 .It
497 \eb , \ef , \er , \en and \et are processed as in C.
498 .It
499 \es is converted to a space.
500 .It
501 \ev is converted to
502 .Tn ASCII
503 11.
504 .It
505 \ez is just skipped.
506 Useful for things like
507 .Dq \e0xf\ez\e0xf .
508 .It
509 \e0xN and \e0xNN are replaced by the hex N or NN.
510 .It
511 \eNNN is replaced by the octal NNN
512 .Tn ASCII
513 character.
514 .It
515 \e" , \e' and \e$ will escape these characters, preventing them from
516 receiving special semantics on the step 2 described below.
517 .It
518 \e\e will be replaced with a single \e .
519 .It
520 In any other occurrence, backslash will just be removed.
521 .El
522 .It
523 Every string between non-escaped quotes or double-quotes will be treated
524 as a single word for the purposes of the remaining steps.
525 .It
526 Replace any
527 .Li $VARIABLE
528 or
529 .Li ${VARIABLE}
530 with the value of the environment variable
531 .Va VARIABLE .
532 .It
533 Passes multiple space-delimited arguments to the builtin command called.
534 Spaces can also be escaped through the use of \e\e .
535 .El
536 .Pp
537 An exception to this parsing rule exists, and is described in
538 .Sx BUILTINS AND FORTH .
539 .Ss BUILTINS AND FORTH
540 All builtin words are state-smart, immediate words.
541 If interpreted, they behave exactly as described previously.
542 If they are compiled, though,
543 they extract their arguments from the stack instead of the command line.
544 .Pp
545 If compiled, the builtin words expect to find, at execution time, the
546 following parameters on the stack:
547 .D1 Ar addrN lenN ... addr2 len2 addr1 len1 N
548 where
549 .Ar addrX lenX
550 are strings which will compose the command line that will be parsed
551 into the builtin's arguments.
552 Internally, these strings are concatenated in from 1 to N,
553 with a space put between each one.
554 .Pp
555 If no arguments are passed, a 0
556 .Em must
557 be passed, even if the builtin accepts no arguments.
558 .Pp
559 While this behavior has benefits, it has its trade-offs.
560 If the execution token of a builtin is acquired (through
561 .Ic '
562 or
563 .Ic ['] ) ,
564 and then passed to
565 .Ic catch
566 or
567 .Ic execute ,
568 the builtin behavior will depend on the system state
569 .Bf Em
570 at the time
571 .Ic catch
572 or
573 .Ic execute
574 is processed
575 .Ef
576 \&! This is particular annoying for programs that want or need to
577 treat exceptions.
578 In this case, it is recommended to use a proxy.
579 For example:
580 .Dl : (boot) boot ;
581 .Sh FICL
582 .Tn FICL
583 is a Forth interpreter written in C, in the form of a forth
584 virtual machine library that can be called by C functions and vice
585 versa.
586 .Pp
587 In
588 .Nm ,
589 each line read interactively is then fed to
590 .Tn FICL ,
591 which may call
592 .Nm
593 back to execute the builtin words.
594 The builtin
595 .Ic include
596 will also feed
597 .Tn FICL ,
598 one line at a time.
599 .Pp
600 The words available to
601 .Tn FICL
602 can be classified in four groups.
603 The
604 .Tn ANS
605 Forth standard words, extra
606 .Tn FICL
607 words, extra
608 .Fx
609 words, and the builtin commands.
610 The later were already described.
611 The
612 .Tn ANS
613 Forth standard words are listed in the
614 .Sx STANDARDS
615 section.
616 The words falling in the two other groups are described in the
617 following subsections.
618 .Ss FICL EXTRA WORDS
619 .Bl -tag -width wid-set-super
620 .It Ic .env
621 .It Ic .ver
622 .It Ic -roll
623 .It Ic 2constant
624 .It Ic >name
625 .It Ic body>
626 .It Ic compare
627 This is the STRING word set's
628 .Ic compare .
629 .It Ic compile-only
630 .It Ic endif
631 .It Ic forget-wid
632 .It Ic parse-word
633 .It Ic sliteral
634 This is the STRING word set's
635 .Ic sliteral .
636 .It Ic wid-set-super
637 .It Ic w@
638 .It Ic w!
639 .It Ic x.
640 .It Ic empty
641 .It Ic cell-
642 .It Ic -rot
643 .El
644 .Ss FREEBSD EXTRA WORDS
645 .Bl -tag -width XXXXXXXX
646 .It Ic \&$ Pq --
647 Evaluates the remainder of the input buffer, after having printed it first.
648 .It Ic \&% Pq --
649 Evaluates the remainder of the input buffer under a
650 .Ic catch
651 exception guard.
652 .It Ic .#
653 Works like
654 .Ic .
655 but without outputting a trailing space.
656 .It Ic fclose Pq Ar fd --
657 Closes a file.
658 .It Ic fkey Pq Ar fd -- char
659 Reads a single character from a file.
660 .It Ic fload Pq Ar fd --
661 Process file
662 .Em fd .
663 .It Ic fopen Pq Ar addr len mode Li -- Ar fd
664 Open a file.
665 Returns a file descriptor, or \-1 in case of failure.
666 The
667 .Ar mode
668 parameter selects whether the file is to be opened for read access, write
669 access, or both.
670 The constants
671 .Dv O_RDONLY , O_WRONLY ,
672 and
673 .Dv O_RDWR
674 are defined in
675 .Pa /boot/support.4th ,
676 indicating read only, write only, and read-write access, respectively.
677 .It Xo
678 .Ic fread
679 .Pq Ar fd addr len -- len'
680 .Xc
681 Tries to read
682 .Em len
683 bytes from file
684 .Em fd
685 into buffer
686 .Em addr .
687 Returns the actual number of bytes read, or -1 in case of error or end of
688 file.
689 .It Ic heap? Pq -- Ar cells
690 Return the space remaining in the dictionary heap, in cells.
691 This is not related to the heap used by dynamic memory allocation words.
692 .It Ic inb Pq Ar port -- char
693 Reads a byte from a port.
694 .It Ic key Pq -- Ar char
695 Reads a single character from the console.
696 .It Ic key? Pq -- Ar flag
697 Returns
698 .Ic true
699 if there is a character available to be read from the console.
700 .It Ic ms Pq Ar u --
701 Waits
702 .Em u
703 microseconds.
704 .It Ic outb Pq Ar port char --
705 Writes a byte to a port.
706 .It Ic seconds Pq -- Ar u
707 Returns the number of seconds since midnight.
708 .It Ic tib> Pq -- Ar addr len
709 Returns the remainder of the input buffer as a string on the stack.
710 .It Ic trace! Pq Ar flag --
711 Activates or deactivates tracing.
712 Does not work with
713 .Ic catch .
714 .El
715 .Ss FREEBSD DEFINED ENVIRONMENTAL QUERIES
716 .Bl -tag -width Ds
717 .It arch-i386
718 .Ic TRUE
719 if the architecture is IA32.
720 .It arch-alpha
721 .Ic TRUE
722 if the architecture is AXP.
723 .It FreeBSD_version
724 .Fx
725 version at compile time.
726 .It loader_version
727 .Nm
728 version.
729 .El
730 .Ss SYSTEM DOCUMENTATION
731 .Sh FILES
732 .Bl -tag -width /boot/defaults/loader.conf -compact
733 .It Pa /boot/loader
734 .Nm
735 itself.
736 .It Pa /boot/boot.4th
737 Additional
738 .Tn FICL
739 initialization.
740 .It Pa /boot/boot.conf
741 .Nm
742 bootstrapping script.
743 Deprecated.
744 .It Pa /boot/defaults/loader.conf
745 .It Pa /boot/loader.conf
746 .It Pa /boot/loader.conf.local
747 .Nm
748 configuration files, as described in
749 .Xr loader.conf 5 .
750 .It Pa /boot/loader.rc
751 .Nm
752 bootstrapping script.
753 .It Pa /boot/loader.help
754 Loaded by
755 .Ic help .
756 Contains the help messages.
757 .El
758 .Sh EXAMPLES
759 Boot in single user mode:
760 .Pp
761 .Dl boot -s
762 .Pp
763 Loads kernel's user configuration file.
764 Notice that a kernel must be loaded before any other
765 .Ic load
766 command is attempted.
767 .Bd -literal -offset indent
768 load kernel
769 load -t userconfig_script /boot/kernel.conf
770 .Ed
771 .Pp
772 Loads the kernel, a splash screen, and then autoboots in five seconds.
773 .Bd -literal -offset indent
774 load kernel
775 load splash_bmp
776 load -t splash_image_data /boot/chuckrulez.bmp
777 autoboot 5
778 .Ed
779 .Pp
780 Sets the disk unit of the root device to 2, and then boots.
781 This would be needed in the case of a two IDE disks system,
782 with the second IDE hardwired to wd2 instead of wd1.
783 .Bd -literal -offset indent
784 set root_disk_unit=2
785 boot /kernel
786 .Ed
787 .Pp
788 See also:
789 .Bl -tag -width /usr/share/examples/bootforth/X
790 .It Pa /boot/loader.4th
791 Extra builtin-like words.
792 .It Pa /boot/support.4th
793 .Pa loader.conf
794 processing words.
795 .It Pa /usr/share/examples/bootforth/
796 Assorted examples.
797 .El
798 .Sh ERRORS
799 The following values are thrown by
800 .Nm :
801 .Bl -tag -width XXXXX -offset indent
802 .It 100
803 Any type of error in the processing of a builtin.
804 .It -1
805 .Ic Abort
806 executed.
807 .It -2
808 .Ic Abort"
809 executed.
810 .It -56
811 .Ic Quit
812 executed.
813 .It -256
814 Out of interpreting text.
815 .It -257
816 Need more text to succeed -- will finish on next run.
817 .It -258
818 .Ic Bye
819 executed.
820 .It -259
821 Unspecified error.
822 .El
823 .Sh SEE ALSO
824 .Xr libstand 3 ,
825 .Xr loader.conf 5 ,
826 .Xr tuning 7 ,
827 .Xr boot 8 ,
828 .Xr btxld 8
829 .Sh STANDARDS
830 For the purposes of ANS Forth compliance, loader is an
831 .Bf Em
832 ANS Forth System with Environmental Restrictions, Providing
833 .Ef
834 .Bf Li
835 .No .( ,
836 .No :noname ,
837 .No ?do ,
838 parse, pick, roll, refill, to, value, \e, false, true,
839 .No <> ,
840 .No 0<> ,
841 compile\&, , erase, nip, tuck
842 .Ef
843 .Em and
844 .Li marker
845 .Bf Em
846 from the Core Extensions word set, Providing the Exception Extensions
847 word set, Providing the Locals Extensions word set, Providing the
848 Memory-Allocation Extensions word set, Providing
849 .Ef
850 .Bf Li
851 \&.s,
852 bye, forget, see, words,
853 \&[if],
854 \&[else]
855 .Ef
856 .Em and
857 .Li [then]
858 .Bf Em
859 from the Programming-Tools extension word set, Providing the
860 Search-Order extensions word set.
861 .Ef
862 .Sh HISTORY
863 .Nm
864 first appeared in
865 .Fx 3.1 .
866 .Sh AUTHORS
867 .An -nosplit
868 .Nm
869 was written by
870 .An Michael Smith Aq msmith@FreeBSD.org .
871 .Pp
872 .Tn FICL
873 was written by
874 .An John Sadler Aq john_sadler@alum.mit.edu .
875 .Sh BUGS
876 The
877 .Ic expect
878 and
879 .Ic accept
880 words will read from the input buffer instead of the console.
881 The latter will be fixed, but the former will not.