Il Wednesday 12 December 2007 16:29:05 Kyle McDonald ha scritto:
> [EMAIL PROTECTED] wrote:
> >> #!/usr/bin/bash
> >> mkdir $2
> >> lofiadm -a $1 /dev/lofi/1
> >> mount -F hsfs -o ro /dev/lofi/1 $2 && echo -e "\n\t I have
> >> mounted $1 under the folder $2\n\n"
> >
> > You should realize that "lofiadm" actually outputs the device
> > used, so the script can be written so as not to require only
> > /dev/lofi/1
> >
> > I've attached my scripts which I use for mounting/unmounting lofi
> > volumes.
> >
> > It detects pcfs, ufs and hsfs filesystem and mounts them; it
> > remembers the mount and a single "lofiumount" without arguments
> > will unmount all you mounted.
> >
> > I've written these a long time ago, shortly after lofiadm was
> > added, I think.
> >
> > Usage is simple:
> >
> > lofimount file.iso /mnt
> >
> > lofiumount /mnt
> >
> > lofimount file.ufs /mnt
> >
> > etc.
>
> That's cool Casper.
>
> I know it needs polishing, but I've attached a script I wrote and
> placed in /usr/lib/fs/lofi/mount, so that I could put entries like
> this in /etc/vfstab:
>
I have a similar (but worse) problem: in linux I need to mount the
individual slices from an image file, thus I need to find the
offsets of the slices.
Unfortunately linux's fdisk can't recognize Sun's slices, but the
kernel can (from raw partitions of course).
According to a file in the linux kernel sources the structure is this:
struct sun_disklabel {
unsigned char info[128]; /* Informative text string
*/
struct sun_vtoc {
__be32 version; /* Layout version */
char volume[8]; /* Volume name */
__be16 nparts; /* Number of partitions */
struct sun_info { /* Partition hdrs, sec
2 */
__be16 id;
__be16 flags;
} infos[8];
__be16 padding; /* Alignment padding */
__be32 bootinfo[3]; /* Info needed by mboot */
__be32 sanity; /* To verify vtoc sanity */
__be32 reserved[10]; /* Free space */
__be32 timestamp[8]; /* Partition timestamp */
} vtoc;
__be32 write_reinstruct; /* sectors to skip, writes */
__be32 read_reinstruct; /* sectors to skip, reads */
unsigned char spare[148]; /* Padding */
__be16 rspeed; /* Disk rotational speed */
__be16 pcylcount; /* Physical cylinder count */
__be16 sparecyl; /* extra sects per cylinder */
__be16 obs1; /* gap1 */
__be16 obs2; /* gap2 */
__be16 ilfact; /* Interleave factor */
__be16 ncyl; /* Data cylinder count */
__be16 nacyl; /* Alt. cylinder count */
__be16 ntrks; /* Tracks per cylinder */
__be16 nsect; /* Sectors per track */
__be16 obs3; /* bhead - Label head offset */
__be16 obs4; /* ppart - Physical Partition */
struct sun_partition {
__be32 start_cylinder;
__be32 num_sectors;
} partitions[8];
__be16 magic; /* Magic number */
__be16 csum; /* Label xor'd checksum */
} * label;
I guess that the partitions[8] identifies the slices, correct?
(did I dream that they were 16? )
Please, correct me if Iìm wrong.
Thanks,
Nico
_______________________________________________
opensolaris-discuss mailing list
[email protected]