Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
.TH 9BOOT 8
2
.SH NAME
3
9boot, 9bootpbs, 9load, 9loadusb, pbs \- PC bootstrap programs
4
.SH SYNOPSIS
5
.I none
6
.SH DESCRIPTION
7
.I 9boot
8
is a specialized Plan 9 kernel loaded by
9
the PXE download (BOOTP/DHCP followed by TFTP)
10
found in any reasonable Ethernet card's BIOS; it bootstraps Plan 9 by using
11
PXE to load another
12
.B 386
13
or
14
.B amd64
15
kernel and start it.
16
.PP
17
.IR 9bootpbs ,
18
.I 9load
19
and
20
.I 9loadusb
21
are less-commonly-used variants
22
that reside in a FAT file system under the name
23
.L 9load
24
and bootstrap Plan 9.
25
.I 9bootpbs
26
is like
27
.I 9boot
28
but it can be started by a partition boot sector (PBS),
29
as can
30
.I 9load
31
and
32
.IR 9loadusb .
33
It is intended to PXE boot older machines without working PXE ROMs.
34
.I 9load
35
and
36
.I 9loadusb
37
read FAT file systems.
38
.I 9loadusb
39
will use only the BIOS's device drivers,
40
and thus can load from FAT file systems on USB devices.
41
In contrast,
42
.I 9load
43
will
44
.I not
45
use BIOS device drivers and cannot read USB devices.
46
.PP
47
This profusion of loaders is unfortunate, but at least they
48
are compiled from the same source.
49
The division into separate programs is dictated by the need to fit
50
within the first 640K of memory
51
and the need to avoid intermixing BIOS and non-BIOS disk access.
52
.PP
53
These programs are run automatically by the boot procedures described below;
54
they cannot be run directly by hand.
55
There are two bootstrap sequences:
56
.IP \- 3
57
PXE BIOS,
58
.IR 9boot ,
59
kernel
60
.IP \-
61
BIOS, MBR, disk partition PBS,
62
.IR 9load ,
63
kernel
64
.\" .IP \-
65
.\" BIOS, floppy PBS,
66
.\" .IR 9load ,
67
.\" kernel
68
.PP
69
In summary,
70
Plan 9 is usually booted on a PC
71
by using a PXE-capable BIOS to boot
72
.I 9boot
73
directly over the ethernet.
74
File servers that must be able to boot when other machines are down
75
boot directly from a Plan 9 disk partition
76
.\" or boot floppy
77
prepared using
78
.B format
79
to install the appropriate files and bootstrap sectors
80
(see
81
.IR prep (8)).
82
.PP
83
Details follow.
84
.SS Kernel loading
85
.I 9boot
86
is a bootstrap program that loads and starts a program,
87
typically the kernel, on a PC.
88
It is run by the PXE boot ROM of a PC,
89
which loads
90
.I 9boot
91
at physical address
92
.B 0x7C00
93
(31K).
94
When it starts running,
95
it switches to 32-bit mode.
96
It then double maps the first 16Mb of physical memory to
97
virtual addresses
98
.B 0
99
and
100
.BR 0x80000000 .
101
Only devices which can be automatically configured,
102
e.g. most PCI ethernet adapters,
103
will be recognised.
104
If the file
105
.BI /cfg/pxe/ ether
106
can be located via a DHCP server,
107
where
108
.I ether
109
is the lower-case MAC address of a recognised ethernet adapter,
110
the contents are obtained by TFTP and used as a
111
.IR plan9.ini (8).
112
.I 9boot
113
then loads the
114
.I bootfile
115
named within via TFTP,
116
trying each ethernet in sequence,
117
at the entry address specified by the kernel executable's header,
118
usually virtual
119
.BR 0xF0100020 .
120
After loading,
121
.I 9boot
122
creates a Gnu Multiboot header in low memory for
123
the benefit of the loaded kernel
124
and
125
control is passed to the entry location
126
in 32-bit protected mode, even for 64-bit kernels.
127
So far, only
128
.B amd64
129
kernels expect Multiboot headers.
130
.PP
131
Some options in
132
.B plan9.ini
133
are used by
134
.IR 9boot :
135
.TF bootfile=manual
136
.TP
137
.B console
138
.TP
139
.B baud
140
Specifies the console device and baud rate if not a display.
141
.TP
142
.BI ether n
143
Ethernet interfaces. These can be used to load the
144
.I bootfile
145
over a network.
146
.TP
147
.BI bootfile= bootfile
148
Specifies the
149
.IR bootfile .
150
.ig
151
.TP
152
.B bootfile=auto
153
Default.
154
.TP
155
.B bootfile=local
156
Like
157
.IR auto ,
158
but do not attempt to load over the network.
159
..
160
.TP
161
.B bootfile=manual
162
After determining which devices are available for loading from,
163
enter prompt mode.
164
.PD
165
.PP
166
.I 9load
167
is a similar bootstrap program,
168
loaded by the PC partition boot sector program (PBS),
169
which usually resides in the first
170
sector of the active disk partition.
171
It is initially loaded at physical address
172
.BR 0x10000 (64K);
173
it begins execution at virtual address
174
.BR 0x80010000 .
175
In order to find configuration information,
176
.I 9load
177
searches all units on devices
178
.\" .BR fd
179
.\" and
180
.B sd?[0-9]*
181
(all
182
.B sd
183
devices),
184
for a file called
185
.\" .B plan9\eplan9.ini
186
.\" or
187
.B plan9.ini
188
(see
189
.IR plan9.ini (8))
190
on a FAT partition named
191
.B dos
192
or
193
.BR 9fat .
194
If one is found, searching stops and the file is read into memory
195
at physical address
196
.B 0x1200
197
where it can be found later by any loaded
198
.IR bootfile .
199
.PP
200
When the search for
201
.B plan9.ini
202
is done,
203
.I 9load
204
proceeds to determine which bootfile to load.
205
If there was no
206
.I bootfile
207
option,
208
.I 9load
209
searches
210
.B sd?[0-9]*
211
FAT partitions for a kernel
212
(any file named
213
.BR 9pc* ,
214
.B 9k8*
215
or
216
.BR 9k10* )
217
and if it finds exactly one kernel in a given FAT partition,
218
chooses it.
219
.I 9load
220
then attempts to load the
221
.IR bootfile .
222
.ig
223
unless
224
the
225
.B bootfile=manual
226
option was given, in which case prompt mode is entered immediately.
227
..
228
.ig
229
If the default device is
230
.BR fd ,
231
.I 9load
232
will prompt the user for input before proceeding with the
233
default bootfile load after 5 seconds;
234
this prompt is omitted if a
235
.I bootfile
236
option
237
was given.
238
..
239
.PP
240
.I 9load
241
prints the list of available
242
.IR device s
243
and
244
enters prompt mode on encountering any error
245
or if directed to do so by a
246
.B bootfile=manual
247
option.
248
In prompt mode, the user is required to type
249
a
250
.IB bootfile
251
in response to the
252
.L Boot
253
.L from:
254
prompt.
255
.br
256
.ne 4
257
.SS Bootfile
258
The
259
.I bootfile
260
can be specified to these programs as a
261
.B bootfile=
262
entry in
263
.IR plan9.ini ,
264
or if booting from the ethernet, by a BOOTP server
265
(see
266
.B Kernel
267
.B loading
268
below).
269
If loading with
270
.IR 9load ,
271
the
272
.I bootfile
273
may be a Plan 9 boot image compressed with
274
.IR gzip (1).
275
In all cases,
276
the uncompressed kernel must be in Plan 9 boot image, ELF or ELF64 format.
277
If the
278
.B plan9.ini
279
file contains multiple
280
.B bootfile=
281
entries,
282
these programs will present a numerical menu of the choices; type
283
the corresponding number to select an entry.
284
.PP
285
The format of the
286
.I bootfile
287
name is
288
.IB device ! file
289
or
290
.IB device ! partition ! file\f1.
291
If
292
.BI ! file
293
is omitted, the default for the particular
294
.I device
295
is used.
296
Supported
297
.I devices
298
are
299
.TF \fLethern
300
.PD
301
.TP
302
.BI ether n
303
Ethernet,
304
.I 9boot
305
only.
306
.I N
307
specifies the Ethernet device number.
308
If a
309
.I partition
310
is specified, it is taken to be the name of a host machine
311
from which to load the kernel.
312
.TP
313
.BI sd Cn
314
Normal disk,
315
.I 9load
316
only.
317
The device name format is described in
318
.IR sd (3).
319
A
320
.I partition
321
must be given and must normally
322
name a partition containing a FAT file system.
323
.\" The name
324
.\" .B dos
325
.\" refers to the first DOS partition on a given device.
326
It is common for Plan 9 partitions to contain a small
327
FAT file system for configuration.
328
By convention, this partition is called
329
.BR 9fat .
330
There is no default partition,
331
but if
332
.I file
333
is omitted,
334
.I 9load
335
will load a kernel directly from the named partition
336
without any interpretation of a file system.
337
.
338
.ig
339
.TP
340
.BI fd n
341
An MS-DOS floppy disk,
342
.I 9load
343
only.
344
.I N
345
specifies the floppy drive, either
346
 
