#!/bin/rc
+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{
- echo local devices found:
- for(c in /dev/sd*/ctl){
- if(test -r $c){
- d=`{echo $c | sed 's,/ctl,,g'}
- echo $d':' `{sed 's/inquiry[ ]+//g; q' $c}
- for(i in `{ls -p $d | grep -v -e 'ctl|raw'}){
- p=$d/$i
- t=`{fstype $p}
- if(~ $#bootargs 0 && ! ~ $t '')
- bootargs=local!$p
- echo $p $t
+ 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{
- if(~ $pcload 1){
- kern=`{echo $* | sed 's,.*!(.*)$,\1,g'}
- if(~ $#kern 0 || ! ~ $#bootfile 0)
- kern=`{echo $bootfile | sed 's,.*!(.*)$,\1,g'}
- }
diskparts
+}
+fn bootfs{
+ {$1 -s -f $*(2-) &} <[0=1] | echo 0 >/srv/boot
}
fn connectlocal{
- t=`{fstype $1}
- if(~ $#t 0)
- fatal unknown fstype $1
+ if(test -f $1)
+ t=`{fstype $1}
+ if not {
+ t=$1; shift
+ }
switch($t){
+ case ''
+ fatal unknown fstype $1
case 9660
- t=9660srv
+ bootfs 9660srv $*
+ case dos
+ bootfs dossrv $*
case kfs
- t=disk/kfs
+ bootfs disk/kfs $*
+ case *
+ bootfs $t $*
}
- {$t -s -f $* &} <[0=1] | echo 0 >/srv/boot
}
mlocal=(configlocal connectlocal)