sunlabel reads or modifies a SunOS disk label on
device, which is used by the PROM on
NetBSD/sparc hardware to find partitions to boot from.
sunlabel only reads/writes the first 512 bytes of
device.
The supported options are:
-m
Ignore an incorrect magic number in the disk label.
-n
Synthesize a new label rather than reading what is there.
-q
Quiet mode - don't print unnecessary babble (currently this suppresses the “sunlabel>” prompt).
-s
Ignore checksum errors when reading the label.
Note that
-m is dangerous, especially when combined with
-s, since it will then happily believe whatever garbage it may find in the label. When using these flags, all values should be checked carefully, both those printed by
L and the partition table printed by
P.
sunlabel prints a prompt “sunlabel>” and expects commands. The following commands are understood:
?
Show a short help message.
[abcdefghijklmnop] <cylno> <size>
Change partition (see below).
L
Print label, except for the partition table.
P
Print the partition table.
Q
Quit program (error if no write since last change).
Q!
Quit program (unconditionally) [EOF also quits].
S
Set label in the kernel (orthogonal to W).
V <name> <value>
Change a non-partition label value.
W
Write (possibly modified) label out.
The
a through
p commands will accept, for the
<size> parameter, the
nnn/nnn/nnn syntax used by SunOS 4.x
format. (For those not familiar with this syntax,
a/b/c means
a cylinders +
b tracks +
c sectors. For example, if the disk has 16 tracks of 32 sectors,
3/4/5 means (3*16*32)+(4*32)+5=1669. This calculation always uses the
nsect and
ntrack values as printed by the
L command; in particular, if they are zero (which they will initially be if
-n is used), this syntax is not very useful. Some additional strings are accepted. For the
<cylno> parameter, “end-X” (where
X is a partition letter) indicates that the partition should start with the first free cylinder after partition
X; “start-X” indicates that the partition should start at the same place as partition
X. For the
<size> parameter, “end-X” indicates that the partition should end at the same place as partition
X (even if partition
X ends partway through a cylinder); “start-X” indicates that the partition should end with the last cylinder before partition
X; and “size-X” means that the partition's size should exactly match partition
X's size.
Note that
sunlabel supports 16 partitions. SunOS supports only 8. Labels written by
sunlabel, when partitions
i through
p are all set
offset=0 size=0, are identical to Sun labels. If any of the “extended” partitions are nontrivial, information about them is tucked into some otherwise unused space in the Sun label format.
The
V command changes fields printed by the
L command. For example, if the
L command prints
ascii: ST15230N cyl 5657 alt 2 hd 19 sec 78
rpm: 0 pcyl: 0 apc: 0 obs1: 0
obs2: 0 intrlv: 1 ncyl: 5657 acyl: 0
nhead: 19 nsect: 78 obs3: 0 obs4: 0
then
V ncyl 6204 would set the
ncyl value to 6204, or
V ascii Seagate ST15230N cyl 5657 hd 19 sec varying would set the ascii-label string to that string.
sunlabel performs very few consistency checks on the values you supply, and the ones it does perform never generate errors, only warnings.