#!/bin/rc
-fn configlocal{
- disk=`{echo $methodarg | sed 's,(.*)!.*,\1,g'}
- fstype=`{echo $disk | sed 's,.*/(.*)$,\1,g'}
- disk=`{echo $disk | sed 's,(.*)/.*$,\1,'}
+fn showlocaldev {
+ echo $1' ' $2
+ if(~ $#bootargs 0){
+ if(! ~ $#cdboot 0){
+ if(~ $2 9660)
+ bootargs=local!$1
+ }
+ if not {
+ if(! ~ $2 '' dos)
+ bootargs=local!$1
+ }
+ }
+}
+
+fn showlocaldevs{
+ 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 led
+ ;
+ case plan9 nvram swap
+ echo $p
+ case *
+ showlocaldev $p `{fstype $p}
+ }
+ }
+ }
+ 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}
+ ~ $#t 0 || showlocaldev $p $t
+ }
+ }
+}
+fn configlocal{
diskparts
}
+fn bootfs{
+ {$1 -s -f $*(2-) &} <[0=1] | echo 0 >/srv/boot
+}
+
fn connectlocal{
- rm -f /srv/boot
- switch($fstype){
- case kfs fs
- must disk/kfs -n boot -f $disk^/$fstype
- case cwfs fscache fsworm w0 w1 w2 w3
- must cwfs64x -n boot -f $disk^/$fstype
- case data
- must 9660srv -f $disk^/$fstype boot
+ if(test -f $1)
+ t=`{fstype $1}
+ if not {
+ t=$1; shift
+ }
+ switch($t){
+ case ''
+ fatal unknown fstype $1
+ case 9660
+ bootfs 9660srv $*
+ case dos
+ bootfs dossrv $*
+ case kfs
+ bootfs disk/kfs $*
case *
- fatal unknown partition $fstype
+ bootfs $t $*
}
}
+
+mlocal=(configlocal connectlocal)
+mt=(mlocal $mt)