diff options
Diffstat (limited to 'usr/src/man/man5/loader.5')
| -rw-r--r-- | usr/src/man/man5/loader.5 | 909 |
1 files changed, 0 insertions, 909 deletions
diff --git a/usr/src/man/man5/loader.5 b/usr/src/man/man5/loader.5 deleted file mode 100644 index 4c8edf3d3f..0000000000 --- a/usr/src/man/man5/loader.5 +++ /dev/null @@ -1,909 +0,0 @@ -.\" Copyright (c) 1999 Daniel C. Sobral -.\" Copyright 2019 OmniOS Community Edition (OmniOSce) Association. -.\" 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. -.\" -.Dd January 25, 2022 -.Dt LOADER 5 -.Os -.Sh NAME -.Nm loader -.Nd kernel bootstrapping final stage -.Sh DESCRIPTION -The -.Nm -is the final stage of -.Nm illumos Ns 's -kernel bootstrapping process. -The actual name for the stage depends on the platform. -On IA32 (i386) architectures with BIOS firmware, it is a -.Pa BTX -client and named -.Nm loader . -It is linked statically to libstand and usually located in the directory -.Pa /boot . -.Pp -.Nm -supports booting from -.Cm ZFS , -.Cm UFS , -.Cm PCFS , -.Cm HSFS -and -.Cm NFS -file systems. -Additionally, -.Nm -can load files from the -.Cm TFTP -file service. -The NFS and TFTP based boot is enabled via -.Xr pxeboot 5 . -The -.Nm -also does support uncompressing gzip files while reading. -The uncompression will happen automatically if the compressed file is stored -without .gz suffix or if the file is accessed by leaving out the .gz suffix from -the name. -If the file is referred by full name, including .gz suffix, then the file -content is read as is and the uncompression is not performed. -.Pp -.Nm -provides a scripting language that can be used to -automate tasks, do pre-configuration or assist in recovery -procedures. -This scripting language is roughly divided in -two main components. -The smaller one is a set of commands -designed for direct use by the casual user, called "builtin -commands" for historical reasons. -The main drive behind these commands is user-friendliness. -The bigger component is an -.Tn ANS -Forth compatible Forth interpreter based on FICL, by -.An John Sadler . -.Pp -During initialization, -.Nm -will probe for a console and set the -.Va console -variable, or set it to serial console -.Pq Do Li ttya Dc - Dq Li ttyd -if the previous boot stage used that. -If multiple consoles are selected, they will be listed separated by commas. -Then, devices are probed, -.Va currdev -and -.Va loaddev -are set, and -.Va screen-#cols , -.Va screen-#rows , -and -.Va ISADIR -are set. -Next, -.Tn FICL -is initialized, the builtin words are added to its vocabulary. -The inner interpreter -.Nm -will use with -.Tn FICL -is then set to -.Ic interpret , -which is -.Tn FICL Ns 's -default. -After that, -.Pa /boot/loader.rc -is processed if available. -These files are processed through the -.Ic include -command, which reads all of them into memory before processing them, -making disk changes possible. -.Pp -At this point, if an -.Ic autoboot -has not been tried, and if -.Va autoboot_delay -is not set to -.Dq Li NO -(not case sensitive), then an -.Ic autoboot -will be tried. -If the system gets past this point, -.Va prompt -will be set and -.Nm -will engage interactive mode. -Please note that historically even when -.Va autoboot_delay -is set to -.Dq Li 0 -user will be able to interrupt autoboot process by pressing some key -on the console while kernel and modules are being loaded. -In some -cases such behaviour may be undesirable, to prevent it set -.Va autoboot_delay -to -.Dq Li -1 , -in this case -.Nm -will engage interactive mode only if -.Ic autoboot -has failed. -.Ss Builtin Commands -In -.Nm , -builtin commands take parameters from the command line. -If an error condition occurs, an exception will be generated, -which can be intercepted using -.Tn ANS -Forth exception handling -words. -If not intercepted, an error message will be displayed and -the interpreter's state will be reset, emptying the stack and restoring -interpreting mode. -.Pp -The builtin commands available are: -.Pp -.Bl -tag -width Ds -compact -.It Ic autoboot Op Ar seconds Op Ar prompt -Proceeds to bootstrap the system after a number of seconds, if not -interrupted by the user. -Displays a countdown prompt -warning the user the system is about to be booted, -unless interrupted by a key press. -The kernel will be loaded first if necessary. -Defaults to 10 seconds. -.Pp -.It Ic bcachestat -Displays statistics about disk cache usage. -For debugging only. -.Pp -.It Ic boot -.It Ic boot Ar kernelname Op Cm ... -.It Ic boot Fl flag Cm ... -Immediately proceeds to bootstrap the system, loading the kernel -if necessary. -Any flags or arguments are passed to the kernel, but they -must precede the kernel name, if a kernel name is provided. -.Pp -.Em WARNING : -The behavior of this builtin is changed if -.Xr loader.4th 5 -is loaded. -.Pp -.It Ic chain Ar device -Chain load another boot loader from the specified device. -Device can be either disk name or partition. -.Pp -.It Ic echo Xo -.Op Fl n -.Op Aq message -.Xc -Displays text on the screen. -A new line will be printed unless -.Fl n -is specified. -.Pp -.It Ic heap -Displays memory usage statistics. -For debugging purposes only. -.Pp -.It Ic help Op topic Op subtopic -Shows help messages read from -.Pa /boot/loader.help . -The special topic -.Em index -will list the topics available. -.Pp -.It Ic include Ar file Op Ar -Process script files. -Each file, in turn, is completely read into memory, -and then each of its lines is passed to the command line interpreter. -If any error is returned by the interpreter, the include -command aborts immediately, without reading any other files, and -returns an error itself (see -.Sx ERRORS ) . -.Pp -.It Ic load Xo -.Op Fl t Ar type -.Ar file Cm ... -.Xc -Loads a kernel or file of opaque contents tagged as being of the type -.Ar type . -Kernel and modules can be either in a.out or ELF format. -Any arguments passed after the name of the file to be loaded -will be passed as arguments to that file. -.Pp -.It Ic ls Xo -.Op Fl l -.Op Ar path -.Xc -Displays a listing of files in the directory -.Ar path , -or the root directory if -.Ar path -is not specified. -If -.Fl l -is specified, file sizes will be shown too. -.Pp -.It Ic lsdev Op Fl v -Lists all of the devices from which it may be possible to load modules. -In addition to disks and partitions, ZFS pools are also listed. -If -.Fl v -is specified, more details are printed. -For ZFS pools the output resembles -.Nm zpool Cm status -output. -.Pp -.It Ic lsmod Op Fl v -Displays loaded modules. -If -.Fl v -is specified, more details are shown. -.Pp -.It Ic lszfs Ar filesystem -A ZFS extended command that can be used to explore the ZFS filesystem -hierarchy in a pool. -Lists the immediate children of the -.Ar filesystem . -The filesystem hierarchy is rooted at a filesystem with the same name -as the pool. -.Pp -.It Ic more Ar file Op Ar -Display the files specified, with a pause at each -.Va screen-#rows -displayed. -.Pp -.It Ic read Xo -.Op Fl t Ar seconds -.Op Fl p Ar prompt -.Op Va variable -.Xc -Reads a line of input from the terminal, storing it in -.Va variable -if specified. -A timeout can be specified with -.Fl t , -though it will be canceled at the first key pressed. -A prompt may also be displayed through the -.Fl p -flag. -.Pp -.It Ic reboot -Immediately reboots the system. -.Pp -.It Ic set Ar variable -.It Ic set Ar variable Ns = Ns Ar value -Set loader's environment variables. -.Pp -.It Ic show Op Va variable -Displays the specified variable's value, or all variables and their -values if -.Va variable -is not specified. -.Pp -.It Ic unload -Remove all modules from memory. -.Pp -.It Ic unset Va variable -Removes -.Va variable -from the environment. -.Pp -.It Ic \&? -Lists available commands. -.El -.Ss ZFS Features -.Nm -supports the following format for specifying ZFS filesystems which -can be used wherever -.Nm -refers to a device specification: -.Pp -.Ar zfs:pool/filesystem: -.Pp -where -.Pa pool/filesystem -is a ZFS filesystem name as described in -.Xr zfs 1M . -.Ss Builtin Environment Variables -The -.Nm -has actually two different kinds of -.Sq environment -variables. -There are ANS Forth's -.Em environmental queries , -and a separate space of environment variables used by builtins, which -are not directly available to Forth words. -It is the latter type that this section covers. -.Pp -Environment variables can be set and unset through the -.Ic set -and -.Ic unset -builtins, and can have their values interactively examined through the -use of the -.Ic show -builtin. -Their values can also be accessed as described in -.Sx BUILTIN PARSER . -.Pp -Notice that these environment variables are not inherited by any shell -after the system has been booted. -.Pp -A few variables are set automatically by -.Nm . -Others can affect the behavior of either -.Nm -or the kernel at boot. -Some options may require a value, -while others define behavior just by being set. -Both types of builtin variables are described below. -.Bl -tag -width bootfile -.It Va autoboot_delay -Number of seconds -.Ic autoboot -will wait before booting. -If this variable is not defined, -.Ic autoboot -will default to 10 seconds. -.Pp -If set to -.Dq Li NO , -no -.Ic autoboot -will be automatically attempted after processing -.Pa /boot/loader.rc , -though explicit -.Ic autoboot Ns 's -will be processed normally, defaulting to 10 seconds delay. -.Pp -If set to -.Dq Li 0 , -no delay will be inserted, but user still will be able to interrupt -.Ic autoboot -process and escape into the interactive mode by pressing some key -on the console while kernel and -modules are being loaded. -.Pp -If set to -.Dq Li -1 , -no delay will be inserted and -.Nm -will engage interactive mode only if -.Ic autoboot -has failed for some reason. -.It Va boot_ask -Will set -.Xr kernel 1M -.Fl a -option. -.It Va boot_debug -Will set -.Xr kernel 1M -.Fl d -option. -.It Va boot_kmdb -Will set -.Xr kernel 1M -.Fl k -option. -.It Va boot_reconfigure -Will set -.Xr kernel 1M -.Fl r -option. -.It Va boot_single -Will set -.Xr kernel 1M -.Fl s -option. -.It Va boot_verbose -Will set -.Xr kernel 1M -.Fl v -option. -.It Va boot-args -Will set custom arguments for the kernel. -If set in -.Nm -configuration, the -.Nm -startup will parse the -.Va boot-args -value to set boot prefixed variables listed above, any unrecognized options -are added to kernel command line verbatim. -.It Va bootfile -The name of the kernel. -.It Va console -Defines the current console or consoles. -Multiple consoles may be specified. -In that case, the first listed console will become the default console for -the -.Xr kernel 1M . -.It Va currdev -Selects the default device. -Syntax for devices is odd. -.It Va interpret -Has the value -.Dq Li ok -if the Forth's current state is interpreting. -.It Va screen-#rows -Define the number of lines on the screen, to be used by the pager. -.It Va module_path -Sets the list of directories which will be searched for modules -named in a load command or implicitly required by a dependency. -The default value for this variable is -.Dq Li /platform/i86pc/${ISADIR} -.It Va prompt -Value of -.Nm Ns 's -prompt. -Defaults to -.Dq Li "${interpret}" . -If variable -.Va prompt -is unset, the default prompt is -.Ql > . -.It Va os_console -If set, the value is used to set -.Xr kernel 1M -.Va console -property. -.El -.Pp -Other variables are used for loader or to set kernel properties or for -informational purposes. -.Ss Builtin Parser -When a builtin command is executed, the rest of the line is taken -by it as arguments, and it is processed by a special parser which -is not used for regular Forth commands. -.Pp -This special parser applies the following rules to the parsed text: -.Bl -enum -.It -All backslash characters are preprocessed. -.Bl -bullet -.It -\eb , \ef , \er , \en and \et are processed as in C. -.It -\es is converted to a space. -.It -\ev is converted to -.Tn ASCII -11. -.It -\ez is just skipped. -Useful for things like -.Dq \e0xf\ez\e0xf . -.It -\e0xN and \e0xNN are replaced by the hex N or NN. -.It -\eNNN is replaced by the octal NNN -.Tn ASCII -character. -.It -\e" , \e' and \e$ will escape these characters, preventing them from -receiving special treatment in Step 2, described below. -.It -\e\e will be replaced with a single \e . -.It -In any other occurrence, backslash will just be removed. -.El -.It -Every string between non-escaped quotes or double-quotes will be treated -as a single word for the purposes of the remaining steps. -.It -Replace any -.Li $VARIABLE -or -.Li ${VARIABLE} -with the value of the environment variable -.Va VARIABLE . -.It -Space-delimited arguments are passed to the called builtin command. -Spaces can also be escaped through the use of \e\e . -.El -.Pp -An exception to this parsing rule exists, and is described in -.Sx Builtins And FORTH . -.Ss Builtins And FORTH -All builtin words are state-smart, immediate words. -If interpreted, they behave exactly as described previously. -If they are compiled, though, -they extract their arguments from the stack instead of the command line. -.Pp -If compiled, the builtin words expect to find, at execution time, the -following parameters on the stack: -.D1 Ar addrN lenN ... addr2 len2 addr1 len1 N -where -.Ar addrX lenX -are strings which will compose the command line that will be parsed -into the builtin's arguments. -Internally, these strings are concatenated in from 1 to N, -with a space put between each one. -.Pp -If no arguments are passed, a 0 -.Em must -be passed, even if the builtin accepts no arguments. -.Pp -While this behavior has benefits, it has its trade-offs. -If the execution token of a builtin is acquired (through -.Ic ' -or -.Ic ['] ) , -and then passed to -.Ic catch -or -.Ic execute , -the builtin behavior will depend on the system state -.Bf Em -at the time -.Ic catch -or -.Ic execute -is processed! -.Ef -This is particularly annoying for programs that want or need to -handle exceptions. -In this case, the use of a proxy is recommended. -For example: -.Dl : (boot) boot ; -.Ss FICL -.Tn FICL -is a Forth interpreter written in C, in the form of a forth -virtual machine library that can be called by C functions and vice -versa. -.Pp -In -.Nm , -each line read interactively is then fed to -.Tn FICL , -which may call -.Nm -back to execute the builtin words. -The builtin -.Ic include -will also feed -.Tn FICL , -one line at a time. -.Pp -The words available to -.Tn FICL -can be classified into four groups. -The -.Tn ANS -Forth standard words, extra -.Tn FICL -words, extra -.Fx -words, and the builtin commands; -the latter were already described. -The -.Tn ANS -Forth standard words are listed in the -.Sx STANDARDS -section. -The words falling in the two other groups are described in the -following subsections. -.Ss FICL Extra Words -.Bl -tag -width wid-set-super -.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 Loader Extra Words -.Bl -tag -width XXXXXXXX -.It Ic \&$ Pq -- -Evaluates the remainder of the input buffer, after having printed it first. -.It Ic \&% Pq -- -Evaluates the remainder of the input buffer under a -.Ic catch -exception guard. -.It Ic .# -Works like -.Ic \&. -but without outputting a trailing space. -.It Ic fclose Pq Ar fd -- -Closes a file. -.It Ic fkey Pq Ar fd -- char -Reads a single character from a file. -.It Ic fload Pq Ar fd -- -Processes a file -.Em fd . -.It Ic fopen Pq Ar addr len mode Li -- Ar fd -Opens a file. -Returns a file descriptor, or \-1 in case of failure. -The -.Ar mode -parameter selects whether the file is to be opened for read access, write -access, or both. -The constants -.Dv O_RDONLY , O_WRONLY , -and -.Dv O_RDWR -are defined in -.Pa /boot/forth/support.4th , -indicating read only, write only, and read-write access, respectively. -.It Xo -.Ic fread -.Pq Ar fd addr len -- len' -.Xc -Tries to read -.Em len -bytes from file -.Em fd -into buffer -.Em addr . -Returns the actual number of bytes read, or -1 in case of error or end of -file. -.It Ic heap? Pq -- Ar cells -Return the space remaining in the dictionary heap, in cells. -This is not related to the heap used by dynamic memory allocation words. -.It Ic inb Pq Ar port -- char -Reads a byte from a port. -.It Ic isvirtualized? Pq -- Ar addr len flag | Ar flag -Returns -.Ic true -and string with virtualization engine name or -.Ic false . -.It Ic key Pq -- Ar char -Reads a single character from the console. -.It Ic key? Pq -- Ar flag -Returns -.Ic true -if there is a character available to be read from the console. -.It Ic ms Pq Ar u -- -Waits -.Em u -microseconds. -.It Ic outb Pq Ar port char -- -Writes a byte to a port. -.It Ic seconds Pq -- Ar u -Returns the number of seconds since midnight. -.It Ic tib> Pq -- Ar addr len -Returns the remainder of the input buffer as a string on the stack. -.El -.Ss Loader Extra Framebuffer Words -.Bl -tag -width XXXXXXXX -.It Ic fb-bezier Pq Ar x1 y1 x2 y2 x3 y3 width -- -Draws a quadratic Bezier curve in the current foreground color using the -three provided points and specified line with. -.It Ic fb-drawrect Pq Ar x1 y1 x2 y2 fill -- -Draws a rectangle to the screen with the top left at -.Em (x1,y1) -and the bottom right at -.Em (x2,y2) -, using the current foreground color. -If -.Em fill -is -.Ic true -then the rectangle will be filled in. -.It Ic fb-line Pq Ar x1 y1 x2 y2 width -- -Draws a line from -.Em (x1,y1) -to -.Em (x2,y2) -in the current foreground color and with the specified width. -.It Ic fb-putimage Pq Ar flags x1 y1 x2 y2 addr len -- flag -Outputs an image to the screen. -Returns -.Ic true -if the image was able to be written and -.Ic false -otherwise. -Only truecolor PNG images are supported and the path to the file -must be provided through the -.Em addr -and -.Em len -arguments on the stack. -The image will be displayed in the rectangular screen region with the top left -at -.Em (x1,y1) -and the bottom right at -.Em (x2,y2) -. -.Pp -Either -.Em x2 -or -.Em y2 -can be set to "0" which causes it to be calculated to maintain the aspect -ratio of the image. -If both are "0" then the native resolution of the image will be used. -.Pp -If -.Em x1 -is "0", then the image will be placed as far over to the right of the -screen as possible. -Similarly, if -.Em y1 -is "0", then the image will be placed as far down the screen as possible. -.Pp -Flags is a bitfield; the following bits are defined: -.Bl -tag -width XXXXX -offset indent -.It 1 -Draw a single pixel border around the image in the current foreground color. -.It 2 -Do not scroll the image with the rest of the screen. -.It 128 -Output diagnostic information (for debugging). -.El -.It Ic fb-setpixel Pq Ar x y -- -Colors the pixel at -.Em (x,y) -with the current foreground color. -.It Ic term-drawrect Pq Ar x1 y1 x2 y2 -- -Draws a rectangle with rounded corners using terminal coordinates and the -current foreground color. -.El -.Ss Loader Defined Environmental Queries -.Bl -tag -width Ds -.It arch-i386 -.Ic TRUE -if the architecture is IA32. -.It loader_version -.Nm -version. -.El -.Ss Errors -The following values are thrown by -.Nm : -.Bl -tag -width XXXXX -offset indent -.It 100 -Any type of error in the processing of a builtin. -.It -1 -.Ic Abort -executed. -.It -2 -.Ic Abort" -executed. -.It -56 -.Ic Quit -executed. -.It -256 -Out of interpreting text. -.It -257 -Need more text to succeed -- will finish on next run. -.It -258 -.Ic Bye -executed. -.It -259 -Unspecified error. -.El -.Sh FILES -.Bl -tag -width /boot/defaults/loader.conf -compact -.It Pa /boot/defaults/loader.conf -.It Pa /boot/conf.d/* -.It Pa /boot/loader.conf -.It Pa /boot/loader.conf.local -.Nm -configuration files, as described in -.Xr loader.conf 4 . -.It Pa /boot/loader.help -Loaded by -.Ic help . -Contains the help messages. -.It Pa /boot/loader.rc -.Nm -bootstrapping script. -.It Pa /boot/forth/loader.4th -Extra builtin-like words. -.It Pa /boot/forth/support.4th -.Pa loader.conf -processing words. -.It Pa /boot/loader -.Nm -itself. -.El -.Sh EXAMPLES -Boot in single user mode: -.Pp -.Dl boot -s -.Pp -Load the kernel, a boot_archive, and then autoboot in five seconds. -Notice that a kernel must be loaded before any other -.Ic load -command is attempted. -.Bd -literal -offset indent -load /platform/i86pc/kernel/amd64/unix -load -t rootfs /platform/i86pc/amd64/boot_archive -autoboot 5 -.Ed -.Pp -Set the default device used for loading a kernel from a ZFS filesystem: -.Bd -literal -offset indent -set currdev=zfs:rpool/ROOT/knowngood: -.Ed -.Sh NOTES -Although setting the -.Va currdev -as shown in the example above is supported, it is advisable to use loader -beadm command or boot environment menu instead. -The reason is, the beadm or menu selection will also instruct loader to clean up -the currently set configuration and load configuration from the new boot -environment. -.Sh SEE ALSO -.Xr boot 1M , -.Xr btxld 1onbld , -.Xr loader.conf 4 -.Sh STANDARDS -For the purposes of ANS Forth compliance, loader is an -.Bf Em -ANS Forth System with Environmental Restrictions, Providing -.Ef -.Bf Li -.No .( , -.No :noname , -.No ?do , -parse, pick, roll, refill, to, value, \e, false, true, -.No <> , -.No 0<> , -compile\&, , erase, nip, tuck -.Ef -.Em and -.Li marker -.Bf Em -from the Core Extensions word set, Providing the Exception Extensions -word set, Providing the Locals Extensions word set, Providing the -Memory-Allocation Extensions word set, Providing -.Ef -.Bf Li -\&.s, -bye, forget, see, words, -\&[if], -\&[else] -.Ef -.Em and -.Li [then] -.Bf Em -from the Programming-Tools extension word set, Providing the -Search-Order extensions word set. -.Ef |
