3 boot \- connect to the root file server
20 is the first program run after a kernel has been loaded.
21 It connects to the file server that will serve the
22 root, performs any authentication needed to
23 connect to that server, and
28 It is started by the kernel, never run directly by the user. See
30 for information about the process of loading the kernel (and
34 Once loaded, the kernel initializes its data structures and devices.
35 It sets the two environment variables
39 to describe the processor.
40 It then binds a place-holder file server,
44 and crafts an initial process whose sole function is to
47 a binary which is compiled into
50 The command line passed depends
51 on the information passed from boot ROM
53 Machines that boot directly from ROM (that is, most machines other than PCs)
54 pass the boot line given to the ROM directly to
57 On the PC, each line in the DOS file
61 is passed to the boot program as an environment
62 variable with the same name and value.
68 (The first argument is ignored by
71 must determine the file
76 with which to connect to it.
77 Typically this will name a file server on the network,
78 or state that the root file system is on local disk and name the partition.
79 The complete list of methods is given below.
82 must also set a user name to be used
83 as the owner of devices and all console
84 processes and an encryption key to be used
87 will prompt for these.
89 Method and address are prompted for first.
90 The prompt lists all valid methods, with the default in brackets, for example:
93 root is from (tcp, local!#S/sdC0/fs)[tcp]:
96 A newline picks the default.
97 Other possible responses are
100 .IB method ! address\f1.
101 To aid in automatic reboot, the default is automatically
102 taken on CPU servers if nothing is typed within 15 seconds.
104 The other interactions depend on whether the system
106 terminal or a CPU server.
108 The terminal must have a
111 If none is specified with the
115 will prompt for one on the console:
121 The user will also be prompted for a password to
122 be used as an encryption key on each
132 can now connect to the file server.
133 However, with the serial line
138 the actual mechanics of setting up the complete connection
139 are too varied to put into the boot program.
142 lets the user set up the connection.
143 It prints a prompt on the console and then simulates
144 a dumb terminal between the user and the serial line:
147 Connect to file system now, type ctrl-d when done.
148 (Use the view or down arrow key to send a break)
151 The user can now type at the modem to
152 dial the number. What is typed depends on
153 the modem and is beyond this discussion.
155 When the user types a control-D,
157 stops simulating a terminal and starts the file
158 system protocol over the serial line.
163 the root file system before
165 and makes the connection available as
167 for subsequent processes to
178 option is given it is also passed as an option to
180 If the environment variable
184 it is used as a command line to exec instead.
186 If the kernel has been built with the cache file system,
188 the local disk partition
189 .BI /dev/sd XX /cache
193 exists, and the root file system is from a remote server,
194 then the kernel will insert a user level cache
195 process between the remote server and the local namespace
196 that caches all remote accesses on the local partition.
201 to reformat the cache partition.
203 The user owning devices and console processes on CPU servers
204 and that user's domain and encryption key are
205 read from NVRAM on all machines except PC's.
206 PC's keep the information in the disk partition
207 .BI /dev/sd XX /nvram\f1.
210 option is given or if no stored information is found
212 will prompt for all three items and store them.
217 authdom: research.bell-labs.com
220 The key is used for mutual authentication of the server and its clients.
221 The domain and id identify the owner of the key.
225 behaves as on the terminal except for
230 The methods available to any system depend on what was
231 compiled into the kernel.
232 The complete list of booting methods are listed below.
235 connect via Ethernet using the TCP protocol.
240 when configuring the IP stack.
247 override the file server and authentication server IP addresses
248 obtained (if any) from DHCP during
252 connect to the local file system.
253 The first argument is a disk holding a file system.
258 file system, it invokes
263 environment variable (really,
267 first arranges for fossil to be able to
271 The variable's value can take the following forms:
275 the file should be a venti partition with a configuration
281 will start a loopback IP interface on 127.0.0.1
290 using the configuration stored in that partition.
292 .B /dev/sdC0/arenas tcp!*!17034
293 same as the last but specify an alternate venti service address.
294 In this example, using
296 will announce on all available IP interfaces (even ones configured later)
297 rather than just the loopback device.
298 The loopback interface is still configured.
300 .B /dev/sdC0/arenas tcp!*!17034 tcp!*!80
301 same as the last but specify alternate venti service and web addresses.
302 The loopback interface is still configured.
304 .B tcp!135.104.9.2!17034 \fR[ \fIargs\fR ]
305 the network address of a venti server running on a separate machine.
307 will configure the IP stack by passing
319 A variety of programs, like
325 to allow booting from alternate media formats,
326 so as long as the disk is not a
328 disk, no check is made that the disk is in fact
332 The args are passed to
338 the address must be a numeric IP address.
339 If no address is specified,
340 a file server address will be found from another
341 system on the network using the BOOTP protocol and
342 the Plan 9 vendor-specific fields.
344 On PCs, the default arguments to boot are constructed using
352 with extra disk buffers:
355 bootargs=local!#S/sdC0/fs -B 4096
358 Use an IP stack on an alternate ethernet interface
359 with a static address and fixed file server and authentication
365 bootargs=tcp -g 192.168.0.1 ether /net/ether1 \e
366 192.168.0.50 255.255.255.0
371 line is split only for presentation; it is one line in the file.)
386 The configuration specification
387 for fossil and venti servers
388 is particularly odd, but it does
389 cover the common cases well.