BOOT(8) UNIX Programmer's Manual BOOT(8) NAME boot - 2.11BSD bootstrap proceedure DESCRIPTION The 2.11BSD system is started by a two-stage process. The first is a primary bootstrap (limited to 512 bytes) which is able to read in relatively small stand-alone programs; the second (called _b_o_o_t) is used to read in the system itself. The primary bootstrap must reside in block zero of the boot device (the disklabel resides in block one). It can be read in and started by standard ROM cold boot routines or, if necessary, by keying in a small startup routine. The pri- mary bootstrap is capable of loading only type 0407 execut- able files (impure (non-shared), non-separate I&D.) Copies of the block zero bootstraps are kept in the directory /_m_d_e_c. _D_i_s_k_l_a_b_e_l(8) is normally used to place a copy of the appropriate bootstrap in block zero of new file systems. The primary bootstrap loads _b_o_o_t from the file system that starts at block 0 of the drive specified to the boot ROM. Normally the boot device is automatically used as the root filesystem. This action can be overriden by specifying the -R command to _b_o_o_t. If _b_o_o_t is not found the system will hang as the primary boot spins in an endless loop trying to find _b_o_o_t. No diagnostic message results if the file cannot be found. o+ In an emergency, the bootstrap methods described in the paper _I_n_s_t_a_l_l_i_n_g _a_n_d _O_p_e_r_a_t_i_n_g _2._1_1_B_S_D can be used to boot from a distribution tape. The secondary boot program, called _b_o_o_t, actually brings in the system. When read into location 0 and executed, _b_o_o_t sets up memory management, relocates itself into high memory, and types its name and a `:' on the console. If this is an automatic, unattended reboot, _b_o_o_t will use a default file specification for the installation, typing the file's name after the prompt. Otherwise, it reads a file specification from the console. Normal line editing charac- ters can be used to make corrections while typing this (see below for file specification format). If only a carriage return is typed, a default name (/unix) will be used. _B_o_o_t finds the [specified] file and loads it into memory location zero, sets up memory management as required, and calls the program by executing a `trap' instruction. For the system to boot, /_e_t_c/_i_n_i_t must exist and be execut- able; if it is not, the kernel will print a message to that effect and loop. Further, for a single user boot, the files /_b_i_n/_s_h and /_d_e_v/_c_o_n_s_o_l_e must also exist and /_b_i_n/_s_h must be executable (if either of these is missing, _i_n_i_t will attempt Printed 11/26/99 May 24, 1996 1 BOOT(8) UNIX Programmer's Manual BOOT(8) multi-user operation). For a multi-user boot the file /_e_t_c/_t_t_y_s must exist (if missing, _i_n_i_t will attempt single user operation). _I_n_i_t runs the _a_u_t_o_c_o_n_f_i_g(8) program to probe for and ini- tialize devices. _A_u_t_o_c_o_n_f_i_g only knows to look in /_u_n_i_x, thus if an alternate kernel name was specified none of the devices except /_d_e_v/_c_o_n_s_o_l_e and the boot disk will be known. If _a_u_t_o_c_o_n_f_i_g problems are suspected (or if you are simply voyeuristic) the debug flag can be turned on by specifying -D to _b_o_o_t (see below). When the system is running in single user mode, it starts a single user shell on the console which types a `#' prompt. After doing any file system checks and setting the date (_d_a_t_e(1)) a multi-user system can be brought up by typing an EOT (control-d) in response to the `#' prompt. Boot file specification format: The file specifications used with _b_o_o_t are of the form: _d_e_v_i_c_e(_c_t_l_r,_u_n_i_t,_p_a_r_t)_p_a_t_h [-_a_R_r_D_s] or -_b_o_o_t_c_o_m_m_a_n_d where _d_e_v_i_c_e is the type of the device to be searched; _c_t_l_r is the controller number of the disk _u_n_i_t is the unit number of the disk or tape; _p_a_r_t is the partition number of a filesystem on the speci- fied disk or the tape file number if the device is a tape. The underlying device driver must support disk- labels and a valid disklabel must be present if _p_a_r_t is anything except 0. _p_a_t_h is the path name of a disk file to be loaded with all mount prefixes stripped off (_p_a_t_h must be omitted for tape files.) Tape files are separated by single tape marks. Flags to _b_o_o_t may be specified in either of two places. At the : prompt and after the _f_i_l_e name. The options are: -a Ask for a kernel name. This is present for symmetry Printed 11/26/99 May 24, 1996 2 BOOT(8) UNIX Programmer's Manual BOOT(8) only because in order to specify this option you already have to be at the : prompt. -D Turn on the _a_u_t_o_c_o_n_f_i_g debug flag. -R force the kernel to use its compiled in root device rather than adapting to the boot device. -s tell _i_n_i_t to enter single user state rather than bring- ing the system all the way up to multi-user mode. -r mount the root filesystem read-only. This is not currently supported by the kernel mostly because pipes are implemented in the filesystem. Commands (-_b_o_o_t_c_o_m_m_a_n_d) to _b_o_o_t are: -bootflags N where N is a decimal number. -bootflags flag where flag is from the list above. -bootdebug N where N is a decimal number. This is a general purpose flag word used by _b_o_o_t and is not passed to the loaded program or kernel. _D_e_v_i_c_e is one of the following xp RM02/03/05, RP04/05/06, DIVA, SI Eagle, CDC 9766, Fuji 160 rp RP03 rk RK05 hk RK06/7 rl RL01/2 si RM05, CDC 9766 ra RA60/80/81, RX50, RD51/52/53, RC25 ht TU/TE16 tm TU/TE10 ts TS-11 The stand alone tape drive unit number is specially encoded to specify both unit number and tape density (BPI). Most tape subsystems either automatically adjust to tape density or have switches on the drives to force the density to a particular setting, but for those which don't the following density select mechanisms may be necessary. The ts only operates at 1600BPI, so there is no special unit density encoding. The ht will operate at either 800BPI or 1600BPI. Units 0 through 3 correspond to 800BPI, and 4 through 7 to 1600BPI on drives 0 through 3 respectively. The standard DEC tm only supports 800BPI (and hence can't be used with the standard distribution tape), but several widely used tm emulators support 1600BPI and even 6250BPI. Units 0 through 3 correspond to 800BPI, 4 through 7 to 1600BPI, and 8 Printed 11/26/99 May 24, 1996 3 BOOT(8) UNIX Programmer's Manual BOOT(8) through 11 to 6250BPI on drives 0 through 3 respectively. For example, to boot a system from unit 0 on an RK07, type "hk(0,0)unix" to the boot prompt. The specification "ra(1,0)unix" indicates an MSCP disk, unit 1. The specifi- cation "ra(1,0,0)unix" indicates an MSCP disk, unit 0 but on controller 1. And finally the specification "ts(0,3)" would cause the fourth file on a tape threaded on `ts' tape drive 0 to be loaded and executed. Cold boot loaders: The following programs to load and exe- cute the primary bootstrap may be installed in read-only memories or manually keyed into main memory. Each program is position-independent but should be placed well above location 0 so it will not be overwritten. Each reads a block from the beginning of a device into core location zero. The octal words constituting the program are listed on the left. RK (drive 0): 012700 mov $rkda,r0 177412 005040 clr -(r0) / rkda cleared by start 010040 mov r0,-(r0) 012740 mov $5,-(r0) 000005 105710 1: tstb (r0) 002376 bge 1b 005007 clr pc RP (drive 0) 012700 mov $rpmr,r0 176726 005040 clr -(r0) 005040 clr -(r0) 005040 clr -(r0) 010040 mov r0,-(r0) 012740 mov $5,-(r0) 000005 105710 1: tstb (r0) 002376 bge 1b 005007 clr pc TM (drive 0): 012700 mov $tmba,r0 172526 010040 mov r0,-(r0) 012740 mov $60003,-(r0) 060003 000777 br . Printed 11/26/99 May 24, 1996 4 BOOT(8) UNIX Programmer's Manual BOOT(8) FILES /unix system code /boot system bootstrap /etc/init system process dispatcher /mdec/xxuboot sector 0 boot blocks, xx is disk type SEE ALSO crash(8V), autoconfig(8), reboot(2), disklabel(8), fsck(8), init(8) Printed 11/26/99 May 24, 1996 5