Home | History | Annotate | Line # | Download | only in sunlabel
      1 sunlabel.c is the source.  It should build Just Fine on any NetBSD
      2 machine; with -DDISTRIB, probably on many non-NetBSD machines - though
      3 it may require a little tweaking on some.  It should work on both
      4 big-endian and little-endian machines; though I have not personally
      5 tried it on anything but SPARC and sun3, I have heard one report that
      6 it worked on NetBSD/i386, which is little-endian.
      7 
      8 Usage: pass a single argument, which is the disk device or file you
      9 wish to read/write the label to/from.  sunlabel reads/writes only the
     10 first 512 bytes of its argument.  There are also some flags supported:
     11 
     12 	-d
     13 		takes an argument specifying the disk device (in case
     14 		you want to give something beginning with a -)
     15 	-m
     16 		says to ignore an incorrect magic number in the disk
     17 		label
     18 	-s
     19 		says to ignore checksum errors when reading the label
     20 	-n
     21 		says to synthesize a new label rather than reading
     22 		what's there
     23 	-q
     24 		quiet mode - don't print unnecessary babble (currently
     25 		this suppresses the "sunlabel>" prompt).
     26 
     27 Note that -fixmagic is dangerous, especially when combined with
     28 -fixsum, since it will then happily believe whatever garbage it may
     29 find in the label.  If you use these, you should check all values
     30 carefully, both the values printed by L and the partition table printed
     31 by P.
     32 
     33 sunlabel prints a prompt "sunlabel>" and expects commands.  You can
     34 type ? for help; as of this writing, the help is
     35 
     36 	? - print this help
     37 	L - print label, except for partition table
     38 	P - print partition table
     39 	[abcdefghijklmnop] <cylno> <size> - change partition
     40 	V <name> <value> - change a non-partition label value
     41 	W - write (possibly modified) label out
     42 	S - set label in the kernel (orthogonal to W)
     43 	Q - quit program (error if no write since last change)
     44 	Q! - quit program (unconditionally) [EOF also quits]
     45 
     46 (If built without special precautions, the S line is present only when
     47 built on NetBSD.)
     48 
     49 The a through p commands will accept, for the <size> parameter, the
     50 nnn/nnn/nnn syntax used by SunOS 4.x format(8).  (For those not
     51 familiar with this syntax, a/b/c means a cylinders + b tracks + c
     52 sectors.  For example, if the disk has 16 tracks of 32 sectors, 3/4/5
     53 means (3*16*32)+(4*32)+5=1669.  This calculation always uses the nsect
     54 and ntrack values as printed by the L command; in particular, if they
     55 are zero (which they will initially be if -new is used), this syntax is
     56 not very useful.  Some additional strings are accepted.  For the
     57 <cylno> parameter, "end-X" (where X is a partition letter) indicates
     58 that the partition should start with the first free cylinder after
     59 partition X; "start-X" indicates that the partition should start at the
     60 same place as partition X.  For the <size> parameter, "end-X" indicates
     61 that the partition should end at the same place as partition X (even if
     62 partition X ends partway through a cylinder); "start-X" indicates that
     63 the partition should end with the last cylinder before partition X; and
     64 "size-X" means that the partition's size should exactly match partition
     65 X's size.
     66 
     67 Note that sunlabel supports 16 partitions.  SunOS supports only 8.
     68 Labels written by sunlabel, when partitions i through p are all set
     69 offset=0 size=0, are identical to Sun labels.  If any of the "extended"
     70 partitions are nontrivial, information about them is tucked into some
     71 otherwise unused (as far as I can tell) space in the Sun label format.
     72 I don't know whether SunOS cares what's in that space; as far as I know
     73 only NetBSD actually uses the extended information, and even that only
     74 with my patches to do so.
     75 
     76 The V command changes fields printed by the L command.  For example, if
     77 the L command prints
     78 
     79 	ascii: ST15230N cyl 5657 alt 2 hd 19 sec 78
     80 	rpm: 0          pcyl: 0         apc: 0          obs1: 0
     81 	obs2: 0         intrlv: 1       ncyl: 5657      acyl: 0
     82 	nhead: 19       nsect: 78       obs3: 0         obs4: 0
     83 
     84 then you could type "V ncyl 6204" to set the ncyl value to 6204, or
     85 "V ascii Seagate ST15230N cyl 5657 hd 19 sec varying" to set the
     86 ascii-label string to that string.  sunlabel performs very few
     87 consistency checks on the values you supply, and the ones it does
     88 perform never generate errors, only warnings; it's a YAFIYGI program.
     89 
     90 I will be glad to correspond with anyone about this program.  I'm...
     91 
     92 					der Mouse
     93 
     94 			       mouse (a] rodents.montreal.qc.ca
     95 		     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B
     96