From: cinap_lenrek Date: Tue, 16 Aug 2011 02:09:15 +0000 (+0200) Subject: 9boot: list known filesystem images on usb stick as boot filesystems X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=828f63711b7fd0c735d083e4b06b8937e846a830;p=plan9front.git 9boot: list known filesystem images on usb stick as boot filesystems --- diff --git a/rc/bin/nusbrc b/rc/bin/nusbrc index 85f9e768d..a9efcf8a6 100644 --- a/rc/bin/nusbrc +++ b/rc/bin/nusbrc @@ -25,6 +25,7 @@ if(! bind -a '#u' /dev) } } fn detach { + # handled /sys/src/9/boot/nusbrc } rc < '#σ/usb/usbevent' & } diff --git a/sys/src/9/boot/local.rc b/sys/src/9/boot/local.rc index 2808a9c0b..e67550691 100755 --- a/sys/src/9/boot/local.rc +++ b/sys/src/9/boot/local.rc @@ -2,24 +2,33 @@ 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 } } } @@ -34,7 +43,7 @@ fn bootfs{ } fn connectlocal{ - if(test -r $1) + if(test -f $1) t=`{fstype $1} if not { t=$1; shift @@ -44,22 +53,10 @@ fn connectlocal{ 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 $* } diff --git a/sys/src/9/boot/nusbrc b/sys/src/9/boot/nusbrc index 938895561..8d4fc46f0 100644 --- a/sys/src/9/boot/nusbrc +++ b/sys/src/9/boot/nusbrc @@ -17,16 +17,13 @@ if(! nusb/usbd) @{ 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 } } } &