-*- Mode:Text -*- IOP Software Bobp, 9/23/86 ROM Kernel raw driver for disk, tape, ethernet serial ports, console screen vectors for default console stream and for each I/O device first-level boot: read and load from disk, tape or ethernet First-level disk/tape/network boot: ROM reads boot device into RAM at 0 and executes it. Boot reads RAM kernel and relocates it to somewhere in high memory. RAM kernel Real "boot": check FS, print command prompt ... Can be loaded from disk, tape or net. Provides vectors for: read, write and allocate disk space generic console I/O stream Set up vectors in low memory, or set one vector to point to new table. Command shell allows boot, diag etc. time out in N seconds defaults to Boot Boot (K) Set up memory structures: sysconf, procconf for one processor read template from "config" file fill in with current info shared-device I/O structures for disk, tape etc. Set up disk and tape I/O drivers interface functionally same as current disk-sharing driver Boot K: point K at config structure set K config reg to "cold boot" enable K (sub-debug takes control) (what tells it what lisp system to boot?) Disk format: block 0: mini-label identifies disk type and parameters points to directory points to default boot program on disk -- must be stored in one contiguous disk segment; directory update must keep this consistent. Directory structure: header says how big directory and each entry is. name (32 chars, maybe plus prefix) list of pairs of (starting block, number of blocks) max of N segments per directory entry block is 8KB keep bit-map cache in core one dir entry has "I am the boot program" attribute. Vectors: copied to RAM to be patchable; may still call rom directly. fixed serial, screen, disk, tape etc. vectors required, or can inquire / set suffice? ROM and RAM share vector table; RAM kernel overwrites some ROM vectors on init. power-up init (cold init; memory test) cold init (reset; init memory) warm init (reset stack; assume memory set up) debug entry (save state safe from warm init; then warm init) r/w virtual console inquire / set console type r/w serial console port r/w screen console device r/w network console device r/w user-defined console device r/w virtual raw disk device inquire / set raw disk device r/w raw disk r/w 1/2" tape r/w 1/4" tape r/w net? r/w virtual file-system device (address by pathname) inquire / set virtual fs device r/w disk fs r/w 1/2" tape fs r/w 1/4" tape fs r/w net fs?