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 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 non-floppy 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 few-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
.SS "fdisk and prep"
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
.SS "format and pbs"
482
.I Format
483
prepares for use the disk partition or the floppy diskette in the file named
484
.IR disk ,
485
for example
486
.B /dev/sdC0/9fat
487
or
488
.BR /dev/fd0disk .
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 bootblock
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
.B /386/pbsraw
636
is suitable for CDs.
637
.SS mbr
638
.I Mbr
639
installs a new boot block in sector 0 (the master boot record)
640
of a disk such as
641
.BR /dev/sdC0/data .
642
If
643
.I mbrfile
644
contains more than one sector of `boot block',
645
the rest will be copied into the first track of the
646
disk, if it fits.
647
This boot block should not be confused with the
648
boot block used by
649
.IR format ,
650
which goes in sector 0 of a partition.
651
Typically, the boot block in the master boot record
652
scans the PC partition table to find an active
653
partition and then executes the boot block for
654
that partition.
655
The partition boot block then loads a bootstrap
656
program such as
657
.I 9load
658
(see
659
.IR 9boot (8)),
660
which then loads the operating system.
661
If MS-DOS or Windows is already installed
662
on your disk, the master boot record
663
already has a suitable boot block.
664
Otherwise,
665
.B /386/mbr
666
is an appropriate
667
.IR mbrfile .
668
It detects and uses LBA addressing when available
669
from the BIOS (the same could not
670
be done in the case of
671
.B pbs
672
due to space considerations).
673
If the
674
.I mbrfile
675
is not specified, a boot block is installed that
676
prints a message explaining that the disk is not bootable.
677
The
678
.B -9
679
option initialises the partition table to consist of one
680
.BR plan9
681
partition which spans the entire disc starting at the end of the
682
first track.
683
.SH EXAMPLES
684
Initialize the kernel disk driver with the partition information
685
from the FAT boot sectors.
686
If Plan 9 partitions exist, pass that partition information as well.
687
.IP
688
.EX
689
for(disk in /dev/sd??) {
690
	if(test -f $disk/data && test -f $disk/ctl)
691
		disk/fdisk -p $disk/data >$disk/ctl
692
	for(part in $disk/plan9*)
693
		if(test -f $part)
694
			disk/prep -p $part >$disk/ctl
695
}
696
.EE
697
.PP
698
Create a Plan 9 boot floppy on a previously formatted diskette.
699
.IP
700
.EX
701
disk/format -b /386/pbs -df /dev/fd0disk \e
702
	/386/9load /tmp/plan9.ini /386/9pcf.gz
703
.EE
704
.PP
705
Initialize the blank disk
706
.BR /dev/sdC0/data .
707
.IP
708
.EX
709
disk/mbr -m /386/mbr /dev/sdC0/data
710
disk/fdisk -baw /dev/sdC0/data
711
disk/prep -bw -a^(9fat nvram fossil cache swap) /dev/sdC0/plan9
712
disk/format -b /386/pbslba -d -r 2 /dev/sdC0/9fat \e
713
	/386/9load /386/9pcf /tmp/plan9.ini
714
.EE
715
.SH FILES
716
.TF /386/mbr.bootmgr
717
.TP
718
.B /386/mbr
719
.TP
720
.B /386/mbr.bootmgr
721
self-configuring `smart boot manager'
722
.SH SOURCE
723
.TF /n/sources/extra/bootmgr.tgz
724
.TP
725
.B /sys/src/cmd/disk/prep
726
.TP
727
.B /sys/src/boot/pc
728
.TP
729
.B /n/sources/extra/bootmgr.tgz
730
.I nasm
731
assembler source for
732
.B /386/mbr.bootmgr
733
.SH SEE ALSO
734
.IR floppy (3),
735
.IR sd (3),
736
.IR usb (4),
737
.IR 9boot (8),
738
.IR mk9660 (8),
739
.IR mkusbboot (8),
740
.IR partfs (8)
741
.SH BUGS
742
.I Format
743
can create FAT12 and FAT16
744
file systems, but not FAT32 file systems.
745
The boot block can only read from
746
FAT12 and FAT16 file systems.
747
.PP
748
If
749
.L "prep -p"
750
doesn't find a Plan 9 partition table,
751
it will emit commands to delete
752
.I all
753
extant partitions.
754
Similarly,
755
.L "fdisk -p"
756
will delete all partitions,
757
including
758
.LR data ,
759
if there are no partitions defined in the MBR.