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