usb storage device auto mount
This commit is contained in:
parent
cb9e638c00
commit
04fa57de3a
3 changed files with 47 additions and 23 deletions
|
@ -1,35 +1,42 @@
|
||||||
#!/bin/rc
|
#!/bin/rc
|
||||||
rfork e
|
rfork e
|
||||||
|
|
||||||
# set up any disk partitions
|
|
||||||
if (! test -e /dev/sdctl)
|
|
||||||
bind -b '#S' /dev
|
|
||||||
|
|
||||||
# set up any /dev/sd partitions.
|
|
||||||
# note that really big disks (e.g., aoe devices) may have no mbr
|
# note that really big disks (e.g., aoe devices) may have no mbr
|
||||||
# partition table because the mbr partition table can't cope with large
|
# partition table because the mbr partition table can't cope with large
|
||||||
# block numbers, so we may have to examine the data file with prep if
|
# block numbers, so we may have to examine the data file with prep if
|
||||||
# there's no plan9 file. beware that `disk/prep -p data' on a disk with
|
# there's no plan9 file. beware that `disk/prep -p data' on a disk with
|
||||||
# no plan 9 partition table will delete all extant partitions.
|
# no plan 9 partition table will delete all extant partitions.
|
||||||
for(disk in /dev/sd*) {
|
fn setup {
|
||||||
if(test -f $disk/data && test -f $disk/ctl)
|
if(test -f $1/data && test -f $1/ctl)
|
||||||
{ disk/fdisk -p $disk/data |
|
{ disk/fdisk -p $1/data |
|
||||||
grep -v '^delpart ' >$disk/ctl } >[2]/dev/null
|
grep -v '^delpart ' >$1/ctl } >[2]/dev/null
|
||||||
if(test -f $disk/plan9)
|
if(test -f $1/plan9)
|
||||||
parts=($disk/plan9*)
|
parts=($1/plan9*)
|
||||||
if not
|
if not
|
||||||
parts=($disk/data)
|
parts=($1/data)
|
||||||
for(part in $parts)
|
for(part in $parts)
|
||||||
if(test -f $part)
|
if(test -f $part)
|
||||||
{ disk/prep -p $part |
|
{ disk/prep -p $part |
|
||||||
grep -v '^delpart ' >$disk/ctl } >[2]/dev/null
|
grep -v '^delpart ' >$1/ctl } >[2]/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(~ $#* 0){
|
||||||
|
# set up any disk partitions
|
||||||
|
if (! test -e /dev/sdctl)
|
||||||
|
bind -b '#S' /dev
|
||||||
|
for(disk in /dev/sd*) {
|
||||||
|
setup $disk
|
||||||
|
}
|
||||||
sysname=`{cat /dev/sysname}
|
sysname=`{cat /dev/sysname}
|
||||||
|
|
||||||
# set up any fs(3) partitions
|
# set up any fs(3) partitions
|
||||||
if (! test -e /dev/fs/ctl && test -e '#k/fs')
|
if (! test -e /dev/fs/ctl && test -e '#k/fs')
|
||||||
bind -b '#k' /dev
|
bind -b '#k' /dev
|
||||||
if (~ $#sysname 1 && ! ~ $sysname '' &&
|
if (~ $#sysname 1 && ! ~ $sysname '' &&
|
||||||
test -r /cfg/$sysname/fsconfig && test -w /dev/fs/ctl)
|
test -r /cfg/$sysname/fsconfig && test -w /dev/fs/ctl)
|
||||||
awk '{print $0; fflush}' /cfg/$sysname/fsconfig >/dev/fs/ctl
|
awk '{print $0; fflush}' /cfg/$sysname/fsconfig >/dev/fs/ctl
|
||||||
|
}
|
||||||
|
if not {
|
||||||
|
for(disk) {
|
||||||
|
setup $disk
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -20,10 +20,11 @@ if(! bind -a '#u' /dev)
|
||||||
case *08
|
case *08
|
||||||
# handled /sys/src/9/boot/nusbrc
|
# handled /sys/src/9/boot/nusbrc
|
||||||
# nusb/disk $1
|
# nusb/disk $1
|
||||||
|
case *10106
|
||||||
|
nusb/ptp $1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn detach {
|
fn detach {
|
||||||
# handled /sys/src/9/boot/nusbrc
|
|
||||||
}
|
}
|
||||||
rc < '#σ/usb/usbevent' &
|
rc < '#σ/usb/usbevent' &
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,10 +14,26 @@ if(! nusb/usbd)
|
||||||
nusb/kb $1
|
nusb/kb $1
|
||||||
case *08
|
case *08
|
||||||
nusb/disk $1
|
nusb/disk $1
|
||||||
|
@{
|
||||||
|
rfork ne
|
||||||
|
cd '#σ/usb'
|
||||||
|
for(dev in sdU^$1.*){
|
||||||
|
echo $dev...
|
||||||
|
diskparts $dev
|
||||||
|
for(part in $dev/dos* $dev/9fat){
|
||||||
|
if(test -r $part) {
|
||||||
|
mkdir -m 0700 '#σc/'^$dev
|
||||||
|
{dossrv -s -f $part &} <[0=1] |
|
||||||
|
echo 0 >'#σc/'^$dev/dos
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} &
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn detach {
|
fn detach {
|
||||||
rm -f '#σc/usb/'^$1.*
|
rm -rf '#σc/usb/'^$1.* '#σc/sdU'^$1.*
|
||||||
}
|
}
|
||||||
rc < '#σ/usb/usbevent' &
|
rc < '#σ/usb/usbevent' &
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue