Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Jan 2005 08:41:14 -0500
From:      Christopher Sean Hilton <chris@vindaloo.com>
To:        Robert Blacquiere <freebsd@guldan.demon.nl>
Cc:        freebsd-mobile@freebsd.org
Subject:   Re: static umass numbering
Message-ID:  <1106746874.66282.40.camel@dagobah.vindaloo.com>
In-Reply-To: <20050118103612.GA61467@bombur.guldan.demon.nl>
References:  <20050118103612.GA61467@bombur.guldan.demon.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 2005-01-18 at 11:36 +0100, Robert Blacquiere wrote:
> Hi folks,
> 
> I have got a couple of usb mass storage devices which work nicely with FreeBSD.
> But they are numbered chronological on insertion. I would like some sort of
> static numbering scheme for easing up for example automounting. 
> Now i use a hand script which take de base da[0-9]+ numbering as var but hate 
> this way of working. 

I'm not sure what you are trying to do but I handled this in 5.3 by
ensuring that the slice and partition layout on all such devices was
uniform. Then I installed a uniformly named script on each drive. The
script can be tailored to provide whatever function the drive supports. 

I use the following layout:

    Slice 1: MSDOS
    Slice 2: FreeBSD
      Partition e: General purpose for automounting
      Partitions a,d,f-h: special purpose

In /etc/amd.map and /etc/fstab I have entries to mount the MSDOS and
FreeBSD partitions from each possible drive:

     /dev/da0s1  --> /amd/msdos0
     /dev/da0s2e --> /amd/da0

     /dev/da1s1  --> /amd/msdos1
     /dev/da1s1e --> /amd/da1

Finally I arrange for devd to run a script from the drive when a new
da[0-9]+ device is attached to the kernel. The devd knows which drive
was attached (da[0-9]+) and can pass that into the script:

     #! /bin/sh

     ...

     device=$1; shift

     ## Use this test to automount the device.

     if test -d /amd/${device}/.; then

         ## Now see if this device has an autorun.sh script for use
         ## on attach.

         if test -f /amd/${device}/autorun.sh; then
             (cd /amd/${device} && sh autorun.sh ${device})
         fi
     fi


Up to here it's basic shell scripting. The problem with all this is that
it all happens as root which I didn't want. So I wrote a daemon and
client which allows the root owned devd process to trigger a user owned
process when a message got passed on a unix domain socket.

-- chris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1106746874.66282.40.camel>