347
The
348
.I bootfile
349
is the contents of the MS-DOS
350
.IR file .
351
There is no default file.
352
For compatibility with normal disks, a
353
.I partition
354
may be given, but only
355
.B dos
356
is recognized:
357
.BI fd0!dos! file\f1.
358
..
359
.
360
.TP
361
.BI bios n
362
USB or other BIOS device,
363
.IR 9loadusb
364
only.
365
.I 9load
366
loads from a FAT file system on
367
the first LBA device
368
in the BIOS's list of devices to try to boot from,
369
using the BIOS INT 13 calls also used by
370
.IR pbslba .
371
It does not understand any form of partition table;
372
see the
373
.B EXAMPLES
374
in
375
.IR prep (8)
376
for how to format such a device.
377
.TP
378
.BI sdB n
379
USB or other BIOS device's partition,
380
.IR 9loadusb
381
only.
382
A special case of
383
.BI sd Cn
384
that uses
385
.BI bios n
386
to read from a FAT file system.
387
.SS Boot Sectors
388
A copy of the Plan 9 PBS is kept in
389
.BR /386/pbs ,
390
but due to the ``cylinder-head-sector'' (CHS) addressing mode of old BIOSes, it can only
391
operate up to 8.5GB into the disk.
392
Plan 9 partitions further into the disk
393
can only be booted using
394
.BR /386/pbslba ,
395
and then only if the machine's BIOS supports
396
linear block addressing (LBA) mode for disk transfers.
397
.PP
398
When booting from disk,
399
.\" or floppy,
400
the BIOS loads the
401
first sector of the medium at location
402
.BR 0x7C00 .
403
In the case of a disk, it is the master boot record (MBR).
404
.\" In the case of a floppy, this is the PBS.
405
The MBR copies itself to address
406
.BR 0x600 ,
407
finds the active partition and loads its PBS at address
408
.BR 0x7C00 .
409
A copy of the Plan 9 MBR is kept in
410
.BR /386/mbr ;
411
some commercial MBRs cannot read sectors
412
past 2GB.
413
The Plan 9 MBR can read sectors up to 8.5GB into
414
the disk, and further if the BIOS supports LBA.
415
The single file
416
.B /386/mbr
417
detects whether the BIOS supports LBA and
418
acts appropriately, defaulting to CHS mode
419
when LBA is not present.
420
The PBSs cannot do this due to code size limitations.
421
The Plan 9 MBR is suitable for booting non-Plan-9
422
operating systems,
423
and (modulo the large disk constraints just described)
424
non-Plan-9 MBRs are suitable for booting Plan 9.
425
.br
426
.ne 4
427
.SS Other facilities and caveats
428
.I 9load
429
parses the master boot record and Plan 9 partition tables
430
(see
431
.IR prep (8)),
432
leaving partitioning information appended to the
433
in-memory contents of
434
.I plan9.ini
435
for the
436
.IR bootfile .
437
This is used by
438
.IR sd (3)
439
to initialize partitions so that
440
may be read for NVRAM contents or
441
.IR fossil (4)
442
or
443
.IR kfs (4)
444
file systems can be mounted as the root file system.
445
On ISO 9660 CDs,
446
.I 9load
447
treats the contents of a file named
448
.B /bootdisk.img
449
as a 
450
.B 9fat
451
partition,
452
and it is assumed to contain the image of a FAT file system.
453
A more extensive partitioning is typically done by
454
.I fdisk
455
and
456
.I prep
457
as part of
458
.I termrc
459
or
460
.I cpurc
461
(see
462
.IR cpurc (8)).
463
.I 9boot
464
cannot parse partition tables,
465
as it lacks disk drivers, so add
466
.L readparts=
467
to the machine's
468
.B /cfg/pxe
469
file, per
470
.IR plan9.ini (8),
471
if needed.
472
.PP
473
A
474
control-P
475
character typed at any time on the console causes
476
.B 9boot
477
to perform a hardware reset
478
(Ctrl-Alt-Del can also be used on a PC keyboard).
479
.PP
480
.I 9load
481
must be contiguously allocated on
482
the disk.
483
See
484
.IR dossrv (4)
485
for information on ensuring this.
486
.SH FILES
487
.TF /cfg/pxe
488
.TP
489
.B /386
490
these programs reside here
491
.TP
492
.BI /cfg/pxe
493
directory of configuration
494
.RI ( plan9.ini )
495
files on your TFTP server
496
.PP
497
.IB "FAT-filesystem" :\e9load
498
.br
499
.IB "FAT-filesystem" :\eplan9.ini
500
.\" .br
501
.\" .IB "FAT-filesystem" :\eplan9\eplan9.ini
502
.SH SOURCE
503
.TF "/sys/src/9/^(pc port ip)"
504
.PD 0
505
.TP
506
.B /sys/src/boot/pc
507
first-stage disk boot sectors (MBR, PBS)
508
.TP
509
.B /sys/src/9/pcboot
510
PC-bootstrap-specific source
511
.TP
512
.B /sys/src/9/^(pc port ip)
513
common kernel source
514
.PD
515
.SH "SEE ALSO"
516
.IR 8l (1),
517
.IR cons (3),
518
.IR booting (8),
519
.IR dhcpd (8),
520
.IR fshalt (8),
521
.IR mkusbboot (8),
522
.IR plan9.ini (8),
523
.IR prep (8)
524
.SH BUGS
525
Some of the work done by
526
.I 9boot
527
is duplicated by the loaded kernel,
528
but usually by the same source code.
529
.PP
530
.B bios
531
and
532
.B sdB
533
usually only work on the first LBA device in the BIOS's list of boot devices,
534
if they work at all.
535
.PP
536
USB keyboards will only work with
537
.I 9boot
538
if the BIOS emulates a PS/2 keyboard (and that is enabled).