]> git.lizzy.rs Git - plan9front.git/blob - rc/bin/inst/mountdist
inst: get rid of ppp configuration
[plan9front.git] / rc / bin / inst / mountdist
1 #!/bin/rc
2
3 # prereq: mountfs configdist
4 # desc: locate and mount the distribution
5
6 fn domount{
7         if(! test -e $mountmedia(2))
8                 logprog $srvmedia
9         unmount /n/distmedia >[2]/dev/null
10         logprog $mountmedia
11 }
12
13 fn exitifdone{
14         if(test -d /n/dist/dist/plan9front)
15                 exit
16 }
17
18 fn havedist {
19         test -d $1/dist/plan9front || test -f $1/9front.iso || test -f $1/9front.iso.bz2
20 }
21
22 fn trycdimage{
23         if(test -f $1){
24                 rm -f /srv/9660.dist
25                 unmount /n/dist >[2]/dev/null
26                 9660srv 9660.dist >[2]/dev/null
27                 logprog mount /srv/9660.dist /n/dist $1
28                 exitifdone
29                 mountdist=notdone
30                 export mountdist
31                 exit notdone
32         }
33 }
34
35 fn trycdimagebz2 {
36         if(test -f $1){
37                 mkdir -p /n/newfs/dist
38                 echo -n 'bunzip2 < '^$1^' >/n/newfs/dist/9front.iso'
39                 bunzip2 < $1 >/n/newfs/dist/_9front.iso &&
40                 mv /n/newfs/dist/_9front.iso /n/newfs/dist/9front.iso
41                 echo
42                 trycdimage /n/newfs/dist/9front.iso
43                 mountdist=notdone
44                 export mountdist
45                 exit notdone
46         }
47 }
48
49
50 switch($1){
51 case checkready
52         if(! ~ $distisfrom local && ! ~ $download done){
53                 mountdist=notdone
54                 export mountdist
55         }
56         if(! ~ $#mountmedia 0 1){
57                 if(domount){
58                         mountdist=done
59                         export mountdist
60                         if(./mountdist checkdone)
61                                 exit
62                 }
63                 srvmedia=()
64                 mountmedia=()
65                 mountdist=ready
66                 export srvmedia mountmedia mountdist
67         }
68                 
69 case go
70         fat=()
71         x9660=()
72
73         echo Please wait... Scanning storage devices...
74
75         parts=`{ls /dev/sd*/* /srv/sd*/*.iso >[2]/dev/null |
76                 grep -v '/(plan9.*|nvram|ctl|log|raw)$'}
77         for (i in $parts) {
78                 echo -n '       '^$i
79                 t=`{fstype $i}
80                 switch($t){
81                 case dos
82                         fat=($fat $i)
83                 case 9660
84                         x9660=($x9660 $i)
85                 }
86                 echo
87         }
88         echo
89         echo The following storage media were detected.
90         echo Choose the one containing the distribution.
91         echo
92         for(i in $parts){
93                 switch($i){
94                 case $fat
95                         echo    '       '^$i^' (microsoft fat)'
96                 case $x9660
97                         echo    '       '^$i^' (iso9660 cdrom)'
98                 }
99         }
100         echo
101
102         mountstatus=x
103         while(! ~ $mountstatus ''){
104                 default=()
105                 if(! ~ $#cdboot 0)
106                         default=(-d /)
107                 prompt $default 'Distribution disk' $fat $x9660 $fs /
108                 disk=$rd
109
110                 srvmedia=()
111                 mountmedia=()
112                 switch($disk){
113                 case /
114                         mountmedia=(mount /srv/boot /n/distmedia)
115                 case $fs
116                         mountmedia=(bind /n/newfs /n/distmedia)
117                 case $fat
118                         srvmedia=(dossrv)
119                         mountmedia=(mount /srv/dos /n/distmedia $disk)
120                 case $x9660
121                         srvmedia=(9660srv)
122                         mountmedia=(mount /srv/9660 /n/distmedia $disk)
123                 case *
124                         echo Unknown disk type '(cannot happen)'
125                         exit oops
126                 }
127                 export srvmedia mountmedia
128                 domount
129                 mountstatus=$status
130         }
131
132         first=yes
133         dir=/
134         while(~ $first yes || ! havedist /n/distmedia/$dir){
135                 if(~ $first yes){
136                         echo
137                         echo Which directory contains the distribution?
138                         echo 'Any of the following will suffice (in order of preference):'
139                         echo '  - the root directory of the cd image'
140                         echo '  - the directory containing 9front.iso'
141                         echo '  - the directory containing 9front.iso.bz2'
142                         echo
143                         first=no
144                 }
145
146                 prompt -d $dir 'Location of archives'
147                 dir=$rd
148                 if(~ $#dir 0)
149                         dir=/
150                 if(! ~ $#dir 1)
151                         dir=$"dir
152                 if(! havedist /n/distmedia/$dir)
153                         echo 'No distribution found in '^`{cleanname /$dir}
154         }
155
156         distmediadir=$dir
157         export distmediadir
158
159 case checkdone
160         if(! ~ $#distmediadir 1){
161                 mountdist=notdone
162                 export mountdist
163                 exit notdone
164         }
165         if(! havedist /n/distmedia/$distmediadir && ! havedist /n/newfs/dist){
166                 mountdist=notdone
167                 export mountdist
168                 exit notdone
169         }
170
171         exitifdone
172
173         if(test -d /n/distmedia/$distmediadir/dist/plan9front){
174                 bind /n/distmedia/$distmediadir /n/dist
175                 exitifdone
176                 mountdist=notdone
177                 export mountdist
178                 exit notdone
179         }
180
181         trycdimage /n/distmedia/$distmediadir/9front.iso
182         trycdimage /n/newfs/dist/9front.iso
183
184         trycdimagebz2 /n/distmedia/$distmediadir/9front.iso.bz2
185         trycdimagebz2 /n/newfs/dist/9front.iso.bz2
186
187         mountdist=notdone
188         export mountdist
189         exit notdone
190 }