|
|
1.1 root 1: September 1991
2: updated November 1991
3:
4: A tertiary boot program is being added to the COHERENT boot sequence. The
5: old sequence was bios->master boot->secondary boot->/coherent. The new
6: boot sequence is bios->master boot->secondary boot->tertiary boot->/coherent.
7:
8: The problem with the old boot scheme was that the secondary boot was limited
9: to 512 bytes, severely limiting its functionality.
10:
11: The advantages of the new scheme are: the tertiary boot is written mostly
12: in C; the tertiary boot can be as long as 138 blocks.
13:
14: Writing in C improves maintainability and eases improvements.
15:
16: The increased size allows greater functionality. Already the new tertiary
17: supports much larger kernels. It also includes some handy builtin commands.
18: Further expansion could include support for other object formats such as COFF.
19:
20: The ability to support larger kernels is critical for development of the
21: 386 native kernel.
22:
23: Limitations of Old Secondary Boot
24: _________________________________
25:
26: The old secondary boot could not load anything from past the first
27: 32 megabytes of a partition. This was because it only used 2 byte block
28: numbers.
29:
30: It was also thought to have a length limit of 138 blocks for the l.out file.
31: 138 is the 10 direct blocks + the 128 singly indirect blocks. Actually,
32: it was capable of loading files up to 256 blocks long. It read 266 block
33: numbers--the 10 direct + 128 indirect + first 128 double indirect, but it
34: used a 1 byte index into that table. Each segment had to be less than
35: 64k.
36:
37: It defaulted to loading a file called "autoboot".
38:
39: It was entirely in assembly language.
40:
41:
42: Features and Limitations of New Secondary Boot
43: ______________________________________________
44:
45: The new secondary boot uses 4 byte block numbers, and can thus load from
46: anywhere on a legal partition.
47:
48: It can load an l.out image up to 138 block long. This covers all 286
49: kernels produced to date. Each segment must be less than 64k.
50:
51: It defaults to loading a file called "tboot".
52:
53: It is entirely in assembly language.
54:
55:
56: Features of New Tertiary Boot
57: -----------------------------
58: The new tertiary boot can load from anywhere on a legal partition.
59:
60: It can load an l.out or COFF image up to slightly over 1 gigabyte long.
61: Individual segments can be up to the full length of the file.
62:
63: It includes a builtin "dir" command, and "info" for checking disk geometry.
64:
65: It defaults to loading a file called "autoboot". Even if "autoboot" is found,
66: it is possible to abort the boot by typing any key during a 10 second
67: waiting interval.
68:
69: It is written mostly in C, but has assembly language libraries and startup
70: code.
71:
72: The libraries were designed to facilitate making other bootable utilities.
73:
74: It is now possible to use open()/read()/close() to access files from tboot
75: code.
76:
77: The base paragraph can be explicitly set, but will automaticly default
78: to 0x0060 for l.out files (probably 286 kernels), and 0x0200 for COFF
79: files (probably 386 kernels).
80:
81: There is a mini-monitor available for examining memory. This is
82: particularly useful for debugging tboot itself.
83:
84: It caches disk i/o, greatly speeding the load procedure.
85:
86: A data structure full of information, called a boot gift, is passed to
87: compatable programs. See the file gift.c for more details. Right now,
88: some disk geometry information and a command line are passed.
89:
90:
91: La Monte H. Yarroll <[email protected]>
92: with many thanks to
93: Vladimir Smelyanski <[email protected]> and
94: Hal Snyder <[email protected]>.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.