1.\" Copyright (c) 2002 Marcel Moolenaar 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 8.\" 1. Redistributions of source code must retain the above copyright 9.\" notice, this list of conditions and the following disclaimer. 10.\" 2. Redistributions in binary form must reproduce the above copyright 11.\" notice, this list of conditions and the following disclaimer in the 12.\" documentation and/or other materials provided with the distribution. 13.\" 14.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 15.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 18.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24.\" 25.\" $FreeBSD: src/sbin/gpt/gpt.8,v 1.17 2006/06/22 22:22:32 marcel Exp $ 26.\" 27.Dd March 2, 2019 28.Dt GPT 8 29.Os 30.Sh NAME 31.Nm gpt 32.Nd "GUID partition table maintenance utility" 33.Sh SYNOPSIS 34.Nm 35.Op Ar general_options 36.Ar command 37.Op Ar command_options 38.Ar device ... 39.Sh DESCRIPTION 40The 41.Nm 42utility provides the necessary functionality to manipulate GUID partition 43tables (GPTs), but see 44.Sx BUGS 45below for how and where functionality is missing. 46GPT partitions are accessed as 47.Dx 48disk slices, with same number as GPT partition, 49127 slices per disk device are supported. 50The basic usage model of the 51.Nm 52tool follows that of the 53.Xr cvs 1 54tool. 55The general options are described in the following paragraph. 56The remaining paragraphs describe the individual commands with their options. 57Here we conclude by mentioning that a 58.Ar device 59is either a special file 60corresponding to a disk-like device or a regular file. 61The command is applied to each 62.Ar device 63listed on the command line. 64.Ss General Options 65The general options allow the user to change default settings or otherwise 66change the behaviour that is applicable to all commands. 67Not all commands use all default settings, so some general options may not 68have an effect on all commands. 69.Pp 70The 71.Fl p Ar count 72option allows the user to change the number of partitions the GPT can 73accommodate. 74This is used whenever a new GPT is created. 75By default, the 76.Nm 77utility will create space for 128 partitions (or 32 sectors of 512 bytes). 78.Pp 79The 80.Fl r 81option causes the 82.Nm 83utility to open the device for reading only. 84Currently this option is primarily useful for the 85.Ic show 86command, but the intent 87is to use it to implement dry-run behaviour. 88.Pp 89The 90.Fl v 91option controls the verbosity level. 92The level increases with every occurrence of this option. 93There is no formalized definition of the different levels yet. 94.Ss Commands 95.Bl -tag -width indent 96.\" ==== add ==== 97.It Xo 98.Nm 99.Ic add 100.Op Fl b Ar number 101.Op Fl i Ar index 102.Op Fl s Ar count 103.Op Fl t Ar type 104.Ar device ... 105.Xc 106The 107.Ic add 108command allows the user to add a new partition to an existing table, 109the name of the disk slice for the added partition is printed. 110By default, it will create a 111.Cm dfly 112partition covering the first available block 113of an unused disk space. 114The command-specific options can be used to control this behaviour. 115.Pp 116The 117.Fl b Ar number 118option allows the user to specify the starting (beginning) sector number of 119the partition. 120The minimum sector number is 1, but has to fall inside an unused region of 121disk space that is covered by the GPT. 122.Pp 123The 124.Fl i Ar index 125option allows the user to specify which (free) entry in the GPT table is to 126be used for the new partition. 127By default, the first free entry is selected. 128Entries start at index 0 representing partition 0 of the GPT. 129.Pp 130The 131.Fl s Ar count 132option allows the user to specify the size of the partition in sectors. 133The minimum size is 1. 134.Pp 135The 136.Fl t Ar type 137option allows the user to specify the partition type. 138The type is given as an UUID, but 139.Nm 140accepts 141.Cm efi , swap , ufs , hfs , linux , dfly , hammer, hammer2 142and 143.Cm windows 144as aliases for the most commonly used partition types. 145.Cm ufs 146is a 147.Fx 148UFS UUID. 149.Cm dfly 150has the alias 151.Cm dragonfly 152and is a 153.Dx 154.Xr disklabel64 5 155UUID. 156You may also specify any symbolic name in the system 157.Xr uuids 5 158files. 159.Pp 160.Em NOTE! 161If you don't specify a beginning sector with 162.Fl b Ar number 163, the new partition will be aligned to 1MiB in size and position 164(in case of 512 byte sector sizes). 165.\" ==== boot ==== 166.It Nm Ic boot Ar device ... 167The 168.Ic boot 169command allows the user to create a small boot partition in a freshly 170created GPT. 171.Pp 172This command creates a small, 1GB boot partition as partition #0 173and hacks in a special 174.Sq slice 1 175in the PMBR which aliases it. 176The PMBR is further modified to add the necessary boot code. 177You can then disklabel GPT partition #0 and mount it, placing the contents of 178.Pa /boot 179directory within. 180You must add a line to 181.Pa loader.conf , 182like 183.Bd -literal -offset indent 184vfs.root.mountfrom="ufs:da1s1a" 185.Ed 186.Pp 187which point to the actual root mount. 188.Pp 189Your root partition may be another GPT partition and you may use a 64 bit 190disklabel within that partition if you desire. 191.Pp 192The 193.Sq boot0 194boot manager is used, it can be manipulated with the 195.Xr boot0cfg 8 196command, 197.Sq packet 198option usually needs to be set. 199.Pp 200.Em NOTE! 201A disk setup with the 202.Ar boot 203command may not be shared with another OS, 204as it doesn't use a fully standard GPT. 205.Pp 206.Em WARNING! 207Some BIOSes may not be able to deal with this hack, your mileage may vary. 208.\" ==== create ==== 209.It Nm Ic create Oo Fl fp Oc Ar device ... 210The 211.Ic create 212command allows the user to create a new (empty) GPT. 213By default, one cannot create a GPT when the device contains a MBR, 214however this can be overridden with the 215.Fl f 216option. 217If the 218.Fl f 219option is specified, an existing MBR is destroyed and any partitions 220described by the MBR are lost. 221.Pp 222The 223.Fl p 224option tells 225.Nm 226to create only the primary table and not the backup table. 227This option is only useful for debugging and should not be used otherwise. 228.\" ==== destroy ==== 229.It Nm Ic destroy Oo Fl r Oc Ar device ... 230The 231.Ic destroy 232command allows the user to destroy an existing, possibly not empty GPT. 233.Pp 234The 235.Fl r 236option instructs 237.Nm 238to destroy the table in a way that it can be recovered. 239.\" ==== init ==== 240.It Nm Ic init Fl f Oo Fl B Oc Oo Fl E Oc Ar device ... 241The 242.Ic init 243command allows the user to create a new GPT similar 244to the create command, but will also populate it with 245a boot slice (s0) and a 246.Dx 247slice (s1). 248The boot slice will be dos-formatted. 249The disklabel will be left empty and ready to edit. 250.Pp 251Due to the destructive nature of this directive, the 252.Fl f 253option must also be specified. 254.Pp 255If the 256.Fl B 257option is specified, /boot/bootx64.efi will be copied into 258the msdos slice (s0), and the disklabel will be initialized 259with -B in addition to the normal -r -w. 260.Pp 261If the 262.Fl E 263option is specified, the drive is TRIMed prior to the installation 264of the new label, if supported. The operation will continue if not 265supported. Note that this will complete destroy the contents of the 266drive. 267.\" ==== label ==== 268.It Xo 269.Nm 270.Ic label 271.Op Fl a 272.Aq Fl f Ar file | Fl l Ar label 273.Ar device ... 274.Xc 275.It Xo 276.Nm 277.Ic label 278.Op Fl b Ar number 279.Op Fl i Ar index 280.Op Fl s Ar count 281.Op Fl t Ar type 282.Aq Fl f Ar file | Fl l Ar label 283.Ar device ... 284.Xc 285The 286.Ic label 287command allows the user to label any partitions that match the selection. 288At least one of the following selection options must be specified. 289.Pp 290The 291.Fl a 292option specifies that all partitions should be labeled. 293It is mutually exclusive with all other selection options. 294.Pp 295The 296.Fl b Ar number 297option selects the partition that starts at the given block number. 298.Pp 299The 300.Fl i Ar index 301option selects the partition with the given partition number. 302Partition numbers start at 0. 303.Pp 304The 305.Fl s Ar count 306option selects all partitions that have the given size. 307This can cause multiple partitions to be removed. 308.Pp 309The 310.Fl t Ar type 311option selects all partitions that have the given type. 312The type is given as an UUID or by the aliases that the 313.Ic add 314command accepts. 315This can cause multiple partitions to be removed. 316.Pp 317The 318.Fl f Ar file 319or 320.Fl l Ar label 321options specify the new label to be assigned to the selected partitions. 322The 323.Fl f Ar file 324option is used to read the label from the specified file. 325Only the first line is read from the file and the trailing newline 326character is stripped. 327If the file name is the dash or minus sign 328.Pq Fl , 329the label is read from 330the standard input. 331The 332.Fl l Ar label 333option is used to specify the label in the command line. 334The label is assumed to be encoded in UTF-8. 335.\" ==== migrate ==== 336.It Nm Ic migrate Oo Fl fs Oc Ar device ... 337The 338.Ic migrate 339command allows the user to migrate an MBR-based disk partitioning into a 340GPT-based partitioning. 341By default, the MBR is not migrated when it contains partitions of an unknown 342type. 343This can be overridden with the 344.Fl f 345option. 346Specifying the 347.Fl f 348option will cause unknown partitions to be ignored and any data in it 349to be lost. 350.Pp 351The 352.Fl s 353option prevents migrating 354.Bx 355disk labels into GPT partitions by creating 356the GPT equivalent of a slice. 357.\" ==== remove ==== 358.It Nm Ic remove Oo Fl a Oc Ar device ... 359.It Xo 360.Nm 361.Ic remove 362.Op Fl b Ar number 363.Op Fl i Ar index 364.Op Fl s Ar count 365.Op Fl t Ar type 366.Ar device ... 367.Xc 368The 369.Ic remove 370command allows the user to remove any and all partitions that match the 371selection. 372It uses the same selection options as the 373.Ic label 374command. 375See above for a description of these options. 376Partitions are removed by clearing the partition type. 377No other information is changed. 378.\" ==== show ==== 379.It Nm Ic show Oo Fl glu Oc Ar device ... 380The 381.Ic show 382command displays the current partitioning on the listed devices and gives 383an overall view of the disk contents. 384By default, the GPT partition type is displayed in a user-friendly form. 385If the 386.Fl u 387option is specified, the GPT partition type is displayed as a UUID. 388With the 389.Fl l 390option, the GPT partition label will be displayed instead of the GPT partition 391type. 392With the 393.Fl g 394option, the GPT partition GUID will be displayed instead of the GPT partition 395type. 396None of the options has any effect on non-GPT partitions. 397The order of precedence of the options are: 398.Fl l , 399.Fl g , 400.Fl u . 401.El 402.Sh FILES 403.Bl -tag -width ".Pa /etc/defaults/uuids" 404.It Pa /boot/boot0 405The default 406.Sq boot0 407image. 408.It Pa /etc/defaults/uuids 409A list of UUIDs 410and their symbolic names provided by the OS vendor. 411.It Pa /etc/uuids 412A list of UUIDs 413and their symbolic names provided by the system administrator. 414.El 415.Sh EXAMPLES 416To install an empty GPT on 417.Pa ad6 : 418.Pp 419.Dl "gpt create ad6" 420.Pp 421GPT partitions are defined in number of sectors, the sector size is usually 512B, 422which is assumed in the examples below, it can be found using: 423.Pp 424.Dl "gpt -v show ad6" 425.Pp 426To add a dummy GPT partition 0: 427.Pp 428.Dl "gpt add -i0 -s16 ad6" 429.Pp 430You might want to do this to not use slice 0 for data; 431when GPT is not used on a disk, slice 0 is the compatibility slice, 432which is used for 433.Dq dangerously dedicated 434disks. 435For GPT slice 0 has no special meaning, it is just the first slice on the disk. 436.Pp 437To add a GPT partition of size approx. 100GB: 438.Pp 439.Dl "gpt add -s200000000 ad6" 440.Pp 441This will be GPT partition 1 as it is the first one free, 442it will be accessible as 443.Pa ad6s1 , 444which is also printed by the command. 445The type will be 446.Dq DragonFly Label64 , 447it will have to be set up by 448.Xr disklabel64 8 . 449.Pp 450To add GPT partition 5 with type 451.Dq DragonFly HAMMER 452using the remaining free space: 453.Bd -literal -offset indent 454gpt add -i5 -t "DragonFly HAMMER" ad6 455.Ed 456.Pp 457To print the contents of the GPT: 458.Pp 459.Dl "gpt show ad6" 460.Ss Boot Setup 461To setup a disk using GPT for booting, the steps below can be used. 462System is copied from an already installed disk, 463e.g.\& a hard disk or an install CD. 464This example will setup disk 465.Pa da1 466with GPT for booting, using the 467.Ic boot 468command. 469.Pp 470.Em WARNING! 471Any previous data on disk installed to will be deleted. 472.Bd -literal -offset indent 473gpt create -f da1 474gpt boot da1 475boot0cfg -s 2 da1 476disklabel -B -r -w da1s0 auto 477disklabel -e da1s0 # add `a: * * 4.2BSD', to add `a' partition 478 # with fstype `4.2BSD' covering whole slice 479 480gpt add da1 481disklabel64 -r -w da1s1 auto 482disklabel64 -e da1s1 # add `b: 4G * swap', to add `b' partition 483 # with fstype `swap' and size 4GB, 484 # add `a: * * HAMMER', to add `a' partition 485 # with fstype `HAMMER' covering rest of slice 486newfs_hammer -L ROOT /dev/da1s1a 487mount_hammer /dev/da1s1a /mnt 488 489newfs /dev/da1s0a 490mkdir /mnt/boot 491mount /dev/da1s0a /mnt/boot 492 493cpdup / /mnt # copy each file system you need, e.g. 494cpdup /boot /mnt/boot 495cpdup /var /mnt/var 496cpdup /var/tmp /mnt/var/tmp 497cpdup /usr /mnt/usr 498 499cd /mnt 500vi etc/fstab # add `/dev/da1s1a / hammer rw', 501 # add `/dev/da1s1b none swap sw', 502 # add `/dev/da1s0a /boot ufs rw 1 1', 503 # delete lines for file systems cpdup'ed above 504vi boot/loader.conf # add `vfs.root.mountfrom="hammer:da1s1a"' 505cd 506umount /mnt/boot 507umount /mnt 508.Ed 509.Sh COMPATIBILITY 510The GPT that 511.Nm 512manipulates is part of the EFI standard and is supported by many OSs. 513GPT uses 64 bits to store number of sectors, this supports very large disks. 514With the prevalent sector size of 512B this is 8 billion TB. 515.Sh SEE ALSO 516.Xr uuid 3 , 517.Xr disklabel64 5 , 518.Xr uuids 5 , 519.Xr boot0cfg 8 , 520.Xr disklabel 8 , 521.Xr disklabel64 8 , 522.Xr fdisk 8 , 523.Xr mount 8 , 524.Xr newfs 8 , 525.Xr newfs_hammer 8 , 526.Xr swapon 8 527.Sh HISTORY 528The 529.Nm 530utility appeared in 531.Fx 5.0 532for ia64. 533It was imported to 534.Dx 1.9 . 535.Sh BUGS 536The development of the 537.Nm 538utility is still work in progress. 539Many necessary features are missing or partially implemented. 540In practice this means that the manual page, supposed to describe these 541features, is farther removed from being complete or useful. 542As such, missing functionality is not even documented as missing. 543However, it is believed that the currently present functionality is reliable 544and stable enough that this tool can be used without bullet-proof footware if 545one thinks one does not make mistakes. 546.Pp 547It is expected that the basic usage model does not change, but it is 548possible that future versions will not be compatible in the strictest sense 549of the word. 550For example, the 551.Fl p Ar count 552option may be changed to a command option rather than a generic option. 553There are only two commands that use it so there is a chance that the natural 554tendency for people is to use it as a command option. 555Also, options primarily intended for diagnostic or debug purposes may be 556removed in future versions. 557.Pp 558Another possibility is that the current usage model is accompanied by 559other interfaces to make the tool usable as a back-end. 560This all depends on demand and thus feedback. 561.Pp 562The 563.Ic migrate 564command doesn't support 565.Dx 566partition types. 567