diff options
author | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-04-11 19:47:05 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@centraldogma> | 2011-04-11 19:47:05 +0000 |
commit | 45bab89362ebe122d60d5e9b1e2b949b26168db3 (patch) | |
tree | c430eb677a06d8c823fd1d2d4a9f7790c0c275d2 /sys/lib/dist.old/pc/inst | |
parent | 05569f6f2c54a19c1c85a7f10742913cd8904787 (diff) |
livecd
Diffstat (limited to 'sys/lib/dist.old/pc/inst')
48 files changed, 2415 insertions, 0 deletions
diff --git a/sys/lib/dist.old/pc/inst/bootfloppy b/sys/lib/dist.old/pc/inst/bootfloppy new file mode 100755 index 000000000..c9aebbc51 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/bootfloppy @@ -0,0 +1,47 @@ +#!/bin/rc + +rfork e + +echo +echo 'Insert a disk other than your installation boot disk' +echo 'into your floppy drive; it will be erased to create' +echo 'the boot floppy.' +echo +echo -n 'Press enter when ready.' +read >/dev/null >[2]/dev/null + +if(~ $#adisk 1) + ; # do nothing +if not if(~ $#bootfile 0) + adisk=/dev/fd0disk +if not { + switch($bootfile) { + case sd* + adisk=`{echo $bootfile | sed 's#(sd..).*#/dev/\1/data#'} + case fd* + adisk=`{echo $bootfile | sed 's#(fd.).*#/dev/\1disk#'} + case * + echo 'unknown bootfile '^$bootfile^'; mail 9trouble@plan9.bell-labs.com' + exit oops + } +} + +if(! ~ `{ls -l $adisk | awk '{print $6}'} 1474560){ + echo 'Will not format non-floppy disk '^$"adisk. >[1=2] + exit 'bad adisk' +} + +log Formatting boot floppy +if (test -e /n/newfs/386/9loadnousb) + bind /n/newfs/386/9loadnousb /n/newfs/386/9load # cater to old bioses +disk/format -b /386/pbs \ + -fd $adisk /n/newfs/386/9load /n/newfs/386/9pcdisk.gz \ + /tmp/plan9ini.bak +x=$status + +if(~ $x ''){ + echo + echo 'Done!' + echo +} +exit $x diff --git a/sys/lib/dist.old/pc/inst/bootplan9 b/sys/lib/dist.old/pc/inst/bootplan9 new file mode 100755 index 000000000..942c043b0 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/bootplan9 @@ -0,0 +1,55 @@ +#!/bin/rc + +first=`{ls -p '#S' | sed 1q} +if(! ~ $first $disk) { + echo 'warning: The plan 9 partition is not on the boot disk,' + echo 'so making it the active partition will have no effect.' +} + +p9offset=`{grep '^part 9fat ' /dev/$disk/ctl |awk '{print $3}'} +if(! ~ $#p9offset 1) { + echo 'could not find plan 9 partition.' + echo 'cannot happen' + exit bad +} + +if(test $p9offset -gt 4128695) { # 65536 * 63 - 10 + echo + echo 'Your Plan 9 partition is more than 2GB into your disk,' + echo 'and the master boot records used by Windows 9x/ME' + echo 'cannot access it (and thus cannot boot it).' + echo + echo 'You can install the Plan 9 master boot record, which can load' + echo 'partitions far into the disk.' + echo +} + +echo 'If you use the Windows NT/2000/XP master boot record' +echo 'or a master boot record from a Unix clone (e.g., LILO or' +echo 'FreeBSD bootmgr), it is probably safe to continue using' +echo 'that boot record rather than install the Plan 9 boot record.' +echo +prompt 'Install the Plan 9 master boot record' y n +switch($rd) { +case n + ; +case y + disk/mbr -m /386/mbr /dev/$disk/data +} + +log Setting Plan 9 partition active. +p9part=`{disk/fdisk /dev/$disk/data >[2]/dev/null </dev/null | + grep PLAN9 | sed 1q | sed 's/ *(p.) .*/\1/'} +if(~ $#p9part 0){ + echo 'You have no Plan 9 partitions (How could this happen?)' >[1=2] + exit 'no plan 9 partition found' +} +p9part=$p9part(1) +{ echo 'A '^$p9part; echo w } | disk/fdisk /dev/$disk/data >[2]/dev/null >/dev/null +x=$status +if(~ $x '' '|'){ + echo + echo 'The Plan 9 partition is now marked as active.' + exit '' +} +exit $x diff --git a/sys/lib/dist.old/pc/inst/bootsetup b/sys/lib/dist.old/pc/inst/bootsetup new file mode 100755 index 000000000..cc22fe6ee --- /dev/null +++ b/sys/lib/dist.old/pc/inst/bootsetup @@ -0,0 +1,125 @@ +#!/bin/rc + +# desc: create a boot floppy or configure hard disk to boot plan 9 +# prereq: copydist + +switch($1) { +case go + echo + echo 'Initializing Plan 9 FAT configuration partition (9fat)' + echo + + fat=(/dev/sd*/9fat) + fat=$fat(1) + disk=`{echo $fat | sed 's:/dev/::;s:/9fat::'} + bootfs=`{echo $fs | sed 's:/dev/(sd..)/(.*):\1!\2:'} + bootfat=`{echo $fs | sed 's:/dev/(sd..)/(.*):\1!9fat:'} + if(! test -f /dev/$disk/9fat) { + echo 'You have no 9fat partition. Can''t setup booting.' + exit + } + + if(! test -f /tmp/plan9.ini) { + { + sfs=`{echo $fs | sed 's;/dev;#S;'} + if(~ $fstype fossil fossil+venti){ + echo bootfile'='$bootfat!9pcf + echo 'bootargs=local!'^$sfs + echo 'bootdisk=local!'^$sfs + } + if not { + echo bootfile'='$bootfs!/386/9pcdisk + echo 'bootdisk=local!'^$sfs + } + if(~ $fstype fossil+venti){ + venti=`{echo $ventiarena | sed 's;/dev;#S;'} + echo venti'='^$venti + } + # sort -u avoids dups which could otherwise trigger + # pointless boot menus. + grep -v '(^\[)|menuitem|adisk|bootfile|bootdisk|bootargs|nobootprompt|mouseport|vgasize|monitor|cdboot' /tmp/plan9.orig | + sort -u + echo 'mouseport='^$mouseport + echo 'monitor='^$monitor + echo 'vgasize='^$vgasize + } >/tmp/plan9.ini + } + if(! test -f /tmp/plan9ini.bak) + cp /tmp/plan9.ini /tmp/plan9ini.bak + + need9fatformat=no + if(! isfat /dev/$disk/9fat) + need9fatformat=yes + if not if(! mount -c /srv/dos /n/9fat /dev/$disk/9fat >[2]/dev/null) + need9fatformat=yes + if not if(! test -f /n/9fat/plan9.ini) + need9fatformat=yes + + if (test -e /n/newfs/386/9loadnousb) + bind /n/newfs/386/9loadnousb /n/newfs/386/9load # cater to old bioses + if(~ $need9fatformat yes){ + log Initializing Plan 9 FAT partition. + disk/format -r 2 -d -b /386/pbs \ + /dev/$disk/9fat /n/newfs/386/9load + # silently install pbslba if the partition is way into the disk. + # it''s our only hope. only need this for >8.5GB into the disk. + # but... + # there are so few non-LBA bioses out + # there anymore that we'll do this even if we're only 2GB into + # the disk. it's just not worth the headaches of dealing with + # crappy bioses that don't address the whole 8.5GB properly + + 9fatoffset=`{grep '^part 9fat ' /dev/$disk/ctl | awk '{print $4}'} + if(! ~ $#9fatoffset 1) { + echo 'could not find plan 9 partition.' + echo 'cannot happen' + exit bad + } + if(test $9fatoffset -gt 2097152) # 2GB + disk/format -b /386/pbslba /dev/$disk/9fat + + mount -c /srv/dos /n/9fat /dev/$disk/9fat + } + + if(! test -f /n/9fat/4e){ + logprog cp /n/newfs/386/9load /n/9fat/9load + logprog cp /n/newfs/386/9pcf /n/9fat/9pcf + if(test -f /n/9fat/plan9.ini && ! test -f /n/9fat/plan9-3e.ini) + logprog mv /n/9fat/plan9.ini /n/9fat/plan9-3e.ini + if(test -f /n/9fat/9pcdisk && ! test -f /n/9fat/9pc3e) + logprog mv /n/9fat/9pcdisk /n/9fat/9pc3e + + awk -f /bin/inst/mkini.awk >/n/9fat/plan9.ini + >/n/9fat/4e + } + + echo + echo 'There are myriad ways to boot a Plan 9 system.' + echo 'You can use any of the following.' + echo + echo ' floppy - create a boot floppy' + echo ' plan9 - make the plan 9 disk partition the default for booting' + echo ' win9x - add a plan 9 option to windows 9x boot menu' + echo ' winnt - add a plan 9 option to windows nt/2000/xp boot manager' + echo + echo 'If you are upgrading an extant third edition installation and booting' + echo 'from something other than a floppy, you needn''t run anything here.' + echo 'Just type ctl-d.' + + oldbootsetup=$didbootsetup + didbootsetup=1 + export didbootsetup + prompt 'Enable boot method' floppy plan9 win9x winnt + + if(! boot$rd){ + didbootsetup=$oldbootsetup + export didbootsetup + } + +case checkdone + xxxfat=(/dev/sd*/9fat) + if(! isfat $xxxfat(1) || ! ~ $didbootsetup 1){ + bootsetup=ready + export bootsetup + } +} diff --git a/sys/lib/dist.old/pc/inst/bootwin9x b/sys/lib/dist.old/pc/inst/bootwin9x new file mode 100755 index 000000000..68c2d1923 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/bootwin9x @@ -0,0 +1,117 @@ +#!/bin/rc + +dosdisk=`{ls /dev/sd??/dos >[2]/dev/null | sed 1q | sed 's!.*/(.*)/dos!\1!'} +if(~ $#dosdisk 0 || ! c: || ! test -f /n/c:/autoexec.bat || ! test -f /n/c:/config.sys) { + echo 'Could not find autoexec.bat or config.sys on the first FAT disk.' + exit bad +} + +for (i in autoexec config msdos) + if(test -f /n/c:/$i.p9) { + echo 'A Plan 9 backup already exists; will not edit system files again.' + exit bad + } + +for (i in autoexec.bat config.sys msdos.sys) + if(! cp /n/c:/$i /n/c:/^`{echo $i | sed 's/\.(bat|sys)$/.p9/'}) { + echo 'Could not back up '^$i^'; will not continue.' + exit bad + } + +if(! test -d /n/c:/plan9 && ! mkdir /n/c:/plan9) { + echo 'Could not create directory /n/c:/plan9.' + exit bad +} + +if(! cp /n/newfs/386/^(9load ld.com 9pcdisk) /tmp/plan9ini.bak /n/c:/plan9) { + echo 'Could not copy Plan 9 boot files into /n/c:/plan9.' + exit bad +} + +chmod +w /n/c:/autoexec.bat /n/c:/config.sys /n/c:/msdos.sys + +if(grep -si 'Plan ?9' /n/c:/config.sys || grep -si 'Plan ?9' /n/c:/autoexec.bat) { + echo 'Plan 9 entries already in config.sys or autoexec.bat.' + echo 'Not changing them; refer to Plan 9 install documentation' + echo 'to configure manually.' + exit bad +} + +if(! grep -si '\[menu\]' /n/c:/config.sys) { + { + echo 1 + echo i + echo '[menu]
' + echo 'menuitem=windows, Windows
' + echo 'menudefault=windows
' + echo '
' + echo '[common]
' + echo '
' + echo '[windows]
' + echo . + echo w + echo q + } | ed /n/c:/config.sys >/dev/null >[2]/dev/null +} + +{ + echo 1 + echo '/\[[Mm][Ee][Nn][Uu]\]' + echo '?^[Mm][Ee][Nn][Uu][Ii][Tt][Ee][Mm]=' + echo a + echo 'menuitem=plan9, Plan 9 from Bell Labs
' + echo . + echo '$' + echo a + echo '
' + echo '[plan9]
' + echo '
' + echo . + echo w + echo q +} | ed /n/c:/config.sys >/dev/null>[2]/dev/null + +{ + echo 1 + echo i + echo '@echo off
' + echo 'if %config%==plan9 goto plan9
' + echo 'goto notplan9
' + echo ':plan9
' + echo 'plan9\ld '^$dosdisk^'!dos!plan9/9load
' + echo ':notplan9
' + echo . + echo w + echo q +} | ed /n/c:/autoexec.bat >/dev/null>[2]/dev/null + +fn zeroopt { + if(grep -s '^'^$1^'=1' /n/c:/msdos.sys) { + { + echo '/^'^$1^'=1/s/=1/=0/' + echo w + echo q + } | ed /n/c:/msdos.sys>/dev/null>[2]/dev/null + } + if not if (grep -s '^'^$1^'=0' /n/c:/msdos.sys) + ; + if not { + { + echo 1 + echo i + echo '[Options]
' + echo 'Logo=0
' + echo . + echo w + echo q + } | ed /n/c:/msdos.sys>/dev/null>[2]/dev/null + } +} + +if(grep -si '^\[paths\]' /n/c:/msdos.sys){ # Windows 9x rather than DOS + zeroopt Logo +# zeroopt BootGUI +} + +echo 'Plan 9 added to Windows 9X boot menu.' +exit '' diff --git a/sys/lib/dist.old/pc/inst/bootwinnt b/sys/lib/dist.old/pc/inst/bootwinnt new file mode 100755 index 000000000..ee92f5d76 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/bootwinnt @@ -0,0 +1,47 @@ +#!/bin/rc + +if(! c: || ! test -f /n/c:/boot.ini) { + echo 'Could not find NT''s boot.ini on the first FAT disk.' + exit bad +} + +if(test -f /n/c:/boot.p9) { + echo 'A Plan 9 backup already exists; will not edit boot.ini again.' + exit bad +} + +if(! cp /n/c:/boot.ini /n/c:/boot.p9) { + echo 'Could not back up boot.ini; will not continue.' + exit bad +} + +chmod +w /n/c:/boot.ini + +if(! grep -si '\[operating systems\]' /n/c:/boot.ini) { + echo 'Could not parse boot.ini.' + exit bad +} + +if(grep -si 'Plan 9' /n/c:/boot.ini) { + p9file=`{grep 'Plan 9' /n/c:/boot.ini | sed 1q | sed 's/=.*//'} + if(! ~ $p9file [Cc]:'\'*) { + echo 'Unexpected Plan 9 entry in boot.ini already; not continuing.' + exit bad + } +} + +if not { + p9file='c:\bootsect.p9' + echo 'c:\bootsect.p9 = "Plan 9 from Bell Labs"
' >>/n/c:/boot.ini +} + +p9file=/n/^`{echo $p9file | sed 's!\\!/!g'} + + +if(dd -if /dev/$disk/plan9 -bs 512 -count 1 -of $p9file >/dev/null >[2]/dev/null) { + echo 'Plan 9 added to Windows NT boot menu.' + exit '' +} + +echo 'Error copying Plan 9 boot sector to file.' +exit bad diff --git a/sys/lib/dist.old/pc/inst/configarch b/sys/lib/dist.old/pc/inst/configarch new file mode 100755 index 000000000..61912bfdb --- /dev/null +++ b/sys/lib/dist.old/pc/inst/configarch @@ -0,0 +1,40 @@ +#!/bin/rc + +# desc: set source of distribution archives +# prereq: mountfs + +switch($1) { +case go + echo + echo 'Will you be using a distribution archive on local media or the internet?' + echo + + prompt 'Distribution is from' local internet + archmedium=$rd + export archmedium + + switch($archmedium) { + case local + exec configlocal go + case internet + exec configip go + } + +case checkdone + switch($#archmedium) { + case 1 + switch($archmedium) { + case local + exec configlocal checkdone + case internet + exec configip checkdone + case * + configarch=notdone + export configarch + } + case * + configarch=notdone + export configarch + } +} + diff --git a/sys/lib/dist.old/pc/inst/configdist b/sys/lib/dist.old/pc/inst/configdist new file mode 100755 index 000000000..3e99bea0d --- /dev/null +++ b/sys/lib/dist.old/pc/inst/configdist @@ -0,0 +1,22 @@ +#!/bin/rc + +# prereq: mountfs +# desc: choose the source of the distribution archive + +switch($1){ +case checkdone + if(! ~ $distisfrom net local){ + configdist=ready + export configdist + } + +case go + echo 'Are you going to download the distribution' + echo 'from the internet or do you have it on local media?' + echo + prompt -d local 'Distribution is from' local net + distisfrom=$rd + export distisfrom +} + + diff --git a/sys/lib/dist.old/pc/inst/configether b/sys/lib/dist.old/pc/inst/configether new file mode 100755 index 000000000..0922ea339 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/configether @@ -0,0 +1,53 @@ +#!/bin/rc + +# desc: configure your internet connection via an ethernet card + +switch($1) { +case go + echo + echo 'Please choose a method for configuring your ethernet connection.' + echo + echo ' manual - specify IP address, network mask, gateway IP address' + echo ' dhcp - use DHCP to automatically configure' + echo + + prompt 'Configuration method' manual dhcp + ethermethod=$rd + gwaddr=xxx + ipaddr=xxx + ipmask=xxx + switch($ethermethod){ + case dhcp + echo + echo 'Some ISPs, notably @HOME, require a host name passed with DHCP' + echo 'requests. An example for @HOME would be "cc1018221-a". If your' + echo 'ISP supplied you such a name, enter it.' + echo + prompt -d none 'host name'; dhcphost=$rd + switch($dhcphost){ + case none + dhcphost=(); + case * + dhcphost=(-h $dhcphost) + } + export dhcphost + case manual + prompt 'ip address'; ipaddr=$rd + prompt 'network mask'; ipmask=$rd + prompt 'gateway address'; gwaddr=$rd + export ipaddr ipmask gwaddr + } + + export ethermethod gwaddr ipaddr ipmask dhcphost + exec startether go + +case checkdone + if(! ~ $ethermethod manual dhcp) { + configether=notdone + export configether + } + if(~ $ethermethod manual && ~ 0 $#ipaddr $#ipmask $#gwaddr) { + configether=notdone + export configether + } +} diff --git a/sys/lib/dist.old/pc/inst/configfs b/sys/lib/dist.old/pc/inst/configfs new file mode 100755 index 000000000..81f82897c --- /dev/null +++ b/sys/lib/dist.old/pc/inst/configfs @@ -0,0 +1,23 @@ +#!/bin/rc + +# desc: choose the type of file system to install + +switch($1){ +case checkdone + if(! ~ $fstype fossil fossil+venti){ + configfs=ready + export configfs + } + +case go + echo 'You can install the following types of file systems:' + echo + echo ' fossil the new Plan9 fileserver' + echo ' fossil+venti fossil + a archival dump server' + echo + prompt -d fossil 'File system' fossil fossil+venti + fstype=$rd + export fstype +} + + diff --git a/sys/lib/dist.old/pc/inst/configip b/sys/lib/dist.old/pc/inst/configip new file mode 100755 index 000000000..a7873c9f1 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/configip @@ -0,0 +1,64 @@ +#!/bin/rc + +switch($1) { +case go + + devs='' + if(test -d '#l/ether0' >[2]/dev/null) + devs=$devs^ether + if(test -f '#t'/eia? >[2]/dev/null) + devs=$devs^ppp + + switch($devs){ + case '' + echo + echo 'Could not find ethernet card nor serial port nor modem.' + echo 'Please use a local copy of the distribution archive.' + echo + ifc=none + + case ppp + echo + echo 'No ethernet card was detected, but there is a serial port or modem.' + echo 'We will configure PPP.' + echo + ifc=ppp + + case ether + echo + echo 'No serial port or modem detected, but there is an ethernet card.' + echo 'We will configure the ethernet.' + echo + ifc=ether + + case etherppp + echo + echo 'You can connect to the internet via' + echo 'a local ethernet or a dial-up PPP connection.' + echo + prompt 'Interface to use' ether ppp + ifc=$rd + } + + ipinterface=$ifc + export ipinterface + + switch($ifc) { + case ether + exec configether go + case ppp + exec configppp go + } + +case checkdone + if(~ $#ipinterface 1) + switch($ipinterface) { + case ether + exec configether checkdone + case ppp + exec configppp checkdone + } + configarch=notdone + export configarch + +} diff --git a/sys/lib/dist.old/pc/inst/confignet b/sys/lib/dist.old/pc/inst/confignet new file mode 100755 index 000000000..182ed40cb --- /dev/null +++ b/sys/lib/dist.old/pc/inst/confignet @@ -0,0 +1,67 @@ +#!/bin/rc + +# prereq: configdist +# desc: configure the network to download the distribution + +switch($1){ +case checkready checkdone + if(! ~ $distisfrom net){ + confignet=notdone + export confignet + exit + } + if(~ $distisfrom net && ~ $netisfrom ppp ether){ + x=config$netisfrom + $x=done + config$netisfrom checkdone + confignet=$$x + export confignet + exit + } + confignet=ready + export confignet + exit + +case go + devs='' + if(test -d '#l/ether0' >[2]/dev/null) + devs=$devs^ether + if(test -f '#t'/eia? >[2]/dev/null) + devs=$devs^ppp + + switch($devs){ + case '' + echo + echo 'Could not find ethernet card nor serial port nor modem.' + echo 'Please use a local copy of the distribution archive.' + echo + netisfrom=none + + case ppp + echo + echo 'No ethernet card was detected, but there is a serial port or modem.' + echo 'We will configure PPP.' + echo + netisfrom=ppp + + case ether + echo + echo 'No serial port or modem detected, but there is an ethernet card.' + echo 'We will configure the ethernet.' + echo + netisfrom=ether + + case etherppp + echo + echo 'You can connect to the internet via' + echo 'a local ethernet or a dial-up PPP connection.' + echo + prompt 'Interface to use' ether ppp + netisfrom=$rd + } + + export netisfrom + if(~ $netisfrom ether ppp) + exec config$netisfrom go +} + diff --git a/sys/lib/dist.old/pc/inst/configppp b/sys/lib/dist.old/pc/inst/configppp new file mode 100755 index 000000000..6bbffc4f0 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/configppp @@ -0,0 +1,63 @@ +#!/bin/rc + +# desc: configure your internet connection via ppp over a modem + +switch($1) { +case go + devs=`{ls -p '#t/'eia? >[2]/dev/null} + if(~ $#devs 0) { + echo 'No serial port found; this can''t happen.' # because configip checks + exit + } + + # not going to use the mouse for PPP + if(~ eia^$mouseport $devs) + devs=`{echo $devs | sed 's/eia'^$mouseport^'//'} + + if(~ $#devs 0) { + echo 'The only serial port you have is your mouse.' + echo 'Cannot configure PPP.' + exit + } + + echo + echo 'Please choose the serial port or modem to use to connect to your ISP.' + echo + for(i in $devs) { + n=`{echo $i | sed 's/eia//'} + n=`{hoc -e 1+$n} + echo ' '^$i^'(Windows'' COM'^$n^')' + } + echo + prompt 'Serial device' $devs + pppdev=$rd + + echo + echo 'Pick a baud rate for the PPP connection.' + echo + prompt -d 115200 'Baud rate' + pppbaud=$rd + + echo + echo 'You can specify your dialup phone number, username, and password,' + echo 'or you can log in manually by typing the modem commands yourself.' + echo + prompt 'Dialing method' auto manual + pppmethod=$rd + + switch($pppmethod){ + case auto + prompt 'PPP phone number'; pppphone=$rd + prompt 'PPP phone username'; pppuser=$rd + prompt 'PPP phone password'; ppppasswd=$rd + } + + export pppdev pppmethod pppphone ppppasswd pppuser pppbaud + exec startppp go + +case checkdone + if(! ~ $#pppmethod 1 || ! test -f /dev/$pppdev){ + configppp=notdone + export configppp + } +} diff --git a/sys/lib/dist.old/pc/inst/copydist b/sys/lib/dist.old/pc/inst/copydist new file mode 100755 index 000000000..507d5602b --- /dev/null +++ b/sys/lib/dist.old/pc/inst/copydist @@ -0,0 +1,31 @@ +#!/bin/rc + +# prereq: mountdist +# desc: copy the distribution into the file system + +switch($1){ +case checkready + if(! test -d /n/dist/dist/replica){ + copydist=notdone + export copydist + exit + } + if(test -f /n/newfs/dist/replica/didplan9){ + copydist=done + export copydist + exit + } +case go + inst/watchfd applylog 0 `{ls -l /n/dist/dist/replica/plan9.log | awk '{print $6}'} 'Installing file system' & + replica/pull -c / /rc/bin/inst/replcfg + if(~ $status '' *conflicts || test -f /n/newfs/dist/replica/didplan9witherrors) + >/n/newfs/dist/replica/didplan9 + if not + >/n/newfs/dist/replica/didplan9witherrors + +case checkdone + if(! test -f /n/newfs/dist/replica/didplan9){ + copydist=notdone + export copydist + } +} diff --git a/sys/lib/dist.old/pc/inst/defs b/sys/lib/dist.old/pc/inst/defs new file mode 100755 index 000000000..f9c9454c0 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/defs @@ -0,0 +1,162 @@ +nl=' +' +tab=' ' +if(~ $#distname 0) + distname=plan9 + +wctl=/dev/null +if(test -w /dev/wctl) + wctl=/dev/wctl + +fn log { + echo $* >>/srv/log +} + +fn logprog { + echo '% '^$"* >>/srv/log + $* >[2=1] >>/srv/log +} + +fn sigint { + # nothing happens +} + +fn prompt { + def=() + what=() + if(~ $1 -d && ! ~ $#* 1){ + def=$2 + shift + shift + } + + optstr=() + if(~ $1 -w && ! ~ $#* 1){ + optstr=$2 + shift + shift + } + + pr=$1 + shift + + opts=($*) + if(~ $#opts 0) { + suf=' ' + } + if not if(! ~ $#optstr 0) { + if(~ $optstr '') + suf=' ' + if not { + pr=$pr^' ('^$"optstr^')' + suf='' + } + } + if not { + pr=$pr^' ('^$1 + shift + for(i) + pr=$pr^', '^$i + pr=$pr^')' + suf='' + } + + if(~ $#def 1) + pr=$pr^$suf^'['^$def^']' + if not + pr=$pr^$suf^'[no default]' + + pr=$pr^': ' + + + okay=no + while(~ $okay no) { + echo -n current >$wctl + echo -n top >$wctl + echo -n $pr >[1=2] + ifs='' {rd=`{read}} + if(~ $#rd 0) + exit notdone + if(~ $rd !*){ + ifs='' {rd=`{echo $rd | sed 's/!//'}} + echo $rd + rc -c $rd + echo !$status + } + if not{ + rd=`{echo $rd} + if(~ $#rd 0 || ~ $rd '') + rd=$def + + switch($#opts){ + case 0 + if(! ~ $rd '') + okay=yes + case * + if(~ $rd $opts) + okay=yes + } + } + } + echo -n $rd >/env/rd # just in case +} + +fn desc { + echo -n ' '^$1^' - ' + grep '^# desc: ' $1 | sed 's/# desc: //' +} + +fn prereq { + grep '^# prereq:' $1 | sed 's/# prereq://' +} + +fn mustdo { + echo You must `{grep '^# mustdo:' $1 | sed 's/# mustdo://'} +} + +# there's no easy way to pass shell variables +# up from children to parents; the parents have +# to be coerced into noticing that the environment +# changed, even when in the same environment group. +# +# instead, we explicitly export the variables we want +# to percolate, and the parent calls coherence to reread +# the variables. +# +# we just append to the vars file, so that later exports +# override earlier ones; when we call coherence, +# the duplicates are thrown out. + +fn export { + null=() + nonnull=() + for(i in $*){ + if(~ $#$i 0) + null=($null $i) + if not + nonnull=($nonnull $i) + } + if(! ~ $#nonnull 0) + whatis $nonnull |grep -v '^\./' >>/tmp/vars >[2]/dev/null + for(i in $null) + echo $i^'=()' >>/tmp/vars +} + +fn coherence { + if(test -f /tmp/vars) { + grep '^[a-z]*=' /tmp/vars >/tmp/vars2 + v=`{sed 's/^([a-z]*)=.*/\1/' /tmp/vars2 | sort -u} + . /tmp/vars2 + rm /tmp/vars2 + rm /tmp/vars + export $v + } +} + +# ip device stats + +fn isipdevup { + grep -s $1 /net/ipifc/*/status >[2]/dev/null +} + + diff --git a/sys/lib/dist.old/pc/inst/download b/sys/lib/dist.old/pc/inst/download new file mode 100755 index 000000000..70d7f5ba7 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/download @@ -0,0 +1,56 @@ +#!/bin/rc + +# prereq: mountfs +# desc: download or continue to download the distribution archives + +switch($1) { +case checkready + devs=(`{cat /net/ipifc/*/status >[2]/dev/null | + grep -v '127\.0\.0\.1' | + sed 's/ .*//'}) + if(~ $#devs 0) { + download=notdone + export download + } + if(~ $mountdist done){ + download=notdone + export download + } + +case go + if(! test -f /srv/cs) { + log starting cs, dns + logprog ndb/cs >>/srv/log >[2=1] + logprog ndb/dns -r >>/srv/log >[2=1] + } + if(! test -f /net/cs) { + logprog mount -a /srv/cs /net + logprog mount -a /srv/dns /net + } + + # BUG make restartable + echo 'Downloading distribution package...' + baropt='-w 145,129,445,168' + if(~ $textinst 1) + baropt=-t + if(! hget -vo /n/newfs/dist/_plan9.iso.bz2 $installurl/plan9.iso.bz2 |[2] bargraph $baropt 'downloading '^plan9.iso.bz2) + exit + mv /n/newfs/dist/_plan9.iso.bz2 /n/newfs/dist/plan9.iso.bz2 + if(~ $fstype fossil){ + echo fsys main sync >>/srv/fscons + } + + echo 'The distribution is downloaded.' + + srvmedia=() + mountmedia=(mount /srv/fossil /n/distmedia) + distmediadir=/dist + export distmediadir mountmedia distmedia + +case checkdone + if(! test -f /n/newfs/dist/plan9.iso.bz2) { + download=notdone + export download + } +} + diff --git a/sys/lib/dist.old/pc/inst/finish b/sys/lib/dist.old/pc/inst/finish new file mode 100755 index 000000000..e616e64e1 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/finish @@ -0,0 +1,19 @@ +#!/bin/rc + +# desc: finish the installation and reboot +# prereq: bootsetup +# mustdo: + +switch($1) { +case checkdone + finish=ready + export finish + +case go + if(~ $cdboot yes){ + echo 'Congratulations; you''ve completed the install.' + echo + halt + } + stop go finished +} diff --git a/sys/lib/dist.old/pc/inst/fmtfossil b/sys/lib/dist.old/pc/inst/fmtfossil new file mode 100755 index 000000000..98bf33fc1 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/fmtfossil @@ -0,0 +1,91 @@ +#!/bin/rc + +# desc: initialize disks for a fossil server +# prereq: configfs + +switch($1){ +case checkready checkdone + if(! ~ $fstype fossil+venti fossil){ + fmtfossil=notdone + export fmtfossil + exit + } + ff=`{ls /dev/sd*/fossil* /dev/fs/fossil* >[2]/dev/null} + if(~ $#ff 0){ + fmtfossil=notdone + export fmtfossil + exit + } + gg=() + for(f in $ff) + if(isfossil $f) + gg=($gg $f) + if(~ $#gg 0){ + fmtfossil=ready + export fmtfossil + exit + } + fmtfossil=done + export fmtfossil + exit + +case go + ff=`{ls /dev/sd*/fossil* /dev/fs/fossil* >[2]/dev/null} + if(~ $#ff 0){ + echo 'You need to create a partition or partitions to hold the Fossil write cache.' + echo 'The partition name must begin with "fossil".' + echo + fmtfossil=notdone + export fmtfossil + exit + } + default=() + if(~ $#ff 1){ + default=(-d $ff) + } + echo You have the following fossil partitions. + echo + prompt $default 'Fossil partition to format' $ff + f=$rd + + do=yes + if(isfossil $f){ + echo $f appears to already be formatted as Fossil file system. + echo Do you really want to reformat it? + echo + prompt -d no 'Reformat '$f yes no + do=$rd + } + if(~ $do yes){ + fossil/flfmt -y $f + n=`{cat /dev/swap | grep ' user' | sed 's/^[0-9]+\/([0-9]+) .*/\1/'} + if(test $n -gt 32768) + m=3000 # if have at least 128 user MB, use 24MB for fossil + if not if(test $n -gt 16384) + m=1500 # 64 user MB => 12MB for fossil + if not if(test $n -gt 8192) + m=750 # 32 user MB => 6MB for fossil + if not + m=256 # 2MB for fossil (this will be slow) + + # if we're using a venti in the back, take hourly snapshots + # that retire after three days, in addition to the daily dumps at 5am + if(~ $fstype fossil+venti){ + v='' + snap='fsys main snaptime -s 60 -a 0500 -t 2880' + } + # otherwise, take the daily dumps but nothing else -- + # we can't retire snapshots unless dumps are being archived + if not{ + v='-V' + snap='' + } + echo \ +'fsys main config '^$f^' +fsys main open '^$v^' -c '^$m^' +'^$snap^' +' | fossil/conf -w $f + } + + echo Done. +} diff --git a/sys/lib/dist.old/pc/inst/fmtventi b/sys/lib/dist.old/pc/inst/fmtventi new file mode 100755 index 000000000..db79440ac --- /dev/null +++ b/sys/lib/dist.old/pc/inst/fmtventi @@ -0,0 +1,190 @@ +#!/bin/rc + +# desc: initialize disks for a venti server +# prereq: mountdist + +switch($1){ +case checkready checkdone + if(! ~ $fstype fossil+venti){ + fmtventi=notdone + export fmtventi + exit + } + if(! test -e /bin/venti/fmtarenas || ! test -e /bin/venti/fmtisect || ! test -e /bin/venti/fmtindex){ + bind -a /n/dist/386/bin/venti /bin/venti + if(! test -e /bin/venti/fmtarenas || ! test -e /bin/venti/fmtisect || ! test -e /bin/venti/fmtindex){ + fmtventi=notdone + export fmtventi + exit + } + } + ff=`{ls /dev/sd*/arenas* /dev/fs/arenas* >[2]/dev/null} + if(~ $#ff 0){ + fmtventi=notdone + export fmtventi + exit + } + gg=() + for(f in $ff) + if(isventi $f) + gg=($gg $f) + if(~ $#gg 0){ + fmtventi=ready + export fmtventi + exit + } + + ventiarena=$gg(1) + export ventiarena + + fmtventi=done + export fmtventi + exit + +case go + ff=`{ls /dev/sd*/arenas* /dev/fs/arenas* >[2]/dev/null} + if(~ $#ff 0){ + echo 'You need to create a partition or partitions to hold the Venti arenas.' + echo 'The arena partition names must begin with "arenas".' + echo + fmtventi=notdone + export fmtventi + exit + } + default=(-d $"ff) + if(! ~ $#ventiarena 0){ + default=(-d $"ventiarena) + } + echo You have the following Venti arena partitions. + ls -l $ff + echo + + prompt $default 'Venti arena partitions to use' + aa=`{echo $rd} + bad=no + for(a in $aa){ + if(! ~ $a $ff){ + echo 'Bad venti arena partition' $a + fmtventi=notdone + export fmtventi + exit + } + } + ventiarena=$aa + export ventiarena + + gg=`{ls /dev/sd*/isect* /dev/fs/isect* >[2]/dev/null} + if(~ $#gg 0){ + echo 'You need to create a partition or partitions to hold the Venti indices.' + echo 'The index partition names must begin with "isect".' + echo + fmtventi=notdone + export fmtventi + exit + } + default=(-d $"gg) + if(! ~ $#ventiindex 0){ + default=(-d $"ventiindex) + } + + echo You have the following Venti index partitions. + ls -l $gg + echo + + prompt $default 'Venti index partitions to use' + aa=`{echo $rd} + bad=no + for(a in $aa){ + if(! ~ $a $gg){ + echo 'Bad venti index partition' $a + fmtventi=notdone + export fmtventi + exit + } + } + ventiindex=$aa + export ventiindex + + n=-1 + fmta=() + for(a in $ventiarena){ + do=yes + n=`{hoc -e 1+$n} + if(isventiarenas $a){ + echo File $a is already formatted as a Venti arenas partition. + prompt -d no 'Reformat '$a yes no + do=$rd + } + if(~ $do yes) + fmta=($fmta arenas$n:$a) + } + + n=-1 + fmti=() + for(a in $ventiindex){ + do=yes + n=`{hoc -e 1+$n} + if(isventiisect $a){ + echo File $a is already formatted as a Venti index section. + prompt -d no 'Reformat '$a yes no + do=$rd + } + if(~ $do yes) + fmti=($fmti isect$n:$a) + } + + echo Formatting Venti arenas and indices (this takes a while). + # do each disk in parallel + echo good >/tmp/fmt + dd=() + for(a in $fmta $fmti){ + d=`{echo $a | sed 's!.*:(/.*/).*!\1!'} + if(! ~ $d $dd) + dd=($dd $d) + } + for(d in $dd){ + { + for(a in $fmta){ + i=`{echo $a | sed 's!(.*):(/.*/)(.*)!\1 \2 \2\3!'} + if(~ $i(2) $d){ + echo $i(3) ... + venti/fmtarenas $i(1) $i(3) || echo bad >/tmp/fmt + echo done with $i(3) + } + } + for(a in $fmti){ + i=`{echo $a | sed 's!(.*):(/.*/)(.*)!\1 \2 \2\3!'} + if(~ $i(2) $d){ + echo $i(3) ... + venti/fmtisect $i(1) $i(3) || echo bad >/tmp/fmt + echo done with $i(3) + } + } + } & + } + wait + if(~ bad `{cat /tmp/fmt}){ + echo There were errors formatting the indices and arenas. + fmtventi=ready + export fmtventi + exit errors + } + + echo Done formatting Venti arenas and indices. + + v=$ventiarena(1) + echo Storing Venti config on $v... + { + echo index main + for(i in $ventiindex) + echo isect $i + for(a in $ventiarena) + echo arenas $a + } | venti/conf -w $v + + echo Initializing index... + venti/fmtindex $v + + echo Done with Venti! +} + diff --git a/sys/lib/dist.old/pc/inst/gui b/sys/lib/dist.old/pc/inst/gui new file mode 100755 index 000000000..afb0981d0 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/gui @@ -0,0 +1,7 @@ +#!/bin/rc + +cd /bin/inst +echo blanktime 0 >/dev/vgactl +. defs + +startwin 640 480 diff --git a/sys/lib/dist.old/pc/inst/halt b/sys/lib/dist.old/pc/inst/halt new file mode 100755 index 000000000..4554359f0 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/halt @@ -0,0 +1,18 @@ +#!/bin/rc + +echo -n 'Halting file systems...' + +if(ps | grep -s ' venti$') + venti/sync -h tcp!127.0.0.1!17034 +if(ps | grep -s ' fossil$'){ + echo fsys all halt >>/srv/fscons + slay fossil|rc +} + +echo done +echo +echo Remember to take the install disk out of the drive. +echo Feel free to turn off your computer. +while() + sleep 3600 + diff --git a/sys/lib/dist.old/pc/inst/hasmbr b/sys/lib/dist.old/pc/inst/hasmbr new file mode 100755 index 000000000..1adaa0a5b --- /dev/null +++ b/sys/lib/dist.old/pc/inst/hasmbr @@ -0,0 +1,12 @@ +#!/bin/rc + +if(! ~ $#* 1) { + echo 'usage: hasmbr /dev/sdC0/part' >[1=2] + exit usage +} + +x=`{xd -b $1 | sed -n '32p;32q'} +if(~ $x(16) 55 && ~ $x(17) aa) + exit '' +exit nope + diff --git a/sys/lib/dist.old/pc/inst/hdrs b/sys/lib/dist.old/pc/inst/hdrs new file mode 100755 index 000000000..0b934999f --- /dev/null +++ b/sys/lib/dist.old/pc/inst/hdrs @@ -0,0 +1,7 @@ +#!/bin/rc + +if(! ~ $#* 1) { + echo 'usage: hdrs file.9gz' >[1=2] + exit usage +} +gunzip < $1 | disk/mkext -h diff --git a/sys/lib/dist.old/pc/inst/is9660 b/sys/lib/dist.old/pc/inst/is9660 new file mode 100755 index 000000000..1d138e55e --- /dev/null +++ b/sys/lib/dist.old/pc/inst/is9660 @@ -0,0 +1,12 @@ +#!/bin/rc + +# 0000000 01 C D 0 0 1 01 00 P L A N 9 + +if(! ~ $#* 1) { + echo 'usage: is9660 /dev/sdC0/part' >[1=2] + exit usage +} + +ifs=$nl {id=`{dd -if $1 -bs 2048 -skip 16>[2]/dev/null | xd -c | sed 1q | sed 's/.........(....................).*/\1/'}} +~ $id '01 C D 0 0 1 01' +exit $status diff --git a/sys/lib/dist.old/pc/inst/isext2 b/sys/lib/dist.old/pc/inst/isext2 new file mode 100755 index 000000000..b79265f6a --- /dev/null +++ b/sys/lib/dist.old/pc/inst/isext2 @@ -0,0 +1,11 @@ +#!/bin/rc + +if(! ~ $#* 1) { + echo 'usage: isext2 /dev/sdC0/part' >[1=2] + exit usage +} + +cmp -s <{dd -if $1 -bs 1 -count 2 -skip 1080 >[2]/dev/null | xd -b |sed 1q} \ + <{echo '0000000 53 ef'} + +exit $status diff --git a/sys/lib/dist.old/pc/inst/isfat b/sys/lib/dist.old/pc/inst/isfat new file mode 100755 index 000000000..860278571 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/isfat @@ -0,0 +1,22 @@ +#!/bin/rc + +rfork e + +# 0000000 eb 3c 90 P l a n 9 . 0 0 00 02 04 02 00 +# 0000010 02 00 02 02 P f8 14 00 ? 00 ff 00 ~ 04 } 00 +# 0000020 02 P 00 00 80 00 ) a8 04 } 00 C Y L I N +# 0000030 D R I C A L F A T 1 6 fa 8c + +if(! ~ $#* 1) { + echo 'usage: isfat /dev/sdC0/part' >[1=2] + exit usage +} + +arg=$1 +fn fat { + cmp -s <{dd -if $arg -bs 1 -count 3 -skip $1 >[2]/dev/null} <{echo -n FAT} +} + +fat 54 || fat 82 +exit $status + diff --git a/sys/lib/dist.old/pc/inst/isfossil b/sys/lib/dist.old/pc/inst/isfossil new file mode 100755 index 000000000..21c7d3e29 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/isfossil @@ -0,0 +1,16 @@ +#!/bin/rc + +if(! ~ $#* 1){ + echo 'usage: isfossil /dev/sdC0/part' >[1=2] + exit usage +} + +arg=$1 +if(! cmp -s <{dd -quiet 1 -if $arg -bs 1024 -iseek 127 | + dd -quiet 1 -bs 14 -count 1} <{echo 'fossil config'}) + exit noconfig +if(! cmp -s <{dd -quiet 1 -if $arg -bs 1024 -iseek 128 | + dd -quiet 1 -bs 4 -count 1 | xd -b | sed 1q} <{echo '0000000 37 76 ae 89'}) + exit notwritebuffer +exit 0 + diff --git a/sys/lib/dist.old/pc/inst/isventi b/sys/lib/dist.old/pc/inst/isventi new file mode 100755 index 000000000..555c27a7f --- /dev/null +++ b/sys/lib/dist.old/pc/inst/isventi @@ -0,0 +1,13 @@ +#!/bin/rc + +if(! ~ $#* 1){ + echo 'usage: isventi /dev/sdC0/part' >[1=2] + exit usage +} + +arg=$1 +if(! cmp -s <{dd -quiet 1 -if $arg -bs 1024 -iseek 248 | + dd -quiet 1 -bs 13 -count 1} <{echo 'venti config'}) + exit noconfig +exit 0 + diff --git a/sys/lib/dist.old/pc/inst/isventiarenas b/sys/lib/dist.old/pc/inst/isventiarenas new file mode 100755 index 000000000..dfce274de --- /dev/null +++ b/sys/lib/dist.old/pc/inst/isventiarenas @@ -0,0 +1,13 @@ +#!/bin/rc + +if(! ~ $#* 1){ + echo 'usage: isventiarenas /dev/sdC0/part' >[1=2] + exit usage +} + +arg=$1 +if(! cmp -s <{dd -quiet 1 -if $arg -bs 1024 -iseek 256 | + dd -quiet 1 -bs 4 -count 1 | xd -b | sed 1q} <{echo '0000000 a9 e4 a5 e7'}) + exit notarenas +exit 0 + diff --git a/sys/lib/dist.old/pc/inst/isventiisect b/sys/lib/dist.old/pc/inst/isventiisect new file mode 100755 index 000000000..0b11c9c4e --- /dev/null +++ b/sys/lib/dist.old/pc/inst/isventiisect @@ -0,0 +1,13 @@ +#!/bin/rc + +if(! ~ $#* 1){ + echo 'usage: isventiisect /dev/sdC0/part' >[1=2] + exit usage +} + +arg=$1 +if(! cmp -s <{dd -quiet 1 -if $arg -bs 1024 -iseek 256 | + dd -quiet 1 -bs 4 -count 1 | xd -b | sed 1q} <{echo '0000000 d1 5c 5e c7'}) + exit notisect +exit 0 + diff --git a/sys/lib/dist.old/pc/inst/main b/sys/lib/dist.old/pc/inst/main new file mode 100755 index 000000000..25ac0d168 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/main @@ -0,0 +1,115 @@ +#!/bin/rc + +. defs + +while() +{ +div=-------------------------------------- +echo +echo $div +echo +echo -n 'Preparing menu...' + +# must be topologically sorted (by prereq) +tasks=(\ + configfs\ + partdisk prepdisk\ + fmtfossil\ + mountfs\ + configdist\ + confignet\ + mountdist\ + fmtventi\ + download\ + copydist\ + bootsetup finish stop\ + stopether stopppp\ +) +# startether startppp stopether stopppp download\ + +# these don't show up in the menu but still matter +pseudotasks=(configip havefiles etherup etherdown pppup pppdown) + +for(i in $tasks $pseudotasks) + $i=notdone + +coherence + +for(i in $tasks $pseudotasks) + if(~ $#$i 0) + $i=notdone + +# +# we believe the environment about what is done +# only if we've confirmed it. since the tasks list is sorted so that +# prereqs of xxx come before xxx, it's okay to assume xxx +# is done until proven otherwise -- either a prereq or checkdone +# will say so. +# + +done=() +ready=() +rm /env/done +rm /env/ready +for(i in $tasks) { + $i=done + for(j in `{prereq $i}) + if(! ~ $$j done) + $i=notdone + if(~ $$i done) { + export $i + $i checkdone + $i=`{grep '^'$i^'=' /tmp/vars | sed -n '$p' | sed 's/.*=//'} + } + + if(~ $$i notdone ready) { + okay=yes + for(j in `{prereq $i}) + if(! ~ $$j done) + okay=no + switch($okay){ + case yes + $i=ready + export $i + $i checkready + $i=`{grep '^'$i^'=' /tmp/vars | sed -n '$p' | sed 's/.*=//'} + case no + $i=notdone + } + } + + if(~ $$i done ready) + $$i=($$$i $i) # rc can be just as complicated as perl! +} + +export $tasks $pseudotasks done ready +coherence +echo + +if(! ~ $#done 0) { + echo 'The following tasks are done: ' + for(i in $done) + desc $i + echo +} + +echo 'The following unfinished tasks are ready to be done:' +for(i in $ready) + desc $i +echo + +if(~ $#ready 0) { + echo hey you finished everything! not supposed to happen. + sleep 100 + exit +} + +prompt -d $ready(1) -w '' 'Task to do' $done $ready + +echo +echo $div + +$rd go +$rd=done # if it's not, the check will figure that out +export $rd +} diff --git a/sys/lib/dist.old/pc/inst/mainloop b/sys/lib/dist.old/pc/inst/mainloop new file mode 100755 index 000000000..94d58efc4 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/mainloop @@ -0,0 +1,23 @@ +#!/bin/rc + +sleep 86400 & +cd /bin/inst +. defs +fn sigint { } + +coherence + +disks=`{ls /dev/sd*/data >[2]/dev/null | sed 's!/dev/(sd..)/data!\1!'} +for (i in /dev/sd*/data) + if(test -f $i) + disk/fdisk -p $i>`{basename -d $i}^/ctl >[2]/dev/null +for(i in /dev/sd*/plan9*) + if(test -f $i) + disk/prep -p $i >`{basename -d $i}^/ctl >[2]/dev/null + +# we run this while() here so that ctl-d won''t exit from us -- it''ll only exit main! +# main contains a while() loop too, to avoid the hit of +# continually reexecing from here. + +while() + main diff --git a/sys/lib/dist.old/pc/inst/mkini.awk b/sys/lib/dist.old/pc/inst/mkini.awk new file mode 100755 index 000000000..7ddf6a80f --- /dev/null +++ b/sys/lib/dist.old/pc/inst/mkini.awk @@ -0,0 +1,59 @@ +BEGIN{ + m = "common" + haveold = 0; + while(getline <"/n/9fat/plan9-3e.ini" > 0){ + haveold = 1 + if($0 ~ /\[.*\]/){ + m = substr($0, 2, length($0)-2) + continue + } + if(m=="menu" && $0 ~ /^menuitem=4e,/) + continue + a[m] = a[m] $0 "\n" + } + + a["4e"] = "" + while(getline <"/tmp/plan9.ini" > 0) + a["4e"] = a["4e"] $0 "\n" + + if(a["menu"] == "" && haveold){ + a["menu"] = "menuitem=3e, Plan 9 Third Edition\n" + a["3e"] = "" + } + + if(a["common"] != ""){ + for(i in a) + if(i != "4e" && i != "common" && i != "menu") + a[i] = a["common"] a[i] + delete a["common"] + } + + bootdisk4e=ENVIRON["fs"] + gsub("/dev/", "boot(args|disk|file)=local!#S/", bootdisk4e) + + if(!haveold) + print a["4e"] + else{ + print "[menu]" + print "menuitem=4e, Plan 9 Fourth Edition" + print a["menu"] + print "" + delete a["menu"] + + print "[4e]" + print a["4e"] + print "" + delete a["4e"] + + for(i in a){ + # BUG: if rootdir is already there we should rewrite it + # sometimes into /3e/whatwasthere + if(a[i] ~ bootdisk4e && !(a[i] ~ /rootdir=/)) + a[i] = "rootdir=/root/3e\n" a[i] + print "[" i "]" + gsub(/9fat!9pcdisk/, "9fat!9pc3e", a[i]) + print a[i] + print "" + } + } +} diff --git a/sys/lib/dist.old/pc/inst/mountdist b/sys/lib/dist.old/pc/inst/mountdist new file mode 100755 index 000000000..8d171a1cc --- /dev/null +++ b/sys/lib/dist.old/pc/inst/mountdist @@ -0,0 +1,222 @@ +#!/bin/rc + +# prereq: mountfs configdist +# desc: locate and mount the distribution + +fn domount{ + if(! test -e $mountmedia(2)) + logprog $srvmedia + unmount /n/distmedia >[2]/dev/null + logprog $mountmedia +} + +fn exitifdone{ + if(test -f /n/dist/dist/replica/plan9.db) + exit +} + +fn trycdimage{ + if(test -f $1){ + rm -f /srv/9660.dist + unmount /n/dist + 9660srv 9660.dist >[2]/dev/null + logprog mount /srv/9660.dist /n/dist $1 + exitifdone + mountdist=notdone + export mountdist + exit notdone + } +} + +fn trycdimagebz2 { + if(test -f $1){ + echo -n 'bunzip2 < '^$1^' >/n/newfs/dist/plan9.iso' + bunzip2 < $1 >/n/newfs/dist/_plan9.iso && + mv /n/newfs/dist/_plan9.iso /n/newfs/dist/plan9.iso + echo + trycdimage /n/newfs/dist/plan9.iso + mountdist=notdone + export mountdist + exit notdone + } +} + +fn havedist { + test -f $1/dist/replica/plan9.db || + test -f $1/plan9.iso || + test -f $1/plan9.iso.bz2 +} + +switch($1){ +case checkready + if(! ~ $distisfrom local && ! ~ $download done){ + mountdist=notdone + export mountdist + } + if(! ~ $#mountmedia 0 1){ + if(domount){ + mountdist=done + export mountdist + if(mountdist checkdone) + exit + } + srvmedia=() + mountmedia=() + mountdist=ready + export srvmedia mountmedia mountdist + } + +case go + fat=() + ext2=() + x9660=() + fossil=() + + echo Please wait... Scanning storage devices... + + parts=`{ls /dev/sd??/* >[2]/dev/null | grep -v '/(plan9.*|ctl|log|raw)$'} + for (i in $parts) { + echo -n ' '^$i + n=`{echo $i | sed 's;/;_;g'} + if(! test -f /tmp/localpart.$n) + dd -if $i -bs 2048 -count 32 -of /tmp/localpart.$n >[2]/dev/null + if(isfat /tmp/localpart.$n) + fat=($fat $i) + if(isext2 /tmp/localpart.$n) + ext2=($ext2 $i) + if(is9660 /tmp/localpart.$n) + x9660=($x9660 $i) + if(isfossil $i) + fossil=($fossil $i) + echo + } + echo + echo The following storage media were detected. + echo Choose the one containing the distribution. + echo + for(i in $parts){ + switch($i){ + case $fat + echo ' '^$i^' (microsoft fat)' + case $ext2 + echo ' '^$i^' (linux ext2)' + case $x9660 + echo ' '^$i^' (iso9660 cdrom)' + case $fossil + echo ' '^$i^' (plan9 fossil)' + } + } + echo + + mountstatus=x + while(! ~ $mountstatus ''){ + prompt -w '' 'Distribution disk' $fat $x9660 $fossil + disk=$rd + + srvmedia=() + mountmedia=() + switch($disk){ + case $fs + mountmedia=(bind /n/newfs /n/distmedia) + case $fat + srvmedia=(dossrv) + mountmedia=(mount /srv/dos /n/distmedia $disk) + case $ext2 + srvmedia=(ext2srv -r) + mountmedia=(mount /srv/ext2 /n/distmedia $disk) + case $x9660 + srvmedia=(9660srv) + mountmedia=(mount /srv/9660 /n/distmedia $disk) + case $fossil + echo 'srv fossil.mountdist' > /tmp/fossi.conf + echo 'fsys main config '^$disk >> /tmp/fossil.conf + echo 'fsys main open -AWVP' >> /tmp/fossil.conf + echo 'fsys main' >> /tmp/fossil.conf + srvmedia=(fossil/fossil -c '. /tmp/fossil.conf') + mountmedia=(mount /srv/fossil.mountdist /n/distmedia) + case * + echo Unknown disk type '(cannot happen)' + exit oops + } + export srvmedia mountmedia + domount + mountstatus=$status + } + + first=yes + dir=/ + while(~ $first yes || ! havedist /n/distmedia/$dir){ + if(~ $first yes){ + echo + echo Which directory contains the distribution? + echo 'Any of the following will suffice (in order of preference):' + echo ' - the root directory of the cd image' + echo ' - the directory containing plan9.iso' + echo ' - the directory containing plan9.iso.bz2' + echo 'Typing `browse'' will put you in a shell that you can use to' + echo 'look for the directory.' + echo + first=no + } + + prompt -d browse 'Location of archives' + dir=$rd + if(~ $dir browse){ + echo This is a simple shell. Commands are: + echo ' cd directory - change to directory' + echo ' lc - list contents of current directory' + echo ' exit - exit shell' + echo + echo 'Move to the directory containing the distribution' + echo 'and then exit.' + echo + oifs=$ifs + ifs=$nl + dir=`{cdsh -r /n/distmedia} + ifs=$oifs + } + if(~ $#dir 0) + dir=safdsfdsfdsf + if(! ~ $#dir 1) + dir=$"dir + if(! havedist /n/distmedia/$dir) + echo 'No distribution found in '^`{cleanname /$dir} + } + + distmediadir=$dir + export distmediadir + +case checkdone + if(! ~ $#distmediadir 1){ + mountdist=notdone + export mountdist + exit notdone + } + if(! havedist /n/distmedia/$distmediadir && ! havedist /n/newfs/dist){ + mountdist=notdone + export mountdist + exit notdone + } + + exitifdone + + if(test -f /n/distmedia/$distmediadir/dist/replica/plan9.db){ + bind /n/distmedia/$distmediadir /n/dist + bind -a /n/dist/386/bin /bin + bind -a /n/dist/rc/bin /bin + exitifdone + mountdist=notdone + export mountdist + exit notdone + } + + trycdimage /n/distmedia/$distmediadir/plan9.iso + trycdimage /n/newfs/dist/plan9.iso + + trycdimagebz2 /n/distmedia/$distmediadir/plan9.iso.bz2 + trycdimagebz2 /n/newfs/dist/plan9.iso.bz2 + + mountdist=notdone + export mountdist + exit notdone +} diff --git a/sys/lib/dist.old/pc/inst/mountfossil b/sys/lib/dist.old/pc/inst/mountfossil new file mode 100755 index 000000000..e98a3f48c --- /dev/null +++ b/sys/lib/dist.old/pc/inst/mountfossil @@ -0,0 +1,104 @@ +#!/bin/rc + +switch($1){ +case checkready checkdone + if(! ~ $fmtfossil done){ + mountfs=notdone + export mountfs + exit + } + if(! test -f /dev/sd*/fossil* && ! test -f /dev/fs/fossil*){ + mountfs=notdone + export mountfs + exit + } + if(! ~ $#fossil 1 || ! test -f $fossil){ + mountfs=ready + export mountfs + exit + } + if(! ps | grep -s ' fossil$'){ + echo 'srv -p fscons' > /env/fossilconf + echo 'srv -AP fossil' >> /env/fossilconf + fossil/conf $fossil | sed 's/^fsys main open .*/& -AWVP/' | + sed 's/^fsys main snaptime .*//' >> /env/fossilconf + if(! logprog fossil/fossil -c .' /env/fossilconf'>>[2]/srv/log){ + echo 'fossil: '^$status + mountfs=ready + export mountfs + exit oops + } + if(! test -f /srv/fossil){ + echo 'fossil did not create /srv/fossil' + mountfs=ready + exit oops + } + cat /srv/fscons >>/srv/log & + if(! logprog mount -c /srv/fossil /n/newfs){ + echo 'mount: '^$status + mountfs=ready + export mountfs + exit oops + } + fs=$fossil + export fs + } + if(! test -s /n/newfs/adm/users){ + echo fsys main create /active/adm adm sys d775 >>/srv/fscons + echo fsys main create /active/adm/users adm sys 664 >>/srv/fscons + echo uname upas :upas >>/srv/fscons + echo users -w >>/srv/fscons + sleep 2 + } + if(! test -s /n/newfs/adm/users){ + echo 'could not create /adm/users' + mountfs=ready + export mountfs + exit oops + } + for(i in dist dist/replica dist/replica/client){ + if(! test -d /n/newfs/$i) + echo fsys main create /active/$i sys sys d775 >>/srv/fscons + sleep 2 + } + if(! test -d /n/newfs/dist/replica/client){ + echo 'could not create /dist/replica/client' + mountfs=ready + export mountfs + exit oops + } + if(! test -e /n/newfs/dist/replica/client/plan9.db){ + echo fsys main create /active/dist/replica/client/plan9.db sys sys 664 >>/srv/fscons + echo fsys main create /active/dist/replica/client/plan9.log sys sys a664 >>/srv/fscons + } + if(test -d /n/newfs/dist/replica/client && test -f /n/newfs/adm/users){ + mountfs=done + export mountfs + exit + } + mountfs=ready + export mountfs + exit + +case go + echo 'The following partitions named fossil* were found.' + echo + echo 'Please choose one to use as the installation file system' + echo 'for your Plan 9 installation.' + echo + files=(`{ls /dev/sd*/fossil* /dev/fs/fossil* >[2]/dev/null}) + ls -l $files + echo + if(~ $#fossil 1 && ~ $fossil $files) + default=(-d $fossil) + if not if(~ $#files 1) + default=(-d $files) + if not + default=() + prompt $default 'Fossil partition' $files + slay fossil|rc + fossil=$rd + export fossil +} + + diff --git a/sys/lib/dist.old/pc/inst/mountfs b/sys/lib/dist.old/pc/inst/mountfs new file mode 100755 index 000000000..8aa9b16ff --- /dev/null +++ b/sys/lib/dist.old/pc/inst/mountfs @@ -0,0 +1,14 @@ +#!/bin/rc + +# desc: choose and mount file system partition +# prereq: configfs + +switch($fstype){ +case fossil fossil+venti + exec mountfossil $* +case * + mountfs=notdone + export mountfs + exit +} + diff --git a/sys/lib/dist.old/pc/inst/moveoldfs b/sys/lib/dist.old/pc/inst/moveoldfs new file mode 100755 index 000000000..819beeb39 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/moveoldfs @@ -0,0 +1,72 @@ +#!/bin/rc + +# desc: move an old third edition plan 9 file system out of the way +# prereq: mountfs + +rootfiles=(\ + 386\ + 68000\ + 68020\ + LICENSE\ + NOTICE\ + acme\ + adm\ + alpha\ + arm\ + cron\ + dist\ + fd\ + lib\ + lp\ + mail\ + mips\ + mnt\ + n\ + power\ + rc\ + sparc\ + sys\ + tmp\ + usr/glenda\ + wrap\ +) + +switch($1){ +case checkready + if(! test -d /n/kfs/wrap){ + moveoldfs=done + export moveoldfs + } + +case go + if(test -d /n/kfs/wrap){ + echo 'You have a Third Edition Plan 9 installation on '^$fs^'.' + echo 'We need to move the old file system out of the way (into /3e)' + echo 'in order to continue.' + echo + prompt 'Move old file system' y n + switch($rd){ + case y + kname=`{kfsname $fs} + log Moving old Plan 9 installation into /3e on kfs + logprog disk/kfscmd -n$kname 'create /3e sys sys 555 d' >>[2]/srv/log + logprog disk/kfscmd -n$kname 'create /3e/usr sys sys 555 d' >>[2]/srv/log + for(i in $rootfiles) + if(test -e /n/kfs/$i) + logprog disk/kfscmd -n$kname 'rename /'^$i^' /3e/'^$i + # copy extant /adm/users in case there have been modifications + logprog disk/kfscmd -n$kname 'create /adm adm adm 555 d' >>[2]/srv/log + logprog cp /n/kfs/3e/adm/users /n/kfs/adm/users >>[2]/srv/log + + case n + echo 'Okay, but we can''t continue.' + echo + } + } + +case checkdone + if(test -d /n/kfs/wrap){ + moveoldfs=notdone + export moveoldfs + } +} diff --git a/sys/lib/dist.old/pc/inst/partdisk b/sys/lib/dist.old/pc/inst/partdisk new file mode 100755 index 000000000..430d45f3f --- /dev/null +++ b/sys/lib/dist.old/pc/inst/partdisk @@ -0,0 +1,73 @@ +#!/bin/rc + +# desc: edit partition tables (e.g., to create a plan 9 partition) +# prereq: configfs + +switch($1){ +case go + disks=`{ls /dev/sd*/data >[2]/dev/null | sed 's!/dev/(sd..)/data!\1!'} + if(~ $#disks 0) { + echo 'No disk devices were found on your system.' + echo 'The installation process cannot continue.' + exit giveup + } + + echo 'The following disk devices were found.' + echo + for(i in $disks) { + desc=`{cat /dev/$i/ctl | sed 1q | sed 's/inquiry //'} + echo $i '-' $desc + echo e | disk/fdisk -r /dev/$i/data >[2]/dev/null | grep -v '^ mbr' + echo + } + + okay=no + defdisk=$disks(1) + + if(~ $#disks 1) + default=(-d $disks) + if not + default=() + prompt $default 'Disk to partition' $disks + disk=$rd + + if(! hasmbr /dev/$disk/data) { + echo 'The disk you selected HAS NO master boot record on its first sector.' + echo '(Perhaps it is a completely blank disk.)' + echo 'You need a master boot record to use the disk.' + echo 'Should we install a default master boot record?' + echo + prompt 'Install mbr' y n + switch($rd) { + case y + disk/mbr -m /386/mbr /dev/$disk/data + pickdisk=done + } + } + echo + echo 'This is disk/fdisk; use it to create a Plan 9 partition.' + echo 'If there is enough room, a Plan 9 partition will be' + echo 'suggested; you can probably just type ''w'' and then ''q''.' + echo + disk/fdisk -a /dev/$disk/data + disk/fdisk -p /dev/$disk/data >/dev/$disk/ctl >[2]/dev/null + for(i in /dev/sd*/plan9*){ + if(test -f $i){ + d=`{basename -d $i} + disk/prep -p $i >$d/ctl >[2]/dev/null + } + } + +case checkdone + # we want at least one disk with both an mbr and a plan9 partition + mbrandplan9=0 + disks=`{ls /dev/sd*/plan9 >[2]/dev/null | sed 's!/dev/(sd..)/plan9!\1!'} + for(disk in $disks) { + if(hasmbr /dev/$disk/data) + mbrandplan9=1 + } + if(~ $mbrandplan9 0){ + partdisk=notdone + export partdisk + } +} diff --git a/sys/lib/dist.old/pc/inst/prepdisk b/sys/lib/dist.old/pc/inst/prepdisk new file mode 100755 index 000000000..6ef4a92f8 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/prepdisk @@ -0,0 +1,63 @@ +#!/bin/rc + +# desc: subdivide plan 9 disk partition +# prereq: partdisk + +fn autotype { + if(~ $fstype fossil) + echo -a 9fat -a nvram -a fossil -a swap + if(~ $fstype fossil+venti) + echo -a 9fat -a nvram -a arenas -a isect -a fossil -a swap # -a other +} + +switch($1) { +case checkready + if(! test -f /dev/sd*/plan9*){ + prepdisk=notdone + export prepdisk + } + +case go + echo 'The following Plan 9 disk partitions were found.' + echo + disks=(/dev/sd*/plan9*) + for (i in $disks){ + echo $i + echo q | disk/prep -r $i >[2]/dev/null + echo + } + if(~ $#disks 1) + default=(-d $disks) + if not + default=() + prompt $default 'Plan 9 partition to subdivide' $disks + disk=$rd + + echo 'This is disk/prep; use it to subdivide the Plan 9 partition.' + echo 'If it is not yet subdivided, a sensible layout will be suggested;' + echo 'you can probably just type ''w'' and then ''q''.' + echo + disk/prep `{autotype} $disk + disk/prep -p $disk >`{basename -d $disk}^/ctl >[2]/dev/null + +case checkdone + if(! test -f /dev/sd*/9fat) + prepdisk=ready + + if(! ~ $prepdisk ready){ + prepdisk=done + switch($fstype){ + case fossil + if(! test -f /dev/sd*/fossil* && ! test -f /dev/fs/fossil*) + prepdisk=ready + case fossil+venti + if(! test -f /dev/sd*/fossil* && ! test -f /dev/fs/fossil*) + prepdisk=ready + if(! test -f /dev/sd*/arenas && ! test -f /dev/fs/arenas*) + prepdisk=ready + if(! test -f /dev/sd*/isect && ! test -f /dev/fs/isect*) + prepdisk=ready + } + } + export prepdisk +} diff --git a/sys/lib/dist.old/pc/inst/replcfg b/sys/lib/dist.old/pc/inst/replcfg new file mode 100755 index 000000000..30aed8607 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/replcfg @@ -0,0 +1,18 @@ +#!/bin/rc + +s=/n/dist/dist/replica +serverroot=/n/dist +serverlog=$s/plan9.log +serverproto=$s/plan9.proto +fn servermount { status='' } +fn serverupdate { status='' } + +fn clientmount { status='' } +c=/n/newfs/dist/replica +clientroot=/n/newfs +clientproto=$c/plan9.proto +clientdb=$c/client/plan9.db +clientexclude=(dist/replica/client) +clientlog=$c/client/plan9.log + +applyopt=(-t -u -T$c/client/plan9.time) diff --git a/sys/lib/dist.old/pc/inst/startether b/sys/lib/dist.old/pc/inst/startether new file mode 100755 index 000000000..077504c1a --- /dev/null +++ b/sys/lib/dist.old/pc/inst/startether @@ -0,0 +1,30 @@ +#!/bin/rc + +# desc: activate ethernet card +# prereq: configether + +switch($1) { +case checkready + if(isipdevup /net/ether0) { + startether=done + export startether + } + +case go + if(isipdevup /net/ether0) + exit + + log starting ethernet $ethermethod config + switch($ethermethod) { + case manual + ip/ipconfig -g $gwaddr ether /net/ether0 $ipaddr $ipmask >>[2]/srv/log + case dhcp + ip/ipconfig $dhcphost -D >>/srv/log >[2=1] + } + +case checkdone + if(! isipdevup /net/ether0) { + startether=notdone + export startether + } +} diff --git a/sys/lib/dist.old/pc/inst/startppp b/sys/lib/dist.old/pc/inst/startppp new file mode 100755 index 000000000..02bc090ef --- /dev/null +++ b/sys/lib/dist.old/pc/inst/startppp @@ -0,0 +1,30 @@ +#!/bin/rc + +# desc: activate ppp connection +# prereq: configppp + +switch($1) { +case checkready checkdone + if (isipdevup '^pkt[0-9]') + startppp=done + export startppp + +case go + if(isipdevup '^pkt[0-9]') + exit + + ctl=$pppdev^ctl + echo b115200 >$ctl + + switch($pppmethod) { + case manual + echo + echo 'Please dial the modem, and type ctl-d when PPP has started.' + echo 'You may need to type ctl-m to send modem commands.' + echo + ip/ppp -f -u -b b^$pppbaud -p /dev/^$pppdev + + case auto + ip/ppp -f -b b^$pppbaud -p /dev/^$pppdev -s $"pppuser:$"ppppasswd -t 'atdt'^$"pppphone + } +} diff --git a/sys/lib/dist.old/pc/inst/startwin b/sys/lib/dist.old/pc/inst/startwin new file mode 100755 index 000000000..bcd542890 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/startwin @@ -0,0 +1,46 @@ +#!/bin/rc + +fn time { date | sed 's/.........$//'} + +rm -f /srv/log + +if(~ $#* 2) { + wid=$1 + ht=$2 +} +if not { + scr=(`{cat /dev/draw/new >[2]/dev/null || status=''}) + wid=$scr(7) + ht=$scr(8) +} + +if(test $ht -gt 800) + ht=800 + +if(test $wid -gt 800) + wid=800 + +statwid=`{hoc -e $wid^'*.2'} +if(test $statwid -lt 180) + statwid=180 +if(test $statwid -gt 300) + statwid=300 + +logwid=`{hoc -e $wid^-$statwid} +if(test $logwid -gt 1000) + logwid=1000 + +loght=`{hoc -e $ht^'*.25'} +if(test $loght -lt 130) + loght=130 + +textht=`{hoc -e $ht^-$loght} + +window 0,$textht,$statwid,$ht stats -lmisce +window $statwid,$textht,^`{hoc -e $logwid+$statwid}^,$ht tailfsrv +window 0,0,^`{hoc -e $logwid+$statwid}^,$textht inst/mainloop + +while(! test -f /srv/log) + sleep 1 + +log `{time} Installation process started diff --git a/sys/lib/dist.old/pc/inst/stop b/sys/lib/dist.old/pc/inst/stop new file mode 100755 index 000000000..a1d48694f --- /dev/null +++ b/sys/lib/dist.old/pc/inst/stop @@ -0,0 +1,50 @@ +#!/bin/rc + +# desc: save the current installation state, to be resumed later +# prereq: +# mustdo: + +switch($1) { +case checkdone + stop=notdone + export stop + +case checkready + if(~ $cdboot yes){ + stop=notdone + export stop + } + +case go + coherence + switch($2){ + case finished + echo 'We need to write the state of the current installation to the install floppy,' + echo 'so that you can pick up from here if, for example, you want to set up' + echo 'more boot methods.' + echo + case * + echo 'We need to write the state of the current installation to the install floppy.' + echo 'so that you can pick up from here when you wish to continue.' + echo + } + echo -n 'Please make sure the install floppy is in the floppy drive and press enter.' + read >/dev/null >[2]/dev/null + + if(! a:) { + echo 'Couldn''t mount the floppy disk; sorry.' + exit + } + + if(cp /tmp/vars /n/a:/9inst.cnf || cp /tmp/vars /n/a:/9inst.cnf) { + echo 'Your install state has been saved to the install floppy.' + if(~ $2 finished){ + echo + echo 'Congratulations; you''ve completed the install.' + } + echo + halt + } + + echo 'Couldn''t save the state to your install floppy. Sorry.' +} diff --git a/sys/lib/dist.old/pc/inst/stopether b/sys/lib/dist.old/pc/inst/stopether new file mode 100755 index 000000000..59063f0e0 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/stopether @@ -0,0 +1,20 @@ +#!/bin/rc + +# desc: shut down the ethernet connection +# prereq: + + +switch($1) { +case checkready + if(! isipdevup /net/ether0) { + stopether=notdone + export stopether + } + +case go + ip/ipconfig ether /net/ether0 unbind + +case checkdone + stopether=notdone + export stopether +} diff --git a/sys/lib/dist.old/pc/inst/stopppp b/sys/lib/dist.old/pc/inst/stopppp new file mode 100755 index 000000000..70b9ce1fe --- /dev/null +++ b/sys/lib/dist.old/pc/inst/stopppp @@ -0,0 +1,19 @@ +#!/bin/rc + +# desc: shut down the ppp connection +# prereq: + +switch($1) { +case checkready + if(! ~ $#pppdev 1 || ! isipdevup '^pkt[0-9]') { + stopppp=notdone + export stopppp + } + +case go + kill ppp | rc + +case checkdone + stopppp=notdone + export stopppp +} diff --git a/sys/lib/dist.old/pc/inst/textonly b/sys/lib/dist.old/pc/inst/textonly new file mode 100755 index 000000000..1c3922ce4 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/textonly @@ -0,0 +1,15 @@ +#!/bin/rc + +# text-only install +cd /bin/inst +. defs + +textinst=1 +export textinst + +tailfsrv & +while(! test -f /srv/log) + sleep 1 +log `{date} Installation process started +inst/mainloop + diff --git a/sys/lib/dist.old/pc/inst/watchfd b/sys/lib/dist.old/pc/inst/watchfd new file mode 100755 index 000000000..ca37294e3 --- /dev/null +++ b/sys/lib/dist.old/pc/inst/watchfd @@ -0,0 +1,17 @@ +#!/bin/rc + +p=`{ps | grep $1 | sed 's/[^ ]* +([^ ]+) .*/\1/' } +while(! ~ $#p 1) { + sleep 1 + p=`{ps | grep $1 | sed 's/[^ ]* +([^ ]+) .*/\1/'} +} +p=$p(1) + +baropt='-w 145,129,445,168' +if(~ $textinst 1) + baropt=-t + +{ + while(test -f /proc/$p/fd) + grep '^ *'^$2^' ' /proc/$p/fd >[2]/dev/null +} | awk '{print $9 " '^$3^'"; fflush("/dev/stdout")}' | bargraph $baropt $4 diff --git a/sys/lib/dist.old/pc/inst/xxx b/sys/lib/dist.old/pc/inst/xxx new file mode 100755 index 000000000..56b4eb23a --- /dev/null +++ b/sys/lib/dist.old/pc/inst/xxx @@ -0,0 +1,9 @@ +#!/bin/rc + +ip/ipconfig +echo ' auth=204.178.31.3 + authdom=cs.bell-labs.com' >>/net/ndb +ndb/cs +auth/factotum +bind -a /bin/auth / +cpu -e clear -h tcp!204.178.31.2 |