Subject: Re: Some help with disklabel please?
To: Bill Studenmund <wrstuden@loki.stanford.edu>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: current-users
Date: 08/10/1995 10:22:04
On Thu, 10 Aug 1995 09:58:31 -0700 (PDT)
wrstuden@loki.stanford.edu (Bill Studenmund) wrote:
[ I trimmed the long Cc: list. --thorpej ]
> My first thought was to build a fake disklabel, use it to read whatever
> needs to be read to get a real disklabel, throw out the fake disklabel as
> it's not needed anymore, and make the real one.
This already happens ... Say, for example, I install a band-new disk on
my hp380 ... pretend it's sd4 ... the process I usually go though is:
# cd /etc/disklabels
# disklabel sd4 > sd4.label (grabs fake in-core copy)
# vi sd4.label
[ . . . edit label . . . ]
# disklabel -r -R sd4 sd4.label
# newfs /dev/rsd4[whatever]
Note that when you update the on-disk copy, the in-core copy is updated
as well.
> Ah, but did you (or the kernel secretly behind your back) use dos
> partitioning software/conventions? You (or someone else) described how
> the i386 port has `c' as the NetBSD part of the disk, and `d' the whole
> disk. To me, this means that your disk _can_ have DOS stuff in it. As I
> understand it, if you take your all-NetBSD disks to a DOS machine,
> the DOS machine will know that the drive is formated, and that it is
> full of non-DOS partitions. Granted it will have no clue as to what to
> do with the non-DOS stuff, but DOS will know not to step on the data.
Well, of course ... I'm not really sure I see your point, though. (I
mean, that's the whole point of `d' is the whole disk, and `c' is
NetBSD's portion...)
> Oops! Take a step back. Is there a difference ON DISK? Looking at just
> the disk, can't we tell the difference between formats between various
> OS's?
Ummm ... sort of ... You can just read what you think is the right place
and look for the right magic numbers, providing the on-disk format that
you're reading provides such a mechanism for validating the label. If
not, then you're just second-guessing.
> If all these patterns are different, then we can look for each one in
> turn. If we find one, we know the partitioning scheme in use on the
> disk. We then look to the port for that machine and ask it to read the
> disklabel, as it already understands this partitioning scheme.
That's what my code did ... it gave preference to the port's `native'
disklabel format, and then jumped though function pointers looking though
the other formats until it didn't fail anymore. If none of them
succeeded, `no disk label' was reported and a fake label generated.
> Though you do bring up one interesting question. What in the system REALLY
> cares where the whole disk gets shoved? Isn't it just convention?
Lots of things use RAW_PART ... see the MI SCSI code for examples ...
--------------------------------------------------------------------------
Jason R. Thorpe thorpej@nas.nasa.gov
NASA Ames Research Center Home: 408.866.1912
NAS: M/S 258-6 Work: 415.604.0935
Moffett Field, CA 94035 Pager: 415.428.6939