19a747e4fSDavid du Colombier#!/bin/rc 29a747e4fSDavid du Colombier 39a747e4fSDavid du Colombier# prereq: mountfs configdist 49a747e4fSDavid du Colombier# desc: locate and mount the distribution 59a747e4fSDavid du Colombier 69a747e4fSDavid du Colombierfn domount{ 79a747e4fSDavid du Colombier if(! test -e $mountmedia(2)) 89a747e4fSDavid du Colombier logprog $srvmedia 99a747e4fSDavid du Colombier unmount /n/distmedia >[2]/dev/null 109a747e4fSDavid du Colombier logprog $mountmedia 119a747e4fSDavid du Colombier} 129a747e4fSDavid du Colombier 139a747e4fSDavid du Colombierfn exitifdone{ 149a747e4fSDavid du Colombier if(test -f /n/dist/dist/replica/plan9.db) 159a747e4fSDavid du Colombier exit 169a747e4fSDavid du Colombier} 179a747e4fSDavid du Colombier 189a747e4fSDavid du Colombierfn trycdimage{ 199a747e4fSDavid du Colombier if(test -f $1){ 209a747e4fSDavid du Colombier rm -f /srv/9660.dist 219a747e4fSDavid du Colombier unmount /n/dist 229a747e4fSDavid du Colombier 9660srv 9660.dist >[2]/dev/null 239a747e4fSDavid du Colombier logprog mount /srv/9660.dist /n/dist $1 249a747e4fSDavid du Colombier exitifdone 259a747e4fSDavid du Colombier mountdist=notdone 269a747e4fSDavid du Colombier export mountdist 279a747e4fSDavid du Colombier exit notdone 289a747e4fSDavid du Colombier } 299a747e4fSDavid du Colombier} 309a747e4fSDavid du Colombier 319a747e4fSDavid du Colombierfn trycdimagebz2 { 329a747e4fSDavid du Colombier if(test -f $1){ 33a22b0629SDavid du Colombier echo -n 'bunzip2 < '^$1^' >/n/newfs/dist/plan9.iso' 34a22b0629SDavid du Colombier bunzip2 < $1 >/n/newfs/dist/_plan9.iso && 35a22b0629SDavid du Colombier mv /n/newfs/dist/_plan9.iso /n/newfs/dist/plan9.iso 369a747e4fSDavid du Colombier echo 37a22b0629SDavid du Colombier trycdimage /n/newfs/dist/plan9.iso 389a747e4fSDavid du Colombier mountdist=notdone 399a747e4fSDavid du Colombier export mountdist 409a747e4fSDavid du Colombier exit notdone 419a747e4fSDavid du Colombier } 429a747e4fSDavid du Colombier} 439a747e4fSDavid du Colombier 449a747e4fSDavid du Colombierfn havedist { 459a747e4fSDavid du Colombier test -f $1/dist/replica/plan9.db || 469a747e4fSDavid du Colombier test -f $1/plan9.iso || 479a747e4fSDavid du Colombier test -f $1/plan9.iso.bz2 489a747e4fSDavid du Colombier} 499a747e4fSDavid du Colombier 509a747e4fSDavid du Colombierswitch($1){ 519a747e4fSDavid du Colombiercase checkready 529a747e4fSDavid du Colombier if(! ~ $distisfrom local && ! ~ $download done){ 539a747e4fSDavid du Colombier mountdist=notdone 549a747e4fSDavid du Colombier export mountdist 559a747e4fSDavid du Colombier } 569a747e4fSDavid du Colombier if(! ~ $#mountmedia 0 1){ 579a747e4fSDavid du Colombier if(domount){ 589a747e4fSDavid du Colombier mountdist=done 599a747e4fSDavid du Colombier export mountdist 609a747e4fSDavid du Colombier if(mountdist checkdone) 619a747e4fSDavid du Colombier exit 629a747e4fSDavid du Colombier } 639a747e4fSDavid du Colombier srvmedia=() 649a747e4fSDavid du Colombier mountmedia=() 659a747e4fSDavid du Colombier mountdist=ready 669a747e4fSDavid du Colombier export srvmedia mountmedia mountdist 679a747e4fSDavid du Colombier } 689a747e4fSDavid du Colombier 699a747e4fSDavid du Colombiercase go 709a747e4fSDavid du Colombier fat=() 71a22b0629SDavid du Colombier ext2=() 729a747e4fSDavid du Colombier x9660=() 73a22b0629SDavid du Colombier fossil=() 749a747e4fSDavid du Colombier 759a747e4fSDavid du Colombier echo Please wait... Scanning storage devices... 769a747e4fSDavid du Colombier 779a747e4fSDavid du Colombier parts=`{ls /dev/sd??/* >[2]/dev/null | grep -v '/(plan9.*|ctl|log|raw)$'} 789a747e4fSDavid du Colombier for (i in $parts) { 799a747e4fSDavid du Colombier echo -n ' '^$i 809a747e4fSDavid du Colombier n=`{echo $i | sed 's;/;_;g'} 819a747e4fSDavid du Colombier if(! test -f /tmp/localpart.$n) 829a747e4fSDavid du Colombier dd -if $i -bs 2048 -count 32 -of /tmp/localpart.$n >[2]/dev/null 839a747e4fSDavid du Colombier if(isfat /tmp/localpart.$n) 849a747e4fSDavid du Colombier fat=($fat $i) 85*1269a55eSDavid du Colombier if(isext2 /tmp/localpart.$n) 86*1269a55eSDavid du Colombier ext2=($ext2 $i) 879a747e4fSDavid du Colombier if(is9660 /tmp/localpart.$n) 889a747e4fSDavid du Colombier x9660=($x9660 $i) 89*1269a55eSDavid du Colombier if(isfossil $i) 90a22b0629SDavid du Colombier fossil=($fossil $i) 919a747e4fSDavid du Colombier echo 929a747e4fSDavid du Colombier } 939a747e4fSDavid du Colombier echo 949a747e4fSDavid du Colombier echo The following storage media were detected. 959a747e4fSDavid du Colombier echo Choose the one containing the distribution. 969a747e4fSDavid du Colombier echo 979a747e4fSDavid du Colombier for(i in $parts){ 989a747e4fSDavid du Colombier switch($i){ 999a747e4fSDavid du Colombier case $fat 1009a747e4fSDavid du Colombier echo ' '^$i^' (microsoft fat)' 101a22b0629SDavid du Colombier case $ext2 102a22b0629SDavid du Colombier echo ' '^$i^' (linux ext2)' 1039a747e4fSDavid du Colombier case $x9660 1049a747e4fSDavid du Colombier echo ' '^$i^' (iso9660 cdrom)' 105a22b0629SDavid du Colombier case $fossil 106a22b0629SDavid du Colombier echo ' '^$i^' (plan9 fossil)' 1079a747e4fSDavid du Colombier } 1089a747e4fSDavid du Colombier } 1099a747e4fSDavid du Colombier echo 1109a747e4fSDavid du Colombier 1119a747e4fSDavid du Colombier mountstatus=x 1129a747e4fSDavid du Colombier while(! ~ $mountstatus ''){ 113a22b0629SDavid du Colombier prompt -w '' 'Distribution disk' $fat $x9660 $fossil 1149a747e4fSDavid du Colombier disk=$rd 1159a747e4fSDavid du Colombier 1169a747e4fSDavid du Colombier srvmedia=() 1179a747e4fSDavid du Colombier mountmedia=() 1189a747e4fSDavid du Colombier switch($disk){ 1199a747e4fSDavid du Colombier case $fs 120a22b0629SDavid du Colombier mountmedia=(bind /n/newfs /n/distmedia) 1219a747e4fSDavid du Colombier case $fat 1229a747e4fSDavid du Colombier srvmedia=(dossrv) 1239a747e4fSDavid du Colombier mountmedia=(mount /srv/dos /n/distmedia $disk) 124a22b0629SDavid du Colombier case $ext2 125a22b0629SDavid du Colombier srvmedia=(ext2srv -r) 126a22b0629SDavid du Colombier mountmedia=(mount /srv/ext2 /n/distmedia $disk) 1279a747e4fSDavid du Colombier case $x9660 1289a747e4fSDavid du Colombier srvmedia=(9660srv) 1299a747e4fSDavid du Colombier mountmedia=(mount /srv/9660 /n/distmedia $disk) 130a22b0629SDavid du Colombier case $fossil 131a22b0629SDavid du Colombier echo 'srv fossil.mountdist' > /tmp/fossi.conf 132a22b0629SDavid du Colombier echo 'fsys main config '^$disk >> /tmp/fossil.conf 133a22b0629SDavid du Colombier echo 'fsys main open -AWVP' >> /tmp/fossil.conf 134a22b0629SDavid du Colombier echo 'fsys main' >> /tmp/fossil.conf 135a22b0629SDavid du Colombier srvmedia=(fossil/fossil -c '. /tmp/fossil.conf') 136a22b0629SDavid du Colombier mountmedia=(mount /srv/fossil.mountdist /n/distmedia) 1379a747e4fSDavid du Colombier case * 1389a747e4fSDavid du Colombier echo Unknown disk type '(cannot happen)' 1399a747e4fSDavid du Colombier exit oops 1409a747e4fSDavid du Colombier } 1419a747e4fSDavid du Colombier export srvmedia mountmedia 1429a747e4fSDavid du Colombier domount 1439a747e4fSDavid du Colombier mountstatus=$status 1449a747e4fSDavid du Colombier } 1459a747e4fSDavid du Colombier 1469a747e4fSDavid du Colombier first=yes 1479a747e4fSDavid du Colombier dir=/ 1489a747e4fSDavid du Colombier while(~ $first yes || ! havedist /n/distmedia/$dir){ 1499a747e4fSDavid du Colombier if(~ $first yes){ 1509a747e4fSDavid du Colombier echo 1519a747e4fSDavid du Colombier echo Which directory contains the distribution? 1529a747e4fSDavid du Colombier echo 'Any of the following will suffice (in order of preference):' 1539a747e4fSDavid du Colombier echo ' - the root directory of the cd image' 1549a747e4fSDavid du Colombier echo ' - the directory containing plan9.iso' 1559a747e4fSDavid du Colombier echo ' - the directory containing plan9.iso.bz2' 1569a747e4fSDavid du Colombier echo 'Typing `browse'' will put you in a shell that you can use to' 1579a747e4fSDavid du Colombier echo 'look for the directory.' 1589a747e4fSDavid du Colombier echo 1599a747e4fSDavid du Colombier first=no 1609a747e4fSDavid du Colombier } 1619a747e4fSDavid du Colombier 1629a747e4fSDavid du Colombier prompt -d browse 'Location of archives' 1639a747e4fSDavid du Colombier dir=$rd 1649a747e4fSDavid du Colombier if(~ $dir browse){ 1659a747e4fSDavid du Colombier echo This is a simple shell. Commands are: 1669a747e4fSDavid du Colombier echo ' cd directory - change to directory' 1679a747e4fSDavid du Colombier echo ' lc - list contents of current directory' 1689a747e4fSDavid du Colombier echo ' exit - exit shell' 1699a747e4fSDavid du Colombier echo 1709a747e4fSDavid du Colombier echo 'Move to the directory containing the distribution' 1716b6b9ac8SDavid du Colombier echo 'and then exit.' 1729a747e4fSDavid du Colombier echo 1739a747e4fSDavid du Colombier oifs=$ifs 1749a747e4fSDavid du Colombier ifs=$nl 1759a747e4fSDavid du Colombier dir=`{cdsh -r /n/distmedia} 1769a747e4fSDavid du Colombier ifs=$oifs 1779a747e4fSDavid du Colombier } 1789a747e4fSDavid du Colombier if(~ $#dir 0) 1799a747e4fSDavid du Colombier dir=safdsfdsfdsf 1809a747e4fSDavid du Colombier if(! ~ $#dir 1) 1819a747e4fSDavid du Colombier dir=$"dir 1829a747e4fSDavid du Colombier if(! havedist /n/distmedia/$dir) 1839a747e4fSDavid du Colombier echo 'No distribution found in '^`{cleanname /$dir} 1849a747e4fSDavid du Colombier } 185a22b0629SDavid du Colombier 1869a747e4fSDavid du Colombier distmediadir=$dir 1879a747e4fSDavid du Colombier export distmediadir 1889a747e4fSDavid du Colombier 1899a747e4fSDavid du Colombiercase checkdone 1909a747e4fSDavid du Colombier if(! ~ $#distmediadir 1){ 1919a747e4fSDavid du Colombier mountdist=notdone 1929a747e4fSDavid du Colombier export mountdist 1939a747e4fSDavid du Colombier exit notdone 1949a747e4fSDavid du Colombier } 195a22b0629SDavid du Colombier if(! havedist /n/distmedia/$distmediadir && ! havedist /n/newfs/dist){ 1969a747e4fSDavid du Colombier mountdist=notdone 1979a747e4fSDavid du Colombier export mountdist 1989a747e4fSDavid du Colombier exit notdone 1999a747e4fSDavid du Colombier } 2009a747e4fSDavid du Colombier 2019a747e4fSDavid du Colombier exitifdone 2029a747e4fSDavid du Colombier 2039a747e4fSDavid du Colombier if(test -f /n/distmedia/$distmediadir/dist/replica/plan9.db){ 2049a747e4fSDavid du Colombier bind /n/distmedia/$distmediadir /n/dist 205a22b0629SDavid du Colombier bind -a /n/dist/386/bin /bin 206a22b0629SDavid du Colombier bind -a /n/dist/rc/bin /bin 2079a747e4fSDavid du Colombier exitifdone 2089a747e4fSDavid du Colombier mountdist=notdone 2099a747e4fSDavid du Colombier export mountdist 2109a747e4fSDavid du Colombier exit notdone 2119a747e4fSDavid du Colombier } 2129a747e4fSDavid du Colombier 2139a747e4fSDavid du Colombier trycdimage /n/distmedia/$distmediadir/plan9.iso 214a22b0629SDavid du Colombier trycdimage /n/newfs/dist/plan9.iso 2159a747e4fSDavid du Colombier 2169a747e4fSDavid du Colombier trycdimagebz2 /n/distmedia/$distmediadir/plan9.iso.bz2 217a22b0629SDavid du Colombier trycdimagebz2 /n/newfs/dist/plan9.iso.bz2 2189a747e4fSDavid du Colombier 2199a747e4fSDavid du Colombier mountdist=notdone 2209a747e4fSDavid du Colombier export mountdist 2219a747e4fSDavid du Colombier exit notdone 2229a747e4fSDavid du Colombier} 223