BOOT(8) UNIX Programmer's Manual BOOT(8) NAME boot - startup procedures DESCRIPTION A PDP-11 UNIX system is started by a two-stage process. The first is a primary bootstrap which is able to read in rela- tively 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 the otherwise unused block zero of the boot device. It can be read in and started by the standard ROM programs, or if necessary by keying in a small startup routine. This program is capable of loading type 407 executable files (not shared, not separate I&D). It will normally load _b_o_o_t immediately after being executed; if _b_o_o_t is not found, the name of another file to try will be read from the console. The named pro- gram is retrieved from the file system that starts at block 0 of drive 0 of the boot device (this is usally root). Some devices' primary bootstraps will prompt with a `>', others have no prompt. No diagnostic message results if the file cannot be found, and no provision is made for correcting typographical errors. Hitting a return will cause an error and allow restarting. The second step, 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 the default file for the installation, typing the file's name after the prompt. Oth- erwise, it reads a device specification from the console (see below) followed immediately by a pathname. Normal line editing characters can be used to make corrections while typing this (i.e. '#' and '@'). If only a carriage return is typed, the default name will be used. _b_o_o_t finds the corresponding file on the given device, loads that file into memory location zero, sets up memory management as required, and calls the program by executing a `trap' instruction. Conventionally, the name of the secondary boot program is `/boot' (if the root is the first file system on the disk) and the name of the current version of the system is `/unix'. For the system to boot, three files (and the directories leading to them) must exist. The first is /_e_t_c/_i_n_i_t, which must be present and executable; if it is not, the kernel will print a message to that effect and loop. The other files are /_b_i_n/_s_h, which must also be executable, and /_d_e_v/_c_o_n_s_o_l_e. (If either of these is missing, _i_n_i_t will attempt multi-user operation.) When the system is running, Printed 8/2/83 1 BOOT(8) UNIX Programmer's Manual BOOT(8) 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 is brought up by typ- ing an EOT (control-d) in response to the `#' prompt. Device specifications. A device specification has the fol- lowing form: device(unit,offset) where _d_e_v_i_c_e is the type of the device to be searched, _u_n_i_t is the unit number of the device, and _o_f_f_s_e_t is the block offset of the file system on the disk, in physical (512 byte) blocks, or the file number if the device is a tape. Tape files are separated by single tape marks. _d_e_v_i_c_e is one of the following hk RK06/7 hp RP04/5/6 ht TU/TE16 rk RK05 rl RL01/2 rm RM02/3 rp RP03 tm TU/TE10 ts TS-11 xp RM05 (actually, xp, hp and rm all use the same driver and distin- guish the drive type from the drive-type register). For example, the specification rp(1,7000) indicates an RP03 disk, unit 1, and the file system found starting at block 7000 (cylinder 35). ROM programs. The following programs to call 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 begin- ning 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 Printed 8/2/83 2 BOOT(8) UNIX Programmer's Manual BOOT(8) 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 FILES /unix system code /usr/src/sys/mdec/xxubootcopy of primary bootstrap for dev- ice xx /boot second stage bootstrap SEE ALSO init(8), reboot(8) Printed 8/2/83 3