ref: 1ae706763737ac70469cfb167a37ae8f9a7a0d5c
parent: 17c490aca3aced92949ecbcece4e993202421eb2
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Tue Aug 16 00:09:15 EDT 2011
9boot: list known filesystem images on usb stick as boot filesystems
--- a/rc/bin/nusbrc
+++ b/rc/bin/nusbrc
@@ -25,6 +25,7 @@
}
}
fn detach {+ # handled /sys/src/9/boot/nusbrc
}
rc < '#σ/usb/usbevent' &
}
--- a/sys/src/9/boot/local.rc
+++ b/sys/src/9/boot/local.rc
@@ -2,27 +2,36 @@
fn showlocaldevs{echo local devices found:
- for(d in /dev/sd*){- if(test -r $d/ctl){- q=`{sed 's,(inquiry|geometry),\+ for(d in /dev/sd*) if(test -r $d/ctl){+ q=`{sed 's,(inquiry|geometry),\\1,g' $d/ctl | grep inquiry}
- echo $d':' $q(2-)
- for(i in `{ls -p $d}){- p=$d/$i
- switch($i){- case ctl raw log
- ;
- case 9fat plan9 nvram
- echo $p
- case *
- t=`{fstype $p}- if(~ $#bootargs 0 && ! ~ $t '')
- bootargs=local!$p
- echo $p $t
- }
+ echo $d':' $q(2-)
+ for(i in `{ls -p $d}){+ p=$d/$i
+ switch($i){+ case ctl raw log
+ ;
+ case 9fat plan9 nvram
+ echo $p
+ case *
+ t=`{fstype $p}+ if(~ $#bootargs 0 && ! ~ $t '')
+ bootargs=local!$p
+ echo $p $t
}
}
}
+ for(d in /shr/sd*) if(test -d $d) {+ echo $d':'
+ for(p in $d/*.^(iso kfs paq)) if(test -f $p){+ t=`{fstype $p}+ if(! ~ $t ''){+ if(~ $#bootargs 0)
+ bootargs=local!$p
+ echo $p $t
+ }
+ }
+ }
}
fn configlocal{@@ -34,7 +43,7 @@
}
fn connectlocal{- if(test -r $1)
+ if(test -f $1)
t=`{fstype $1} if not {t=$1; shift
@@ -44,22 +53,10 @@
fatal unknown fstype $1
case 9660
bootfs 9660srv $*
+ case dos
+ bootfs dossrv $*
case kfs
bootfs disk/kfs $*
- case dos
- if(! test -f /srv/dos)
- dossrv
- m=/mnt/dosboot
- must mount /srv/dos $m $1
- shift
- if(~ $#* 0)
- f=$m/9front.iso
- if not
- f=$m/$1
- if(test -r $f)
- connectlocal $f
- if not
- connectlocal $*
case *
bootfs $t $*
}
--- a/sys/src/9/boot/nusbrc
+++ b/sys/src/9/boot/nusbrc
@@ -17,16 +17,13 @@
@{rfork ne
cd '#σ/usb'
- for(dev in sdU^$1.*){- echo $dev...
+ for(dev in sdU^$1.*) if(test -d $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
- }
+ for(part in $dev/dos* $dev/9fat) if(test -r $part) {+ mkdir -m 0700 '#σc/'^$dev || exit
+ {dossrv -s -f $part &} <[0=1] |+ echo 0 >'#σc/'^$dev/dos
+ exit
}
}
} &
--
⑨