SUNLABEL(8) BSD System Manager's Manual SUNLABEL(8)
sunlabel -- read and write disk pack label suitable for Sun's OpenBoot
sunlabel [-r] [-c | -h] disk
sunlabel -B [-b boot1] [-n] disk
sunlabel -R [-B [-b boot1]] [-r] [-n] [-c] disk protofile
sunlabel -e [-B [-b boot1]] [-r] [-n] [-c] disk
sunlabel -w [-B [-b boot1]] [-r] [-n] [-c] disk type
The sunlabel utility installs, examines or modifies the Sun OpenBoot PROM
label on a disk. In addition, sunlabel can install bootstrap code.
The label occupies the first sector (i.e., 512 bytes) of each disk. It
starts with a textual description which by convention also mentions the
disk geometry in textual form (number of cylinders, alternate cylinders,
heads, and sectors per track), optionally followed by a table of
SVR4-compatible VTOC tags and flags per partition, followed by the parti-
tion table itself. Finally, a checksum is recorded to ensure the label
has not been tampered with.
The Sun OpenBoot PROM label allows for 8 disk partitions. The partition
table lists the starting cylinder of the partition, plus the size of the
partition in 512-byte sectors. Thus, partitions in the Sun OpenBoot PROM
must always start at a cylinder boundary (for whatever geometry emulation
has been chosen).
The optional SVR4-compatible VTOC tag and flags table is not used by the
FreeBSD kernel. It is maintained solely for compatibilty with the
Solaris operating system that might share disks with FreeBSD on the same
The Sun OpenBoot PROM label is natively understood by the underlying
hardware, which can bootstrap from a single partition entry, as opposed
to the very first block(s) of the entire disk as on many other hardware
Note that the hardware platform mandates that two cylinders are set aside
as alternate cylinders which are not available to user programs (and not
even through the ``backup'' partition).
Options are listed in alphabetical order here. Note that only those
option combinations listed under SYNOPSIS are allowable.
-b bootpath Specify that bootpath is to be used as the boot image,
rather than the default of /boot/boot1.
-B Install bootstrap code onto the disk. Note that since the
underlying hardware platform bootstraps from partitions, not
disks, this operation is only useful if there is a partition
starting at offset 0.
-c Use cylinders for partition size display rather than
(512-byte) sectors. This also changes the default interpre-
tation of the partition size entries when editing the label,
or reading from a prototype file. Thus, prototype files are
only compatible when both, obtaining the file and re-
installing it is done using the same -c option setting.
-e Enter edit mode. See Edit mode below for a more detailed
-h When displaying the label, make the partition size and off-
set values ``human readable''. The displayed numbers will
get a suffix of 'B' for bytes, 'K' for 1024 bytes each, 'M'
for 1048576 bytes each, or 'G' for 1073741824 bytes each
appended. Note that due to possible rounding errors, proto-
type files obtained using the -h option are not suited for
re-installing using the -R option.
-n No changes. All operations, checks etc., are performed nor-
mally, but nothing is written to disk.
-r Obsolete option that used to indicate that the operation
should be done directly on disk, as opposed through the
respective kernel services. Ignored.
-R Restore label from the prototype in protofile. A prototype
file is simply the textual representation of the label as
printed using the first form of the sunlabel utility shown
in the SYNOPSIS. Note that the -c option used to obtain the
prototype must match the option used when restoring the
label (both present, or both absent).
-w Write mode. Suitable to write an initial label to disk.
The type argument used to be an entry into a table of prede-
fined labels, but this functionality is not supported by
sunlabel. Instead, the only allowable type argument is the
string ``auto'', indicating that an automatically created
label should be written to disk. This automatism will try
to create an initial label that fits as best as possible
into the available disk capacity.
If neither of the -e, -R, or -w options are present, the existing label
for disk will be printed to standard output.
The disk argument must be given as a plain disk name, without any leading
In edit mode, the existing label from disk will be read, and put into a
template file. The command referenced by the EDITOR environmental vari-
able will be started to allow the user to edit the label. The label is
then checked and examined for any errors. If no errors have been found,
the new label is written to disk. If there were any errors, a message is
printed to standard error output, and the user is given the opportunity
to edit the template file again. If accepted, editing starts over. If
declined, no changes will be written to disk.
The label presented for editing is the same as the standard printout,
with some added hints about the possible options to specify the sector
size and starting cylinder. There are two areas in the template that can
Textual label, geometry emulation
text: XXXX cyl CC alt 2 hd HH sec SS
represents the label text. It must be retained exactly in the
form shown. The editable text XXXX is a simple (non-whitespace)
text describing the disk. By convention, this text mentions the
approximate size of the disk, as in ``SUN9.0G'' for a 9 GB disk
shipped by Sun.
The values CC, HH, and SS describe the number of cylinders, heads
(tracks per cylinder), and sectors per track respectively. They
might be modified to change the geometry emulation. Each number
must be between 1 and 65535. The product
(CC + 2) * HH * SS
must be less than or equal to the total number of sectors of the
disk (which is given as a hint in a comment field).
Partition entries start with a letter from 'a' through 'h', imme-
diately followed by a colon, followed by the size of this parti-
tion, and the starting cylinder of the partition. The unit of
the size field defaults to sectors, or to cylinders if the -c
option is in effect. Alternatively, a different unit may be
specified by appending 's' for (512-byte) sectors, 'c' for cylin-
ders, 'k' for kilobytes, 'm' for megabytes, or 'g' for gigabytes.
The last partition entry may specify the size as '*' to indicate
that this entry should consume the rest of disk not consumed by
any other partition so far.
The start of partition is always taken as a cylinder number
(starting at 0) since this is what the underlying hardware uses.
Alternatively, specifying it as '*' will make the computation
automatically chose the nearest possible cylinder boundary.
Partition 'c' must always be present, must start at 0, and must
cover the entire disk (without considering the alternate cylin-
Optionally, each partition entry may be followed by an SVR4-com-
patible VTOC tag name, and a flag description. The following
VTOC tag names are known:
name value comment
backup 0x05 c partition, entire disk
altsctr 0x09 alternate sector partition
cache 0x0a Solaris cachefs partition
VxVM_pub 0x0e VxVM public region
VxVM_priv 0x0f VxVM private region
The following VTOC flags are known:
name value comment
wm 0x00 read/write, mountable
wu 0x01 read/write, unmountable
rm 0x10 read/only, mountable
ru 0x11 read/only, unmountable
Optionally, both the tag and/or the flag name may be specified
numerically, using standard 'C' numerial notation (prefix '0x'
for hexadecimal numbers, '0' for octal numbers). If the flag
field is omitted, it defaults to 'wm'. If the tag field is also
omitted, it defaults to ``unassigned''. If none of the parti-
tions lists any VTOC tag/flags, no SVR4-compatible VTOC elements
will be written to disk. If VTOC-style elements are present,
partition 'c' must be marked as ``backup'' (and should be marked
When checking the label, partition 'c' is checked for presence, and for
the mentioned restrictions. All other partitions are checked for possi-
ble overlaps, as well as for not extending past the end of unit. If
VTOC-style elements are present, overlaps of unmountable partitions
against other partitions will be warned still but do not cause a rejec-
tion of the label. That way, encapsulated disks of volume management
software are acceptable as long as the volume management partitions are
clearly marked as unmountable.
Any other fields in the label template are informational only, and will
not be parsed when reading the label.
Note that when changing the geometry emulation by editing the textual
description line, all partition entries will be considered based on the
new geometry emulation.
EDITOR Name of the command to edit the template file in edit-mode.
Defaults to vi(1).
/boot/boot1 Default boot image.
vi(1), geom(4), bsdlabel(8)
The sunlabel utility appeared in FreeBSD 5.1.
The sunlabel utility was written by Jake Burkholder, modeling it after
the bsdlabel(8) command available on other architectures.
This man page was initially written by David O'Brien, and later substan-
tially updated by Jrg Wunsch.
Installing bootstrap code onto an entire disk is merely pointless.
sunlabel should rather support installing bootstrap code into a partition
The ``auto'' layout algorithm could be smarter. By now, it tends to emu-
late fairly large cylinders which due to the two reserved alternate
cylinders causes a fair amount of wasted disk space.
BSD June 1, 2004 BSD