ref: 7d87f85671fa453b83edbf578d5324c8f354850c
parent: fa9a40027b8ced000ea1c3d2dc5ed8eb44c6ad90
author: cinap_lenrek <cinap_lenrek@centraldogma>
date: Sun May 1 23:01:52 EDT 2011
inst: reintroduce iso mounting for usb, replace /rc/bin/inst/isxxx with /rc/bin/fstype, remove fossil/venti specific code, rename plan9.iso to 9front.iso
--- a/rc/bin/inst/bootsetup
+++ b/rc/bin/inst/bootsetup
@@ -29,7 +29,7 @@
}
need9fatformat=no
- if(! isfat $fat)
+ if(! ~ `{fstype $fat} dos)
need9fatformat=yes
if(! test -f /srv/dos)
dossrv
@@ -70,7 +70,8 @@
case checkdone
xxxfat=(/dev/sd*/9fat)
- if(! isfat $xxxfat(1) || ! ~ $didbootsetup 1){
+ xxxfat=$xxxfat(1)
+ if(! ~ `{fstype $xxxfat} dos || ! ~ $didbootsetup 1){
bootsetup=ready
export bootsetup
}
--- a/rc/bin/inst/download
+++ b/rc/bin/inst/download
@@ -33,22 +33,20 @@
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] aux/statusbar $baropt 'downloading '^plan9.iso.bz2)
+ mkdir -p /n/newfs/dist
+ if(! hget -vo /n/newfs/dist/_9front.iso.bz2 $installurl/9front.iso.bz2 |[2] aux/statusbar $baropt 'downloading '^9front.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
- }
+ mv /n/newfs/dist/_9front.iso.bz2 /n/newfs/dist/9front.iso.bz2
echo 'The distribution is downloaded.'
srvmedia=()
- mountmedia=(mount /srv/fossil /n/distmedia)
+ mountmedia=(mount /srv/cwfs /n/distmedia)
distmediadir=/dist
export distmediadir mountmedia distmedia
case checkdone
- if(! test -f /n/newfs/dist/plan9.iso.bz2) {
+ if(! test -f /n/newfs/dist/9front.iso.bz2) {
download=notdone
export download
}
--- a/rc/bin/inst/fmtfossil
+++ /dev/null
@@ -1,91 +1,0 @@
-#!/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.
-}
--- a/rc/bin/inst/fmtventi
+++ /dev/null
@@ -1,190 +1,0 @@
-#!/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!
-}
-
--- a/rc/bin/inst/is9660
+++ /dev/null
@@ -1,12 +1,0 @@
-#!/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
--- a/rc/bin/inst/isext2
+++ /dev/null
@@ -1,11 +1,0 @@
-#!/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
--- a/rc/bin/inst/isfat
+++ /dev/null
@@ -1,22 +1,0 @@
-#!/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
-
--- a/rc/bin/inst/isfossil
+++ /dev/null
@@ -1,16 +1,0 @@
-#!/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
-
--- a/rc/bin/inst/isventi
+++ /dev/null
@@ -1,13 +1,0 @@
-#!/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
-
--- a/rc/bin/inst/isventiarenas
+++ /dev/null
@@ -1,13 +1,0 @@
-#!/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
-
--- a/rc/bin/inst/isventiisect
+++ /dev/null
@@ -1,13 +1,0 @@
-#!/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
-
--- a/rc/bin/inst/main
+++ b/rc/bin/inst/main
@@ -14,12 +14,10 @@
tasks=(\
configfs\
partdisk prepdisk\
- fmtfossil\
mountfs\
configdist\
confignet\
mountdist\
- fmtventi\
download\
copydist\
bootsetup finish stop\
--- a/rc/bin/inst/mountdist
+++ b/rc/bin/inst/mountdist
@@ -16,9 +16,36 @@
}
fn havedist {
- test -f $1/LICENSE
+ test -f $1/LICENSE || test -f $1/9front.iso || test -f $1/9front.iso.bz2
}
+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/9front.iso'
+ bunzip2 < $1 >/n/newfs/dist/_9front.iso &&
+ mv /n/newfs/dist/_9front.iso /n/newfs/dist/9front.iso
+ echo
+ trycdimage /n/newfs/dist/9front.iso
+ mountdist=notdone
+ export mountdist
+ exit notdone
+ }
+}
+
+
switch($1){
case checkready
if(! ~ $distisfrom local && ! ~ $download done){
@@ -40,23 +67,20 @@
case go
fat=()
- ext2=()
x9660=()
echo Please wait... Scanning storage devices...
- parts=`{ls /dev/sd[A-Z][0-9]*/* >[2]/dev/null | grep -v '/(plan9.*|ctl|log|raw)$'}
+ parts=`{ls /dev/sd*/* >[2]/dev/null | grep -v '/(plan9.*|nvram|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)
+ t=`{fstype $i}
+ switch($t){
+ case dos
fat=($fat $i)
- if(isext2 /tmp/localpart.$n)
- ext2=($ext2 $i)
- if(is9660 /tmp/localpart.$n)
+ case 9660
x9660=($x9660 $i)
+ }
echo
}
echo
@@ -67,8 +91,6 @@
switch($i){
case $fat
echo ' '^$i^' (microsoft fat)'
- case $ext2
- echo ' '^$i^' (linux ext2)'
case $x9660
echo ' '^$i^' (iso9660 cdrom)'
}
@@ -80,7 +102,7 @@
default=()
if(! ~ $#cdboot 0 && ! ~ $#x9660 0)
default=(-d $x9660(1))
- prompt $default 'Distribution disk' $fat $x9660
+ prompt $default 'Distribution disk' $fat $x9660 $fs
disk=$rd
srvmedia=()
@@ -91,9 +113,6 @@
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)
@@ -114,6 +133,8 @@
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 9front.iso'
+ echo ' - the directory containing 9front.iso.bz2'
echo
first=no
}
@@ -145,7 +166,7 @@
exitifdone
- if(havedist /n/distmedia/$distmediadir){
+ if(test -f /n/distmedia/$distmediadir/LICENSE){
bind /n/distmedia/$distmediadir /n/dist
exitifdone
mountdist=notdone
@@ -152,6 +173,12 @@
export mountdist
exit notdone
}
+
+ trycdimage /n/distmedia/$distmediadir/9front.iso
+ trycdimage /n/newfs/dist/9front.iso
+
+ trycdimagebz2 /n/distmedia/$distmediadir/9front.iso.bz2
+ trycdimagebz2 /n/newfs/dist/9front.iso.bz2
mountdist=notdone
export mountdist
--- a/rc/bin/inst/mountfossil
+++ /dev/null
@@ -1,104 +1,0 @@
-#!/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
-}
-
-
--- a/rc/bin/inst/replcfg
+++ /dev/null
@@ -1,18 +1,0 @@
-#!/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)
--- a/sys/src/9/boot/local.rc
+++ b/sys/src/9/boot/local.rc
@@ -10,7 +10,7 @@
for(i in `{ls -p $d}){
p=$d/$i
switch($i){
- case ctl raw
+ case ctl raw log
;
case 9fat plan9 nvram
echo $p