]> git.lizzy.rs Git - plan9front.git/blob - sys/man/8/prep
Import sources from 2011-03-30 iso image - sys/man
[plan9front.git] / sys / man / 8 / prep
1 .TH PREP 8
2 .SH NAME
3 prep, fdisk, format, mbr \- prepare disks, floppies and flashes
4 .SH SYNOPSIS
5 .B disk/prep
6 [
7 .B -bcfnprw
8 ]
9 [
10 .B -a
11 .I name
12 ]...
13 [
14 .B -s
15 .I sectorsize
16 ]
17 .I plan9partition
18 .PP
19 .B disk/fdisk
20 [
21 .B -abfprw
22 ]
23 [
24 .B -s
25 .I sectorsize
26 ]
27 .I disk
28 .PP
29 .B disk/format
30 [
31 .B -dfvx
32 ]
33 [
34 .B -b
35 .I bootblock
36 ]
37 [
38 .B -c
39 .I csize
40 ]
41 [
42 .B -l
43 .I label
44 ]
45 [
46 .B -r
47 .I nresrv
48 ]
49 [
50 .B -t
51 .I type
52 ]
53 .I disk
54 [
55 .IR file ...
56 ]
57 .PP
58 .B disk/mbr
59 [
60 .B -9
61 ]
62 [
63 .B -m
64 .I mbrfile
65 ]
66 .I disk
67 .SH DESCRIPTION
68 A partition table is stored on a hard disk to specify the division of
69 the physical disk into a set of logical units.
70 On PCs, the partition table is stored at the end of the master boot record
71 of the disk.
72 Partitions of type
73 .B 0x39
74 are Plan 9 partitions.
75 The names of PC partitions are chosen by convention from the type:
76 .BR dos ,
77 .BR plan9 ,
78 etc.
79 Second and subsequent partitions of the same type on a given disk are given
80 unique names by appending a number (or a period and a number if the name
81 already ends in a number).
82 .PP
83 Plan 9 partitions (and Plan 9 disks on non-PCs) are
84 themselves divided, using a textual partition table, called the Plan 9 partition table, in the second
85 sector of the partition (the first is left for architecture-specific boot data, such as PC boot blocks).
86 The table is a sequence of lines of the format
87 .BI part " name start end" \fR,
88 where
89 .I start
90 and
91 .I end
92 name the starting and ending sector.
93 Sector 0 is the first sector of the Plan 9 partition or disk,
94 regardless of its position in a larger disk.
95 Partition extents do not contain the ending sector,
96 so a partition from 0 to 5 and a partition from 5 to 10
97 do not overlap.
98 .PP
99 The Plan 9 partition often contains a number of
100 conventionally named subpartitions.
101 They include:
102 .TF arenas
103 .TP
104 .B 9fat
105 A small FAT file system used to hold
106 configuration information
107 (such as
108 .B plan9.ini
109 and
110 .BR plan9.nvr )
111 and kernels.
112 This typically begins in the first sector
113 of the partition, and contains the partition
114 table as a ``reserved'' sector.
115 See the discussion of the
116 .B -r
117 option to
118 .IR format .
119 .TP
120 .B arenas
121 A
122 .IR venti (8)
123 arenas partition.
124 .TP
125 .B bloom
126 A
127 .IR venti (8)
128 bloom-filter partition.
129 .TP
130 .B cache
131 A
132 .IR cfs (4)
133 file system cache.
134 .TP
135 .B fossil
136 A
137 .IR fossil (4)
138 file system.
139 .TP
140 .B fs
141 A
142 .IR kfs (4)
143 file system.
144 .TP
145 .B fscfg
146 A one-sector partition used to store an
147 .IR fs (3)
148 configuration.
149 .TP
150 .B isect
151 A
152 .IR venti (8)
153 index section.
154 .TP
155 .B nvram
156 A one-sector partition used to simulate non-volatile RAM on PCs.
157 .TP
158 .B other
159 A non-archived
160 .IR fossil (4)
161 file system.
162 .TP
163 .B swap
164 A
165 .IR swap (8)
166 swap partition.
167 .PD
168 .PP
169 .I Fdisk
170 edits the PC partition table and is usually
171 invoked with a disk like
172 .B /dev/sdC0/data
173 as its argument, while
174 .I prep
175 edits the Plan 9 partition table
176 and is usually invoked with a disk partition
177 like
178 .B /dev/sdC0/plan9
179 as its argument.
180 .I Fdisk
181 works in units of disk ``cylinders'': the cylinder
182 size in bytes is printed when
183 .I fdisk
184 starts.
185 .I Prep
186 works in units of disk sectors, which are almost always 512 bytes.
187 .I Fdisk
188 and
189 .I prep
190 share most of their options:
191 .TF -a
192 .PD
193 .TP
194 .B -a
195 Automatically partition the disk.
196 .I Fdisk
197 will create a Plan 9
198 partition in the largest unused area on the disk,
199 doing nothing if a
200 Plan 9 partition already exists.
201 If no other partition on the disk is marked active (i.e. marked as the boot partition),
202 .I fdisk
203 will mark the new partition active.
204 .IR Prep 's
205 .B -a
206 flag takes the name of a partition to create.
207 (See the list above for partition names.)
208 It can be repeated to specify a list of partitions to create.
209 If the disk is currently unpartitioned,
210 .I prep
211 will create the named partitions on the disk,
212 attempting to use the entire disk in a sensible manner.
213 The partition names must be from the list given above.
214 .TP
215 .B -b
216 Start with a blank disk, ignoring any extant partition table.
217 .TP
218 .B -p
219 Print a sequence of commands that when sent to the disk device's
220 .B ctl
221 file
222 will bring the partition
223 table information kept by
224 the
225 .IR sd (3)
226 driver up to date.
227 Then exit.
228 .I Prep
229 will check to see if it is being called with a disk partition
230 (rather than an entire disk) as its argument; if so, it
231 will translate the printed sectors by the partition's offset
232 within the disk.
233 Since
234 .I fdisk
235 operates on a table of unnamed partitions,
236 it assigns names based on the partition type
237 (e.g.,
238 .BR plan9 ,
239 .BR dos ,
240 .BR ntfs ,
241 .BR linux ,
242 .BR linuxswap )
243 and resolves collisions by appending a numbered suffix.
244 (e.g.,
245 .BR dos ,
246 .BR dos.1 ,
247 .BR dos.2 ).
248 .TP
249 .B -r
250 In the absence of the
251 .B -p
252 and
253 .B -w
254 flags,
255 .I prep
256 and
257 .I fdisk
258 enter an interactive partition editor;
259 the
260 .B -r
261 flag runs the editor in read-only mode.
262 .TP
263 .BI -s " sectorsize"
264 Specify the disk's sector size.
265 In the absence of this flag,
266 .I prep
267 and
268 .I fdisk
269 look for a disk
270 .B ctl
271 file and read it to find the disk's sector size.
272 If the
273 .B ctl
274 file cannot be found, a message is printed and
275 a sector size of 512 bytes is assumed.
276 .TP
277 .B -w
278 Write the partition table to the disk and exit.
279 This is useful when used in conjunction with
280 .B -a
281 or
282 .BR -b .
283 .PP
284 If neither the
285 .B -p
286 flag nor the
287 .B -w
288 flag is given,
289 .I prep
290 and
291 .I fdisk
292 enter an interactive partition editor that
293 operates on named partitions.
294 The PC partition table distinguishes between
295 primary partitions, which can be listed in the boot
296 sector at the beginning of the disk,
297 and secondary (or extended) partitions, arbitrarily
298 many of which may be chained together in place
299 of a primary partition.
300 Primary partitions are named
301 .BR p \fIn\fR,
302 secondary partitions
303 .BR s \fIn\fR.
304 The number of primary partitions plus number of contiguous chains of
305 secondary partitions cannot exceed four.
306 .PP
307 The commands are as follows.
308 In the descriptions, read ``sector'' as ``cylinder'' when using
309 .IR fdisk .
310 .TF ".\fI newdot
311 .PD
312 .TP
313 .B "a\fR \fIname\fR [ \fIstart\fR [ \fIend\fR ] ]"
314 Create a partition named
315 .I name
316 starting at sector offset
317 .I start
318 and ending at offset
319 .IR end .
320 The new partition will not be created if
321 it overlaps an extant partition.
322 If
323 .I start
324 or
325 .I end
326 are omitted,
327 .I prep
328 and
329 .I fdisk
330 will prompt for them.
331 In
332 .IR fdisk ,
333 the newly created partition has type
334 .RB `` PLAN9 ;''
335 to set a different type, use the
336 .B t
337 command (q.v.).
338 .I Start
339 and
340 .I end
341 may be expressions using the operators
342 .BR + ,
343 .BR - ,
344 .BR * ,
345 and
346 .BR / ,
347 numeric constants, and the
348 pseudovariables
349 .B .
350 and
351 .BR $ .
352 At the start of the program,
353 .B .
354 is set to zero; each time a partition is
355 created, it is set to the end sector
356 of the new partition.
357 It can also be explicitly set using the
358 .B .
359 command.
360 When evaluating
361 .IR start ,
362 .B $
363 is set to one past the last disk sector.
364 When evaluating
365 .IR end ,
366 .B $
367 is set to the maximum value that
368 .I end
369 can take on without running off the disk
370 or into another partition.
371 Numeric constants followed by
372 .LR k ,
373 .LR m ,
374 .LR g ,
375 or
376 .LR t
377 (or upper-case equivalents)
378 are scaled to the respective size in kilo-, mega-, giga-, or tera-bytes.
379 Finally, the expression
380 .IB n %
381 evaluates to
382 .RI ( n × disksize )/100.
383 As examples,
384 .L "a . .+20%"
385 creates a new partition starting at
386 .B .
387 that takes up a fifth of the disk,
388 .L "a . .+21G"
389 creates a new partition starting at
390 .B .
391 that takes up 21 gigabytes (21×2\u\s-130\s0\d bytes),
392 and
393 .L "a 1000 $"
394 creates a new partition starting at
395 sector 1000 and
396 extending as far as possible.
397 .TP
398 .B ".\fR \fInewdot"
399 Set the value of the variable
400 .B .
401 to
402 .IR newdot ,
403 which is an arithmetic expression as described
404 in the discussion of the
405 .B a
406 command.
407 .TP
408 .BI d " name"
409 Delete the named partition.
410 .TP
411 .B h
412 Print a help message listing command synopses.
413 .TP
414 .B p
415 Print the disk partition table.
416 Unpartitioned regions are also listed.
417 The table consists of a number of lines containing
418 partition name, beginning and ending sectors,
419 and total size.
420 A
421 .B '
422 is prefixed to the names of partitions
423 whose entries have been modified but not written to disk.
424 .I Fdisk
425 adds to the end of each line a textual partition type,
426 and places a
427 .B *
428 next to the name of the active partition
429 (see the
430 .B A
431 command below).
432 .TP
433 .B P
434 Print the partition table in the format accepted by the disk's
435 .B ctl
436 file, which is also the format of the output of the
437 .B -p
438 option.
439 .TP
440 .B w
441 Write the partition table to disk.
442 .I Prep
443 will also inform the kernel of the changed
444 partition table.
445 The write will fail if any programs have any
446 of the disk's partitions open.
447 If the write fails (for this or any other reason),
448 .I prep
449 and
450 .I fdisk
451 will attempt to restore the partition table to
452 its former state.
453 .TP
454 .B q
455 Quit the program.
456 If the partition table has been modified but not written,
457 a warning is printed.
458 Typing
459 .B q
460 again will quit the program.
461 .PP
462 .I Fdisk
463 also has the following commands.
464 .TF "t \fR[\fI type \fR]
465 .PD
466 .TP
467 .BI A " name
468 Set the named partition active.
469 The active partition is the one whose boot block is used
470 when booting a PC from disk.
471 .TP
472 .B e
473 Print the names of empty slots in the partition table, i.e., the
474 valid names to use when creating a new partition.
475 .TP
476 .BI t " \fR[\fI type \fR]
477 Set the partition type.  If it is not given,
478 .I fdisk
479 will display a list of choices and then prompt for it.
480 .PD
481 .PP
482 .I Format
483 prepares for use the floppy diskette or hard disk partition in the file named
484 .IR disk ,
485 for example
486 .B /dev/fd0disk
487 or
488 .BR /dev/sdC0/9fat .
489 The options are:
490 .TP
491 .B -f
492 Do not physically format the disc. Used
493 to install a FAT file system on a
494 previously formatted disc. If
495 .I disk
496 is not a floppy device, this flag is a no-op.
497 .TP
498 .B -t
499 specify a density and type of disk to be prepared.
500 The possible
501 .I types
502 are:
503 .RS
504 .TP
505 .B 3½DD
506 3½" double density, 737280 bytes
507 .TP
508 .B 3½HD
509 3½" high density, 1474560 bytes
510 .TP
511 .B 5¼DD
512 5¼" double density, 368640 bytes
513 .TP
514 .B 5¼HD
515 5¼"  high density, 1146880 bytes
516 .TP
517 .B hard
518 fixed disk
519 .PD
520 .PP
521 The default when
522 .I disk
523 is a floppy drive is the highest possible on the device.
524 When
525 .I disk
526 is a regular file, the default is
527 .BR 3½HD .
528 When
529 .I disk
530 is an
531 .IR sd (3)
532 device, the default is
533 .BR hard .
534 .RE
535 .TP
536 .B -d
537 initialize a FAT file system on the
538 .IR disk .
539 .TP
540 .B -b
541 use the contents of
542 .I bootblock
543 as a bootstrap block
544 to be installed in sector 0.
545 .PD
546 .PP
547 The remaining options have effect only when
548 .B -d
549 is specified:
550 .TP
551 .B -c
552 use a FAT cluster size of
553 .I csize
554 sectors when creating the FAT.
555 .TP
556 .B -l
557 add a
558 .I label
559 when creating the FAT file system.
560 .TP
561 .BI -r
562 mark the first
563 .I nresrv
564 sectors of the partition as ``reserved''.
565 Since the first sector always contains the
566 FAT parameter block, this really marks
567 the
568 .IR nresrv -1
569 sectors starting at sector 1 as ``reserved''.
570 When formatting the
571 .B 9fat
572 partition,
573 .B -r
574 .B 2
575 should be used to jump over the partition table sector.
576 .PD
577 .PP
578 Again under
579 .BR -d ,
580 any
581 .I files
582 listed are added, in order,
583 to the root
584 directory of the FAT file system.  The files are
585 contiguously allocated.
586 If a file is named
587 .BR 9load ,
588 it will be created with the
589 .B SYSTEM
590 attribute set so that
591 .IR dossrv (4)
592 keeps it contiguous when modifying it.
593 .PP
594 .I Format
595 checks for a number of common mistakes; in particular,
596 it will refuse to format a
597 .B 9fat
598 partition unless
599 .B -r
600 is specified with
601 .I nresrv
602 larger than two.
603 It also refuses to format a raw
604 .IR sd (3)
605 partition that begins at offset zero in the disk.
606 (The beginning of the disk should contain an
607 .I fdisk
608 partition table with master boot record,
609 not a FAT file system or boot block.)
610 Both checks are disabled by the
611 .B -x
612 option.
613 The
614 .B -v
615 option prints debugging information.
616 .PP
617 The file
618 .B /386/pbs
619 is an example of a suitable
620 .I bfile
621 to make the disk a boot disk.
622 It gets loaded by the BIOS at 0x7C00,
623 reads the first sector of the
624 root directory into address 0x7E00, and looks for
625 a directory entry named
626 .BR 9LOAD .
627 If it finds such an entry,
628 it uses
629 single sector reads to load the file into address 0x10000 and then
630 jumps to the loaded file image.
631 The file
632 .B /386/pbslba
633 is similar, but because it uses LBA addressing (not supported
634 by older BIOSes), it can access more than the first 8.5GB of the disk.
635 .PP
636 .I Mbr
637 installs a new boot block in sector 0 (the master boot record)
638 of a disk such as
639 .BR /dev/sdC0/data .
640 If
641 .I mbrfile
642 contains more than one sector of `boot block',
643 the rest will be copied into the first track of the
644 disk, if it fits.
645 This boot block should not be confused with the
646 boot block used by
647 .IR format ,
648 which goes in sector 0 of a partition.
649 Typically, the boot block in the master boot record
650 scans the PC partition table to find an active
651 partition and then executes the boot block for
652 that partition.
653 The partition boot block then loads a bootstrap
654 program such as
655 .IR 9load (8),
656 which then loads the operating system.
657 If MS-DOS or Windows 9[58] is already installed
658 on your hard disk, the master boot record
659 already has a suitable boot block.
660 Otherwise,
661 .B /386/mbr
662 is an appropriate
663 .IR mbrfile .
664 It detects and uses LBA addressing when available
665 from the BIOS (the same could not
666 be done in the case of
667 .B pbs
668 due to space considerations).
669 If the
670 .I mbrfile
671 is not specified, a boot block is installed that
672 prints a message explaining that the disk is not bootable.
673 The
674 .B -9
675 option initialises the partition table to consist of one
676 .BR plan9
677 partition which spans the entire disc starting at the end of the
678 first track.
679 .SH EXAMPLES
680 Initialize the kernel disk driver with the partition information
681 from the FAT boot sectors.
682 If Plan 9 partitions exist, pass that partition information as well.
683 .IP
684 .EX
685 for(disk in /dev/sd??) {
686         if(test -f $disk/data && test -f $disk/ctl)
687                 disk/fdisk -p $disk/data >$disk/ctl
688         for(part in $disk/plan9*)
689                 if(test -f $part)
690                         disk/prep -p $part >$disk/ctl
691 }
692 .EE
693 .PP
694 Create a Plan 9 boot floppy on a previously formatted diskette.
695 .IP
696 .EX
697 disk/format -b /386/pbs -df /dev/fd0disk \e
698         /386/9load /tmp/plan9.ini /386/9pcf.gz
699 .EE
700 .PP
701 Initialize the blank hard disk
702 .BR /dev/sdC0/data .
703 .IP
704 .EX
705 disk/mbr -m /386/mbr /dev/sdC0/data
706 disk/fdisk -baw /dev/sdC0/data
707 disk/prep -bw -a^(9fat nvram fossil cache swap) /dev/sdC0/plan9
708 disk/format -b /386/pbslba -d -r 2 /dev/sdC0/9fat \e
709         /386/9load /386/9pcf /tmp/plan9.ini
710 .EE
711 .PP
712 Create a bootable USB disk or flash-memory device to be booted
713 via the BIOS and containing only a FAT Plan 9 partition.
714 .IP
715 .EX
716 mount /srv/usb /n/usb
717 ls -d /n/usb/sdU*               # note the name, normally sdU0.0
718 disk/partfs /n/usb/sdU0.0/data
719 cd /dev/sdXX
720 disk/mbr -m /386/mbr data
721 disk/fdisk -baw data
722 disk/prep -bw -a^(9fat nvram fossil) plan9
723 cp /386/9loadusb /tmp/9load  # force format to use the name `9load'
724 disk/format -b /386/pbslba -d -r 2 9fat /tmp/9load \e
725         /386/9pccpuf /tmp/plan9.ini
726 .EE
727 .SH FILES
728 .TF /386/mbr.bootmgr
729 .TP
730 .B /386/mbr
731 .TP
732 .B /386/mbr.bootmgr
733 self-configuring `smart boot manager'
734 .SH SOURCE
735 .TF /sys/src/cmd/disk/prep
736 .TP
737 .B /sys/src/cmd/disk/prep
738 .TP
739 .B /sys/src/boot/pc
740 .TP
741 .B /n/sources/extra/bootmgr.tgz
742 source for
743 .BR /386/mbr.bootmgr ;
744 compilable on (l)unix
745 .SH SEE ALSO
746 .IR floppy (3),
747 .IR sd (3),
748 .IR usb (4),
749 .IR 9load (8),
750 .IR partfs (8)
751 .SH BUGS
752 .I Format
753 can create FAT12 and FAT16
754 file systems, but not FAT32 file systems.
755 The boot block can only read from
756 FAT12 and FAT16 file systems.
757 .PP
758 If
759 .L "prep -p"
760 doesn't find a Plan 9 partition table,
761 it will emit commands to delete
762 .I all
763 extant partitions.
764 Similarly,
765 .L "fdisk -p"
766 will delete all partitions,
767 including
768 .LR data ,
769 if there are no partitions defined in the MBR.