]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/9/boot/local.rc
Prevent nusb/disk and nusb/kb from blocking nusbrc
[plan9front.git] / sys / src / 9 / boot / local.rc
old mode 100644 (file)
new mode 100755 (executable)
index 1fd91e4..6166ac7
@@ -1,43 +1,71 @@
 #!/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)