.TH BOOT 8 .UC .SH NAME boot \- startup procedures .SH 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 relatively small stand-alone programs; the second (called .IR boot ) is used to read in the system itself. .PP 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 .I boot immediately after being executed; if .I boot is not found, the name of another file to try will be read from the console. The named program 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. .PP The second step, called .I boot, actually brings in the system. When read into location 0 and executed, .I boot 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, .I boot will use the default file for the installation, typing the file's name after the prompt. Otherwise, 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. .I boot 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. .PP 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'. .PP For the system to boot, three files (and the directories leading to them) must exist. The first is .IR /etc/init , 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 .IR /bin/sh , which must also be executable, and .IR /dev/console . (If either of these is missing, \fIinit\fP will attempt multi-user operation.) When the system is running, it starts a single-user shell on the console which types a `#' prompt. After doing any file system checks and setting the date (\fIdate\fP\|(1)) a multi-user system is brought up by typing an EOT (control-d) in response to the `#' prompt. .PP .B Device specifications. A device specification has the following form: .IP " " device(unit,offset) .LP where .I device is the type of the device to be searched, .I unit is the unit number of the device, and .I offset 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. .I device is one of the following .br .nf 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 .fi (actually, xp, hp and rm all use the same driver and distinguish the drive type from the drive-type register). For example, the specification .IP " " rp(1,7000) .LP indicates an RP03 disk, unit 1, and the file system found starting at block 7000 (cylinder 35). .PP .SM .B ROM .B 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 beginning of a device into core location zero. The octal words constituting the program are listed on the left. .PP .ne 5 .nf .if n .ta 3 11 15 23 38 .if t .ta .3i 1i 1.4i 2i 3.5i 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 .PP .ne 11 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 .DT .SH FILES .ta 2.5i /unix system code .br /usr/src/sys/mdec/xxuboot copy of primary bootstrap for device xx .br /boot second stage bootstrap .SH "SEE ALSO" init(8), reboot(8)