1.\" 2.Dd October 5, 2016 3.Dt FDISK 8 4.Os 5.Sh NAME 6.Nm fdisk 7.Nd PC slice table maintenance utility 8.Sh SYNOPSIS 9.Nm 10.Op Fl BIaipqstu 11.Op Fl b Ar bootcode 12.Op Fl 1234 13.Op Ar disk 14.Nm 15.Fl f Ar configfile 16.Op Fl itv 17.Op Ar disk 18.Sh PROLOGUE 19In order for the BIOS to boot the kernel, 20certain conventions must be adhered to. 21Sector 0 of the disk must contain boot code, 22a slice table, 23and a magic number. 24BIOS slices can be used to break the disk up into several pieces. 25The BIOS brings in sector 0 and verifies the magic number. 26The sector 270 boot code then searches the slice table to determine which 28slice is marked 29.Dq active . 30This boot code then brings in the bootstrap from the 31active slice and, if marked bootable, runs it. 32Under 33.Tn DOS , 34you can have one or more slices with one active. 35The 36.Tn DOS 37.Nm 38utility can be used to divide space on the disk into slices and set one 39active. 40.Sh DESCRIPTION 41.Bf -symbolic 42This command is obsolete. 43Users are advised to use 44.Xr gpart 8 45instead. 46.Ef 47.Pp 48The 49.Fx 50utility, 51.Nm , 52serves a similar purpose to the 53.Tn DOS 54utility. 55The first form is used to 56display slice information or to interactively edit the slice 57table. 58The second is used to write a slice table using a 59.Ar configfile , 60and is designed to be used by other scripts/programs. 61.Pp 62Options are: 63.Bl -tag -width indent 64.It Fl a 65Change the active slice only. 66Ignored if 67.Fl f 68is given. 69.It Fl b Ar bootcode 70Get the boot code from the file 71.Ar bootcode . 72Default is 73.Pa /boot/mbr . 74.It Fl B 75Reinitialize the boot code contained in sector 0 of the disk. 76Ignored if 77.Fl f 78is given. 79.It Fl f Ar configfile 80Set slice values using the file 81.Ar configfile . 82The 83.Ar configfile 84only modifies explicitly specified slices, unless 85.Fl i 86is also given, in which case all existing slices are deleted (marked 87as 88.Dq unused ) 89before the 90.Ar configfile 91is read. 92The 93.Ar configfile 94can be 95.Sq Fl , 96in which case standard input is read. 97See 98.Sx CONFIGURATION FILE , 99below, for file syntax. 100.Pp 101.Em WARNING : 102when 103.Fl f 104is used, you are not asked if you really want to write the slices 105table (as you are in the interactive mode). 106Use with caution! 107.It Fl i 108Initialize sector 0 of the disk. 109Existing slice entries will be cleared 110(marked as unused) before editing. 111(Compare with 112.Fl u . ) 113.It Fl I 114Initialize sector 0 slice table 115for one 116.Fx 117slice covering the entire disk. 118.It Fl p 119Print a slice table in 120.Nm 121configuration file format and exit; see 122.Sx CONFIGURATION FILE , 123below. 124.It Fl q 125Be quiet. 126Benign warnings (such as "GEOM not found") are suppressed. 127.It Fl s 128Print summary information and exit. 129.It Fl t 130Test mode; do not write slice values. 131Generally used with the 132.Fl f 133option to see what would be written to the slice table. 134Implies 135.Fl v . 136.It Fl u 137Update (edit) the disk's sector 0 slice table. 138Ignored if 139.Fl f 140is given. 141.It Fl v 142Be verbose. 143When 144.Fl f 145is used, 146.Nm 147prints out the slice table that is written to the disk. 148.It Fl 1234 149Operate on a single slice table entry only. 150Ignored if 151.Fl f 152is given. 153.El 154.Pp 155The final disk name can be provided as a 156.Dq bare 157disk name only, e.g.\& 158.Pa da0 , 159or as a full pathname. 160If omitted, 161.Nm 162tries to figure out the default disk device name from the 163mounted root device. 164.Pp 165When called with no arguments, it prints the sector 0 slice table. 166An example follows: 167.Bd -literal 168 ******* Working on device /dev/ada0 ******* 169 parameters extracted from in-core disklabel are: 170 cylinders=769 heads=15 sectors/track=33 (495 blks/cyl) 171 172 parameters to be used for BIOS calculations are: 173 cylinders=769 heads=15 sectors/track=33 (495 blks/cyl) 174 175 Warning: BIOS sector numbering starts with sector 1 176 Information from DOS bootblock is: 177 The data for partition 1 is: 178 sysid 165,(FreeBSD/NetBSD/386BSD) 179 start 495, size 380160 (185 Meg), flag 0 180 beg: cyl 1/ sector 1/ head 0; 181 end: cyl 768/ sector 33/ head 14 182 The data for partition 2 is: 183 sysid 164,(unknown) 184 start 378180, size 2475 (1 Meg), flag 0 185 beg: cyl 764/ sector 1/ head 0; 186 end: cyl 768/ sector 33/ head 14 187 The data for partition 3 is: 188 <UNUSED> 189 The data for partition 4 is: 190 sysid 99,(ISC UNIX, other System V/386, GNU HURD or Mach) 191 start 380656, size 224234 (109 Meg), flag 80 192 beg: cyl 769/ sector 2/ head 0; 193 end: cyl 197/ sector 33/ head 14 194.Ed 195.Pp 196The disk is divided into three slices that happen to fill the disk. 197The second slice overlaps the end of the first. 198(Used for debugging purposes.) 199.Bl -tag -width ".Em cyl , sector No and Em head" 200.It Em sysid 201is used to label the slice. 202.Fx 203reserves the 204magic number 165 decimal (A5 in hex). 205.It Xo 206.Em start 207and 208.Em size 209.Xc 210fields provide the start address 211and size of a slice in sectors. 212.It Em "flag 80" 213specifies that this is the active slice. 214.It Xo 215.Em cyl , sector 216and 217.Em head 218.Xc 219fields are used to specify the beginning and end addresses of the slice. 220.El 221.Pp 222.Em Note : 223these numbers are calculated using BIOS's understanding of the disk geometry 224and saved in the bootblock. 225.Pp 226The 227.Fl i 228and 229.Fl u 230flags are used to indicate that the slice data is to be updated. 231Unless the 232.Fl f 233option is also given, 234.Nm 235will enter a conversational mode. 236In this mode, no changes will be written to disk unless you explicitly tell 237.Nm 238to. 239.Pp 240The 241.Nm 242utility will display each slice and ask whether you want to edit it. 243If you say yes, 244.Nm 245will step through each field, show you the old value, 246and ask you for a new one. 247When you are done with the slice, 248.Nm 249will display it and ask you whether it is correct. 250It will then proceed to the next entry. 251.Pp 252Getting the 253.Em cyl , sector , 254and 255.Em head 256fields correct is tricky, so by default, 257they will be calculated for you; 258you can specify them if you choose to though. 259.Pp 260After all the slices are processed, 261you are given the option to change the 262.Dq active 263slice. 264Finally, when all the new data for sector 0 has been accumulated, 265you are asked to confirm whether you really want to rewrite it. 266.Pp 267The difference between the 268.Fl u 269and 270.Fl i 271flags is that 272the 273.Fl u 274flag edits (updates) the existing slice parameters 275while the 276.Fl i 277flag is used to 278.Dq initialize 279them (old values will be ignored); 280if you edit the first slice, 281.Fl i 282will also set it up to use the whole disk for 283.Fx 284and make it active. 285.Sh NOTES 286The automatic calculation of starting cylinder etc.\& uses 287a set of figures that represent what the BIOS thinks the 288geometry of the drive is. 289These figures are taken from the in-core disklabel by default, 290but 291.Nm 292initially gives you an opportunity to change them. 293This allows you to create a bootblock that can work with drives 294that use geometry translation under the BIOS. 295.Pp 296If you hand craft your disk layout, 297please make sure that the 298.Fx 299slice starts on a cylinder boundary. 300.Pp 301Editing an existing slice will most likely result in the loss of 302all data in that slice. 303.Pp 304You should run 305.Nm 306interactively once or twice to see how it works. 307This is completely safe as long as you answer the last question 308in the negative. 309There are subtleties that 310.Nm 311detects that are not fully explained in this manual page. 312.Sh CONFIGURATION FILE 313When the 314.Fl f 315option is given, a disk's slice table can be written using values 316from a 317.Ar configfile . 318The syntax of this file is very simple; 319each line is either a comment or a specification, as follows: 320.Bl -tag -width indent 321.It Ic # Ar comment ... 322Lines beginning with a 323.Ic # 324are comments and are ignored. 325.It Ic g Ar spec1 spec2 spec3 326Set the BIOS geometry used in slice calculations. 327There must be 328three values specified, with a letter preceding each number: 329.Bl -tag -width indent 330.It Cm c Ns Ar num 331Set the number of cylinders to 332.Ar num . 333.It Cm h Ns Ar num 334Set the number of heads to 335.Ar num . 336.It Cm s Ns Ar num 337Set the number of sectors/track to 338.Ar num . 339.El 340.Pp 341These specs can occur in any order, as the leading letter determines 342which value is which; however, all three must be specified. 343.Pp 344This line must occur before any lines that specify slice 345information. 346.Pp 347It is an error if the following is not true: 348.Bd -literal -offset indent 3491 <= number of cylinders 3501 <= number of heads <= 256 3511 <= number of sectors/track < 64 352.Ed 353.Pp 354The number of cylinders should be less than or equal to 1024, but this 355is not enforced, although a warning will be printed. 356Note that bootable 357.Fx 358slices (the 359.Dq Pa / 360file system) must lie completely within the 361first 1024 cylinders; if this is not true, booting may fail. 362Non-bootable slices do not have this restriction. 363.Pp 364Example (all of these are equivalent), for a disk with 1019 cylinders, 36539 heads, and 63 sectors: 366.Bd -literal -offset indent 367g c1019 h39 s63 368g h39 c1019 s63 369g s63 h39 c1019 370.Ed 371.It Ic p Ar slice type start length 372Set the slice given by 373.Ar slice 374(1-4) to type 375.Ar type , 376starting at sector 377.Ar start 378for 379.Ar length 380sectors. 381If the 382.Ar start 383or 384.Ar length 385is suffixed with a 386.Em K , 387.Em M 388or 389.Em G , 390it is taken as a 391.Em Kilobyte , 392.Em Megabyte 393or 394.Em Gigabyte 395measurement respectively. 396If the 397.Ar start 398is given as 399.Qq * 400it is set to the value of the previous partition end. 401If the 402.Ar length 403is given as 404.Qq * 405the partition end is set to the end of the disk. 406.Pp 407Only those slices explicitly mentioned by these lines are modified; 408any slice not referenced by a 409.Ic p 410line will not be modified. 411However, if an invalid slice table is present, or the 412.Fl i 413option is specified, all existing slice entries will be cleared 414(marked as unused), and these 415.Ic p 416lines will have to be used to 417explicitly set slice information. 418If multiple slices need to be 419set, multiple 420.Ic p 421lines must be specified; one for each slice. 422.Pp 423These slice lines must occur after any geometry specification lines, 424if one is present. 425.Pp 426The 427.Ar type 428is 165 for 429.Fx 430slices. 431Specifying a slice type of zero is 432the same as clearing the slice and marking it as unused; however, 433dummy values (such as 434.Dq 0 ) 435must still be specified for 436.Ar start 437and 438.Ar length . 439.Pp 440Note: the start offset will be rounded upwards to a head boundary if 441necessary, and the end offset will be rounded downwards to a cylinder 442boundary if necessary. 443.Pp 444Example: to clear slice 4 and mark it as unused: 445.Pp 446.Dl "p 4 0 0 0" 447.Pp 448Example: to set slice 1 to a 449.Fx 450slice, starting at sector 1 451for 2503871 sectors (note: these numbers will be rounded upwards and 452downwards to correspond to head and cylinder boundaries): 453.Pp 454.Dl "p 1 165 1 2503871" 455.Pp 456Example: to set slices 1, 2 and 4 to 457.Fx 458slices, the first being 2 Gigabytes, the second being 10 Gigabytes and the 459forth being the remainder of the disk (again, numbers will be rounded 460appropriately): 461.Pp 462.Dl "p 1 165 63 2G" 463.Dl "p 2 165 * 10G" 464.Dl "p 3 0 0 0" 465.Dl "p 4 165 * *" 466.It Ic a Ar slice 467Make 468.Ar slice 469the active slice. 470Can occur anywhere in the config file, but only 471one must be present. 472.Pp 473Example: to make slice 1 the active slice: 474.Pp 475.Dl "a 1" 476.El 477.Sh FILES 478.Bl -tag -width ".Pa /boot/mbr" -compact 479.It Pa /boot/mbr 480The default boot code. 481.El 482.Sh SEE ALSO 483.Xr boot0cfg 8 , 484.Xr bsdlabel 8 , 485.Xr gpart 8 , 486.Xr newfs 8 487.Sh HISTORY 488A version of 489.Nm 490first appeared in the Mach Operating System. 491It was subsequently ported to 492.Bx 386 . 493.Sh AUTHORS 494.An -nosplit 495.Nm 496for Mach Operating System was written by 497.An Robert Baron Aq Mt rvb@cs.cmu.edu . 498It was ported to 499.Bx 386 500by 501.An Julian Elischer Aq Mt julian@tfs.com . 502.Sh BUGS 503The default boot code will not necessarily handle all slice types 504correctly, in particular those introduced since 505.Tn MS-DOS 5066.x. 507.Pp 508The entire utility should be made more user-friendly. 509.Pp 510Most users new to 511.Fx 512do not understand the difference between 513.Dq slice 514and 515.Dq partition , 516causing difficulty to adjust. 517.Pp 518You cannot use this command to completely dedicate a disk to 519.Fx . 520The 521.Xr bsdlabel 8 522command must be used for this. 523