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