xref: /netbsd/sbin/fdisk/fdisk.8 (revision 6550d01e)
1.\"	$NetBSD: fdisk.8,v 1.70 2010/04/07 09:40:58 wiz Exp $
2.\"
3.Dd April 6, 2010
4.Dt FDISK 8
5.Os
6.Sh NAME
7.Nm fdisk
8.Nd MS-DOS partition maintenance program
9.Sh SYNOPSIS
10.Nm
11.Op Fl aBFfiSuv
12.Bk -words
13.Oo
14.Fl 0 | 1 | 2 | 3 | E Ar number
15.Op Fl s Ar id/start/size Ns Bq Ar /bootmenu
16.Oc
17.Ek
18.Bk -words
19.Op Fl r Ar file | Fl w Ar file
20.Ek
21.Bk -words
22.Op Fl A Ar ptn_alignment Ns Bq Ar /ptn_0_offset
23.Ek
24.Bk -words
25.Op Fl b Ar cylinders/heads/sectors
26.Ek
27.Bk -words
28.Op Fl c Ar bootcode
29.Ek
30.Bk -words
31.Op Fl T Ar disktype
32.Ek
33.Bk -words
34.Op Fl t Ar disktab
35.Ek
36.Bk -words
37.Op Ar device
38.Ek
39.Nm
40.Fl l
41.Sh DESCRIPTION
42The
43.Nm
44program is used to display or update the
45.Em "master boot record"
46or
47.Em MBR
48in the first sector (sector 0)
49of a disk that uses the MBR style of partitioning.
50The following
51.Nx
52ports use this style of disk partitioning:
53amd64, arc, bebox, cobalt, hpcarm, hpcmips, hpcsh, i386, macppc,
54mvmeppc, netwinder, ofppc, and prep.
55.Pp
56The MBR contains bootable code, a partition table,
57an indication of which partition is
58.Sq active ,
59and (optionally, depending on the boot code) a menu
60for selecting a partition to be booted.
61There can be at most 4 partitions defined in sector 0,
62one of which can be an extended
63partition which can be split into any number of sub-partitions.
64.Pp
65The boot code in the MBR is usually invoked by the BIOS or firmware,
66and the MBR passes control to the next stage boot code
67stored in the first sector of the partition to be booted
68(the
69.Em "partition boot record"
70or
71.Em PBR ) .
72.Pp
73After booting,
74.Nx
75does not use the partitioning done by
76.Nm ,
77instead it uses a
78.Nx
79disklabel saved in sector 1 of the
80.Nx
81partition.
82See
83.Xr mbrlabel 8
84for a way of using information from the MBR
85to construct a
86.Nx
87disklabel.
88.Pp
89The standard MBR boot code will only boot the
90.Sq active
91partition.
92However,
93.Nx
94contains additional boot programs which allow the user to
95interactively select which of the partitions to boot.
96The
97.Sq mbr_ext
98code will also boot
99.Nx
100from an extended partition but will not work on old systems that do not
101support LBA reads, the
102.Sq mbr_com0
103and
104.Sq mbr_com0_9600
105will read and write from a serial port.
106At the start the
107.Nm
108program will determine whether the disk sector 0 is valid as a boot sector.
109(This is determined by checking the magic number.)
110If not,
111.Nm
112will initialise the boot code as well as the partition table.
113During this, all four partitions will be marked empty.
114.Pp
115The flags
116.Fl a ,
117.Fl i
118or
119.Fl u
120are used to indicate that the partition data is to be updated.
121The
122.Nm
123program will enter an interactive conversational mode.
124This mode is designed not to change any data unless you explicitly tell it to;
125.Nm
126selects defaults for its questions to guarantee that behaviour.
127.Pp
128If partition data is going to be updated and the disk carries GUID Partition
129Tables,
130.Nm
131will remove both primary and backup GPT headers from the disk.
132See
133.Xr gpt 8
134for information on how to manipulate GUID Partition Tables.
135.Pp
136.Nm
137will calculate the correct
138.Em cylinder ,
139.Em head ,
140and
141.Em sector
142values for any partition you edit.
143If you specify
144.Fl v
145you will be asked whether you want to specify them yourself.
146.Pp
147Finally, when all the data for the first sector has been accumulated,
148.Nm
149will ask if you really want to write the new partition table.
150Only if you reply affirmatively to this question will
151.Nm
152write anything to the disk.
153.Pp
154Available options:
155.Pp
156.Bl -tag -width Ds
157.It Fl 0
158Specify partition slot 0 to be printed or updated.
159.It Fl 1
160Specify partition slot 1 to be printed or updated.
161.It Fl 2
162Specify partition slot 2 to be printed or updated.
163.It Fl 3
164Specify partition slot 3 to be printed or updated.
165.It Fl A Ar ptn_alignment Ns Bq Ar /ptn_0_offset
166Specify the alignment for all partitions and optionally the offset for the
167first partition of the disk and of extended partitions.
168If
169.Ar ptn_alignment
170is specified and
171.Ar ptn_0_offset
172is not specified, then the offset is set to the alignment.
173If
174.Fl A
175isn't specified, then the alignment of the first partition is inspected.
176If it ends on a 2048 sector boundary, then the alignment is set to 2048,
177if the start is a power of 2 less than, or equal to 2048 then the offset
178is set to the start sector.
179If the first partition isn't defined then the alignment and offset for disks
180larger than 128GB is set to 2048 (1MB).
181In all other cases the alignment default to a cylinder
182and the offset to a track (both using the BIOS geometry).
183The 1MB alignment is the same as that used by recent windows versions.
184.It Fl a
185Change the active partition.
186In interactive mode this question will be asked after the partitions
187have been processed.
188.It Fl B
189On an i386 or amd64 system, interactively update the boot selector settings.
190(The boot selector permits the user to interactively select the boot
191partition, and thus which operating system is run, at system boot time; see
192.Xr mbr 8
193for more information.)
194.It Fl b Ar cylinders/heads/sectors
195Specify the BIOS geometry parameters for
196.Ar cylinders ,
197.Ar heads ,
198and
199.Ar sectors .
200It is used only in conjunction with the
201.Fl u
202flag.
203If not specified the BIOS geometry will be obtained using sysctl (i386 and
204amd64) or by solving the simultaenous equations from the existing partition
205information.
206If that fails then either the geometry from the disklabel or 63 sectors and
20716 heads is used.
208.It Fl c Ar bootcode
209Specify the filename that
210.Nm
211should read the bootcode from.
212If the name of a directory is specified, then
213.Nm
214will look for files with the default names in that directory.
215The default is to read from
216.Pa /usr/mdec/mbr ,
217.Pa /usr/mdec/mbr_bootsel
218or
219.Pa /usr/mdec/mbr_ext
220depending on whether
221.Ar bootmenu
222was specified for any partitions
223on an i386 machine, and leave the bootcode empty for other
224machines.
225.It Fl E Ar number
226Specify extended partition
227.Ar number
228to be printed or updated.
229If the specified extended partition doesn't exist on updating partition data
230an additional extended partition will be created.
231.It Fl F
232Indicate that
233.Ar device
234is a regular file.
235Unless the geometry of
236.Ar device
237is told to
238.Nm
239by
240.Fl T Ar disktype ,
241.Nm
242will count the 512-byte sectors in
243.Ar device
244and produce a fake geometry.
245If
246.Ar device
247is a regular file,
248.Fl F
249will be used implicitly.
250.It Fl f
251Run
252.Nm
253in a non-interactive mode.
254In this mode, you can only change the disk parameters by using the
255.Fl b
256flag.
257This is provided only so scripts or other programs may use
258.Nm
259as part of an automatic installation process.
260.Pp
261Using the
262.Fl f
263flag with
264.Fl u
265makes it impossible to specify the starting and ending
266.Ar cylinder ,
267.Ar head ,
268and
269.Ar sector
270fields
271.Pq only Ar start No and Ar size No can be specified by Fl s No option .
272They will be automatically computed using the BIOS geometry.
273.It Fl i
274Explicitly request initialisation of the master boot code
275(similar to what
276.Ic fdisk /mbr
277does under
278.Tn MS-DOS ) ,
279even if the magic number in the first sector is ok.
280The partition table is left alone by this (but see above).
281.It Fl l
282Lists known
283.Em sysid
284values and exit.
285.It Fl r Ar file
286Read the boot record from file
287.Ar file
288instead of the specified disk.
289The geometry information used is still that of the disk volume.
290Any changes are written back to the file.
291.It Fl S
292When used with no other flags print a series of
293.Pa /bin/sh
294commands for setting variables to the partition information.
295This could be used by installation scripts.
296.It Fl s Ar id/start/size Ns Bq Ar /bootmenu
297Specify the partition
298.Ar id ,
299.Ar start ,
300.Ar size ,
301and optionally
302.Ar bootmenu .
303This flag requires the use of a partition selection flag
304.Pq Fl 0 , 1 , 2 , 3 , No or Fl E Ar number .
305.It Fl T Ar disktype
306Use the disklabel
307.Ar disktype
308instead of the disklabel on
309.Ar device .
310.It Fl t Ar disktab
311Read
312.Ar disktype
313from the named
314.Xr disktab 5
315file instead of from
316.Pa /etc/disktab .
317.It Fl u
318Update partition data, including
319.Em id , start , No and Em size .
320Unless
321.Fl f
322option
323.Pq non-interactive mode
324is specified,
325.Nm
326will display the partitions and interactively ask which one you want to edit.
327.Nm
328will step through each field showing the old value and asking for a new one.
329The
330.Em start
331and
332.Em size
333can be specified in blocks (NN),
334cylinders (NNc or NNcyl),
335megabytes (NNm or NNMB),
336or gigabytes (NNg or NNGB), values in megabytes and gigabytes
337will be rounded to the nearest cylinder boundary.
338The
339.Em size
340may be specified as
341.Em $
342in which case the partition will extend to the end of the available free space.
343.Pp
344In a non-interactive mode
345.Pq specified by Fl f No option ,
346partition data should be specified by
347.Fl s
348option.
349A partition selection option
350.Pq Fl 0 , 1 , 2 , 3 , No or Fl E Ar number
351should also be specified to select a partition slot to be updated.
352.Pp
353.Nm
354will not allow you to create partitions which overlap.
355If
356.Fl u
357and
358.Fl s
359are specified in a non-interactive mode
360then the details of the specified partition will be changed.
361Any other partitions which overlap the requested part of the disk will be
362silently deleted.
363.Pp
364If
365.Em bootmenu
366is specified for any partition
367.Nm
368will determine whether the installed boot code supports the bootselect code,
369if it doesn't you will be asked whether you want to install the required
370boot code.
371To remove a
372.Em bootmenu
373label, simply press
374.Aq space
375followed by
376.Aq return .
377.It Fl v
378Be more verbose, specifying
379.Fl v
380more than once may increase the amount of output.
381.Pp
382Using
383.Fl v
384with
385.Fl u
386allows the user to change more parameters than normally permitted.
387.It Fl w Ar file
388Write the modified partition table to file
389.Ar file
390instead of the disk.
391.El
392.Pp
393When called with no arguments, it prints the partition table.
394An example follows:
395.Bd -literal
396    Disk: /dev/rwd0d
397    NetBSD disklabel disk geometry:
398    cylinders: 16383, heads: 16, sectors/track: 63 (1008 sectors/cylinder)
399    total sectors: 40032696
400
401    BIOS disk geometry:
402    cylinders: 1023, heads: 255, sectors/track: 63 (16065 sectors/cylinder)
403    total sectors: 40032696
404
405    Partition table:
406    0: NetBSD (sysid 169)
407	bootmenu: net 1.5.
408	start 4209030, size 8289540 (4048 MB, Cyls 262-778), Active
409    1: Primary DOS with 32 bit FAT (sysid 11)
410	bootmenu: win98
411	start 63, size 4208967 (2055 MB, Cyls 0-262)
412    2: NetBSD (sysid 169)
413	bootmenu: current
414	start 32515560, size 7517136 (3670 MB, Cyls 2024-2491/234/40)
415    3: Ext. partition - LBA (sysid 15)
416	start 12498570, size 20016990 (9774 MB, Cyls 778-2024)
417    Extended partition table:
418    E0: NetBSD (sysid 169)
419	bootmenu: test
420	start 12498633, size 12305727 (6009 MB, Cyls 778-1544)
421    E1: Primary DOS with 32 bit FAT (sysid 11)
422	start 24804423, size 4096512 (2000 MB, Cyls 1544-1799)
423    E2: Primary DOS with 32 bit FAT (sysid 11)
424	start 28900998, size 3614562 (1765 MB, Cyls 1799-2024)
425    Bootselector enabled, infinite timeout.
426    First active partition: 0
427.Ed
428.Pp
429This example disk is divided into four partitions, the last of which is
430an extended partition.
431The sub-partitions of the extended partition are also shown.
432In this case there is no free space in either the disk or in the extended
433partition.
434.Pp
435The various fields in each partition entry are:
436.br
437.in +4
438.Em ptn_number : id_name
439(sysid
440.Em id_number )
441.br
442.in +4
443bootmenu:
444.Em bootmenu
445.br
446start
447.Em start ,
448size
449.Em size ( MB
450MB, Cyls
451.Em first Ns No - Ns Em next )
452.Op , Active
453.in -4
454.in -4
455.Bl -tag -width "bootmenu"
456.It Em ptn_number
457is the number of the partition.
458.It Em id_name
459is the name of the filesystem type or operating system that uses this partition.
460.It Em id_number
461is the number that identifies the partition type.
462169 decimal is used for
463.Nx
464partitions,
46515 decimal to create an extended partition
466and 0 to mark a partition as unused.
467Use
468.Nm
469.Fl l
470to list the known partition types.
471.It Em bootmenu
472is the menu prompt output by the interactive boot code for this partition.
473This line is omitted if the prompt is not defined.
474.It Em start , Em size
475are the start address and size of the partition in sectors.
476.It Em MB
477is the size of the partition in megabytes.
478.It Em first , Em next
479are the bounds of this partition displayed as cylinder/head/sector.
480If the partition starts (or ends) on a cylinder boundary the head and
481sector values are omitted.
482If
483.Fl v
484is not specified the start of extended partitions and the first partition
485on the disk are rounded down to include the mandatory red tape in the
486preceding track.
487.It Active
488is output if this is the active partition.
489.El
490.Pp
491If the
492.Fl v
493flag is specified, the beginning and end of each partition are also
494displayed as follows:
495.in +4
496beg: cylinder
497.Em cylinder ,
498head
499.Em head ,
500sector
501.Em sector
502.br
503end: cylinder
504.Em cylinder ,
505head
506.Em head ,
507sector
508.Em sector
509.in -4
510.Bl -tag -width "bootmenu"
511.It Em "cylinder" , Em "head" , Em "sector"
512are the beginning or ending address of a partition.
513.Pp
514.Em "Note:"
515these numbers are read from the bootblock, so are the values calculated
516by a previous run of
517.Nm .
518.El
519.Pp
520.Nm
521attempts to check whether each partition is bootable,
522by checking the magic number and some other characteristics
523of the first sector of each partition (the PBR).
524If the partition does not appear to be bootable,
525.Nm
526will print a line containing
527.Dq "PBR is not bootable"
528followed by an error message.
529If the partition is bootable, and if the
530.Fl v
531flag is specified,
532.Nm
533will print
534.Dq "PBR appears to be bootable" .
535If the
536.Fl v
537flag is specified more than once,
538.Nm
539will print the heading
540.Dq "Information from PBR:"
541followed by one or more lines of information gleaned from the PBR;
542this additional information may be incorrect or misleading,
543because different operating systems use different PBR formats.
544Note that, even if no errors are reported, an attempt to boot
545from the partition might fail.
546.Nx
547partitions may be made bootable using
548.Xr installboot 8 .
549.Sh NOTES
550This program is only available (and useful) on systems with PC-platform-style
551MBR partitioning.
552.Pp
553Traditionally the partition boundaries should be on cylinder boundaries
554using the BIOS geometry, with the exception of the first partition,
555which traditionally begins in the second track of the first cylinder
556(cylinder 0, head 1, sector 1).
557Although the BIOS geometry is typically different from the geometry
558reported by the drive, neither will match the actual physical geometry
559for modern disks (the actual geometry will vary across the disk).
560Keeping the partition boundaries on cylinder boundaries makes partitioning
561a driver easier as only relatively small numbers need be entered.
562.Pp
563The automatic calculation of the starting cylinder and
564other parameters uses
565a set of figures that represent what the BIOS thinks is the
566geometry of the drive.
567The default values should be correct for the system on which
568.Nm
569is run; however, if you move the disk to a different system, the
570BIOS of that system might use a different geometry translation.
571.Pp
572If you run the equivalent of
573.Nm
574on a different operating system then the
575.Ar bootmenu
576strings associated with extended partitions may be lost.
577.Pp
578Editing an existing partition is risky, and may cause you to
579lose all the data in that partition.
580.Pp
581You should run this program interactively once or twice to see how it works.
582This is completely safe as long as you answer the last question in the negative.
583You can also specify
584.Fl w Ar file
585to write the output to a file and later specify
586.Fl r Ar file
587to read back the updated information.
588This can be done without having write access to the disk volume.
589.Sh FILES
590.Bl -tag -width /usr/mdec/mbrxxxxxxxx -compact
591.It Pa /usr/mdec/mbr
592Default location of i386 bootcode
593.It Pa /usr/mdec/mbr_bootsel
594Default location of i386 bootselect code
595.It Pa /usr/mdec/mbr_ext
596Default location of i386 bootselect for extended partitions
597.El
598.Sh EXAMPLES
599Update MBR partition data of
600.Pa /dev/rwd0d
601in interactive mode:
602.Pp
603.Dl Ic fdisk -u /dev/rwd0d
604.Pp
605Change active MBR partition of
606.Pa /dev/rwd0d
607in interactive mode:
608.Pp
609.Dl Ic fdisk -a /dev/rwd0d
610.Pp
611Install MBR bootcode
612.Pa /usr/mdec/mbr_bootsel
613into
614.Pa /dev/rwd0d :
615.Pp
616.Dl Ic fdisk -c /usr/mdec/mbr_bootsel /dev/rwd0d
617.Pp
618Set MBR partition data for slot 0 of
619.Pa /dev/rwd0d
620specifying values without prompt:
621.Pp
622.Dl Ic fdisk -f -u -0 -s 169/63/2097089 /dev/rwd0d
623.Pp
624Make partition slot 0 of
625.Pa /dev/rwd0d
626active without prompt:
627.Pp
628.Dl Ic fdisk -f -a -0 /dev/rwd0d
629.Pp
630Initialize and create MBR partition data using bootcode
631.Pa destdir/usr/mdec/mbr
632without prompt against 1GB disk image file
633.Pa diskimg :
634.Pp
635.Dl Ic fdisk -f -i -b 130/255/63 -c destdir/usr/mdec/mbr -F diskimg
636.Pp
637Create MBR partition data for slot 0 which has an active NetBSD partition
638using whole disk without prompt against 1GB disk image file
639.Pa diskimg :
640.Pp
641.Dl Ic fdisk -f -a -u -0 -s 169/63/2097089 -F diskimg
642.Sh SEE ALSO
643.Xr disktab 5 ,
644.Xr boot 8 ,
645.Xr disklabel 8 ,
646.Xr gpt 8 ,
647.Xr installboot 8 ,
648.Xr mbr 8 ,
649.Xr mbrlabel 8
650.Sh BUGS
651The word
652.Sq partition
653is used to mean both an MBR partition and a
654.Nx
655partition, sometimes in the same sentence.
656.Pp
657There are subtleties that the program detects that are not explained in
658this manual page.
659