1sunlabel.c is the source. It should build Just Fine on any NetBSD 2machine; with -DDISTRIB, probably on many non-NetBSD machines - though 3it may require a little tweaking on some. It should work on both 4big-endian and little-endian machines; though I have not personally 5tried it on anything but SPARC and sun3, I have heard one report that 6it worked on NetBSD/i386, which is little-endian. 7 8Usage: pass a single argument, which is the disk device or file you 9wish to read/write the label to/from. sunlabel reads/writes only the 10first 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 27Note that -fixmagic is dangerous, especially when combined with 28-fixsum, since it will then happily believe whatever garbage it may 29find in the label. If you use these, you should check all values 30carefully, both the values printed by L and the partition table printed 31by P. 32 33sunlabel prints a prompt "sunlabel>" and expects commands. You can 34type ? 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 47built on NetBSD.) 48 49The a through p commands will accept, for the <size> parameter, the 50nnn/nnn/nnn syntax used by SunOS 4.x format(8). (For those not 51familiar with this syntax, a/b/c means a cylinders + b tracks + c 52sectors. For example, if the disk has 16 tracks of 32 sectors, 3/4/5 53means (3*16*32)+(4*32)+5=1669. This calculation always uses the nsect 54and ntrack values as printed by the L command; in particular, if they 55are zero (which they will initially be if -new is used), this syntax is 56not very useful. Some additional strings are accepted. For the 57<cylno> parameter, "end-X" (where X is a partition letter) indicates 58that the partition should start with the first free cylinder after 59partition X; "start-X" indicates that the partition should start at the 60same place as partition X. For the <size> parameter, "end-X" indicates 61that the partition should end at the same place as partition X (even if 62partition X ends partway through a cylinder); "start-X" indicates that 63the partition should end with the last cylinder before partition X; and 64"size-X" means that the partition's size should exactly match partition 65X's size. 66 67Note that sunlabel supports 16 partitions. SunOS supports only 8. 68Labels written by sunlabel, when partitions i through p are all set 69offset=0 size=0, are identical to Sun labels. If any of the "extended" 70partitions are nontrivial, information about them is tucked into some 71otherwise unused (as far as I can tell) space in the Sun label format. 72I don't know whether SunOS cares what's in that space; as far as I know 73only NetBSD actually uses the extended information, and even that only 74with my patches to do so. 75 76The V command changes fields printed by the L command. For example, if 77the 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 84then 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 86ascii-label string to that string. sunlabel performs very few 87consistency checks on the values you supply, and the ones it does 88perform never generate errors, only warnings; it's a YAFIYGI program. 89 90I will be glad to correspond with anyone about this program. I'm... 91 92 der Mouse 93 94 mouse@rodents.montreal.qc.ca 95 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B 96