1#!/bin/sh - 2# 3# @(#)MAKEDEV 8.1 (Berkeley) 06/09/93 4# 5 6# Device "make" file. Valid arguments: 7# std standard devices 8# local configuration specific devices 9# Tapes: 10# ht* massbus tm03 & tu?? 11# tm* unibus tm11 & te10 emulations (e.g. Emulex tc-11) 12# tms* unibus/qbus TMSCP (e.g. TU81, TK50) 13# ts* unibus ts11 14# mt* massbus tu78 15# ut* unibus tu45 emulations (e.g.si 9700) 16# uu* tu58 cassettes on dl11 controller 17# Disks: 18# hp* massbus rm?? 19# hk* unibus rk06 and rk07 20# up* other unibus devices (e.g. on Emulex sc-21v controller) 21# ra* unibus uda50 w/ ra?? 22# kra* bi kdb50 w/ ra?? 23# rl* unibus rl02 24# rb* 730 idc w/ rb80 and/or rb02 25# rx* unibus rx211 floppy disk 26# Terminal multiplexors: 27# dz* unibus dz11 and dz32 28# dh* unibus dh11 and emulations (e.g. Able dmax, Emulex cs-11) 29# dmf* unibus dmf32 30# dhu* unibus dhu11 31# dmz* unibus dmz32 32# Pseudo terminals: 33# pty* set of 16 master and slave pseudo terminals 34# Printers: 35# ct* unibus parallel interface to CAT typesetter 36# lp* unibus lp11 parallel interface 37# va* unibus varian parallel interface 38# vp* unibus versatec parallel interface 39# Call units: 40# dn* unibus dn11 and emulations (e.g. Able Quadracall) 41# Special purpose devices: 42# ik* unibus interface to ikonas frame buffer 43# ps* unibus interface to e&s picture system 2 44# ad* unibus interface to data translation a/d converter 45# np* unibus ethernet co-processor interface, for downloading. 46# qv* qvss (microvax) display 47# ttyv0 qvss (microvax) display reserved pty 48PATH=/sbin:/bin:/usr/bin 49umask 77 50for i 51do 52case $i in 53 54std) 55 mknod console c 0 0 56 mknod drum c 7 0 ; chmod 640 drum ; chgrp kmem drum 57 mknod floppy c 8 0 58 mknod crl c 35 0 59 mknod csa1 c 51 0 60 mknod csa2 c 51 1 61 mknod tu0 b 8 0 62 mknod tu1 b 8 1 63 mknod kUmem c 3 3 ; chmod 600 kUmem 64 mknod kmem c 3 1 ; chmod 640 kmem ; chgrp kmem kmem 65 mknod mem c 3 0 ; chmod 640 mem ; chgrp kmem mem 66 mknod null c 3 2 ; chmod 666 null 67 mknod zero c 3 12 ; chmod 666 zero 68 mknod tty c 2 0 ; chmod 666 tty 69 mknod klog c 33 0 ; chmod 600 klog 70 mknod stdin c 53 0 ; chmod 666 stdin 71 mknod stdout c 53 1 ; chmod 666 stdout 72 mknod stderr c 53 2 ; chmod 666 stderr 73 mkdir fd > /dev/null 2>&1 74 (cd fd && eval `echo "" | awk ' BEGIN { \ 75 for (i = 0; i < 64; i++) \ 76 printf("mknod %d c 53 %d;", i, i)}'`) 77 chown -R bin.bin fd 78 chmod 555 fd 79 chmod 666 fd/* 80 ;; 81 82ht*|tm*|tms*|ts*|ut*) 83 umask 0 ; unit=`expr $i : '[^0-9]*\(.*\)'` 84 case $i in 85 ht*) blk=1; chr=5 ;; 86 tms*) blk=15; chr=38;; 87 tm*) blk=5; chr=14;; 88 ts*) blk=6; chr=16;; 89 ut*) blk=10; chr=17;; 90 esac 91 case $unit in 92 0|1|2|3|4|5|6|7) 93 four=`expr $unit + 4` ; eight=`expr $unit + 8` 94 twelve=`expr $unit + 12`; twenty=`expr $unit + 20` 95 mknod mt$unit b $blk $unit 96 mknod mt$four b $blk $four 97 mknod mt$eight b $blk $eight 98 mknod mt$twelve b $blk $twelve 99 mknod nmt$unit b $blk $four ;: sanity w/pdp11 v7 100 mknod nmt$eight b $blk $twelve ;: ditto 101 mknod nrmt$unit c $chr $four ;: sanity w/pdp11 v7 102 mknod nrmt$eight c $chr $twelve ;: ditto 103 mknod rmt$unit c $chr $unit 104 mknod rmt$four c $chr $four 105 mknod rmt$eight c $chr $eight 106 mknod rmt$twelve c $chr $twelve 107 if [ $i = ut ] 108 then 109 mknod mt$twenty b $blk $twenty 110 mknod rmt$twenty c $chr $twenty 111 fi 112 ;; 113 *) 114 echo bad unit for tape in: $1 115 ;; 116 esac 117 umask 77 118 ;; 119 120mt*) 121 umask 0 ; unit=`expr $i : '..\(.*\)'` 122 case $i in 123 mt*) blk=7; chr=19;; 124 esac 125 case $unit in 126 0|1|2|3|4|5|6|7) 127 eight=`expr $unit + 0`; 128 twelve=`expr $unit + 4`; 129 sixteen=`expr $unit + 8`; 130 twenty=`expr $unit + 12`; 131 mknod mt8 b $blk $eight 132 mknod mt12 b $blk $twelve 133 mknod mt16 b $blk $sixteen 134 mknod mt20 b $blk $twenty 135 mknod nmt8 b $blk $twelve ;: ditto 136 mknod nrmt8 c $chr $twelve ;: ditto 137 mknod rmt8 c $chr $eight 138 mknod rmt12 c $chr $twelve 139 mknod rmt16 c $chr $sixteen 140 mknod rmt20 c $chr $twenty 141 mknod nmt16 b $blk $twenty ;: ditto 142 mknod nrmt16 c $chr $twenty ;: ditto 143 ;; 144 *) 145 echo bad unit for tape in: $1 146 ;; 147 esac 148 umask 77 149 ;; 150 151hp*|hk*|up*|ra*|kra*|rl*|rb*) 152 umask 2 ; unit=`expr $i : '..\(.*\)'` 153 case $i in 154 hp*) name=hp; blk=0; chr=4;; 155 hk*) name=hk; blk=3; chr=11;; 156 up*) name=up; blk=2; chr=13;; 157 ra*) name=ra; blk=9; chr=9;; 158 kra*) name=kra; blk=16; chr=52;; 159 rb*) name=rb; blk=11; chr=23;; 160 rl*) name=rl; blk=14; chr=32;; 161 esac 162 case $unit in 163 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|\ 164 17|18|19|20|21|22|23|24|25|26|27|28|29|30|31) 165 mknod ${name}${unit}a b $blk `expr $unit '*' 8 + 0` 166 mknod ${name}${unit}b b $blk `expr $unit '*' 8 + 1` 167 mknod ${name}${unit}c b $blk `expr $unit '*' 8 + 2` 168 mknod ${name}${unit}g b $blk `expr $unit '*' 8 + 6` 169 mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0` 170 mknod r${name}${unit}b c $chr `expr $unit '*' 8 + 1` 171 mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2` 172 mknod r${name}${unit}g c $chr `expr $unit '*' 8 + 6` 173 if [ $name != hk ] 174 then 175 mknod ${name}${unit}d b $blk `expr $unit '*' 8 + 3` 176 mknod ${name}${unit}e b $blk `expr $unit '*' 8 + 4` 177 mknod ${name}${unit}f b $blk `expr $unit '*' 8 + 5` 178 mknod ${name}${unit}h b $blk `expr $unit '*' 8 + 7` 179 mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3` 180 mknod r${name}${unit}e c $chr `expr $unit '*' 8 + 4` 181 mknod r${name}${unit}f c $chr `expr $unit '*' 8 + 5` 182 mknod r${name}${unit}h c $chr `expr $unit '*' 8 + 7` 183 fi 184 chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h] 185 chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h] 186 ;; 187 *) 188 echo bad unit for disk in: $i 189 ;; 190 esac 191 umask 77 192 ;; 193 194rx*) 195 unit=`expr $i : '..\(.*\)'` 196 name=rx; chr=30; blk=12; 197 case $unit in 198 0|1|2|3|4|5|6|7) 199 mknod ${name}${unit} b $blk `expr $unit '*' 8 + 0` 200 mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0` 201 mknod r${name}${unit}b c $chr `expr $unit '*' 8 + 1` 202 mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2` 203 mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3` 204 ;; 205 *) 206 echo bad unit for floppy disk in: $i 207 ;; 208 esac 209 ;; 210 211uu*) 212 unit=`expr $i : '..\(.*\)'` 213 name=uu; blk=13; 214 case $unit in 215 0|1|2|3) 216 mknod ${name}${unit} b $blk `expr $unit '*' 2 + 0` 217 mknod ${name}${unit}a b $blk `expr $unit '*' 2 + 1` 218 ;; 219 *) 220 echo bad unit for uu cassette in: $i 221 ;; 222 esac 223 ;; 224 225dz*) 226 unit=`expr $i : 'dz\(.*\)'` 227 case $unit in 228 0|1|2|3|4|5|6|7) 229 eval `echo $unit | awk ' { u = $1 } END { 230 for (i = 0; i < 8; i++) 231 printf("mknod tty%02d c 1 %d; ",u*8+i,u*8+i); }'` 232 ;; 233 *) 234 echo bad unit for dz in: $i 235 ;; 236 esac 237 ;; 238 239dhu*|dh*|dmf*|dmz*) 240 case $i in 241 dmz*) name=dmz; major=37; count=24; 242 unit=`expr $i : "$name\(.*\)"` 243 case $unit in 244 0) ch=a ;; 1) ch=b ;; 2) ch=c ;; 3) ch=e ;; 245 4) ch=f ;; 5) ch=g ;; 246 *) echo bad unit for $name in: $i ;; 247 esac;; 248 dmf*) name=dmf; major=22; count=8; 249 unit=`expr $i : "$name\(.*\)"` 250 case $unit in 251 0) ch=A ;; 1) ch=B ;; 2) ch=C ;; 3) ch=E ;; 252 4) ch=F ;; 5) ch=G ;; 6) ch=H ;; 7) ch=I ;; 253 *) echo bad unit for $name in: $i ;; 254 esac;; 255 dhu*) name=dhu; major=34; count=16; 256 unit=`expr $i : "$name\(.*\)"`; 257 case $unit in 258 0) ch=S ;; 1) ch=T ;; 2) ch=U ;; 3) ch=V ;; 259 4) ch=W ;; 5) ch=X ;; 6) ch=Y ;; 7) ch=Z ;; 260 *) echo bad unit for $name in: $i ;; 261 esac;; 262 dh*) name=dh; major=12; count=16; 263 unit=`expr $i : "$name\(.*\)"` 264 case $unit in 265 0) ch=h ;; 1) ch=i ;; 2) ch=j ;; 3) ch=k ;; 266 4) ch=l ;; 5) ch=m ;; 6) ch=n ;; 7) ch=o ;; 267 *) echo bad unit for $name in: $i ;; 268 esac;; 269 esac 270 eval `echo $ch $unit $major $count | 271 awk ' { ch = $1; u = $4 * $2; m = $3; cnt = $4 } END { 272 for (i = 0; i < cnt; i++) 273 if (i < 10) 274 printf("mknod tty%s%x c %d %d; ",ch,i,m,u+i); 275 else 276 printf("mknod tty%s%c c %d %d; ",ch,87+i,m,u+i); }'` 277 ;; 278 279lp*|va*|vp*) 280 case $i in 281 lp*) name=lp; major=15;; 282 va*) name=va; major=10;; 283 vp*) name=vp; major=6;; 284 esac 285 unit=`expr $i : "$name\(.*\)"` 286 case $unit in 287 0|1|2|3|4|5|6|7) 288 mknod $i c $major $unit; 289 chmod 666 $i 290 ;; 291 *) 292 echo bad unit for $name in: $i 293 ;; 294 esac 295 ;; 296 297pty*) 298 class=`expr $i : 'pty\(.*\)'` 299 case $class in 300 0) offset=0 name=p;; 301 1) offset=16 name=q;; 302 2) offset=32 name=r;; 303 3) offset=48 name=s;; 304 4) offset=64 name=t;; 305 5) offset=80 name=u;; 306 *) echo bad unit for pty in: $i;; 307 esac 308 case $class in 309 0|1|2|3|4|5) 310 umask 0 311 eval `echo $offset $name | awk ' { b=$1; n=$2 } END { 312 for (i = 0; i < 16; i++) 313 printf("mknod tty%s%x c 20 %d; \ 314 mknod pty%s%x c 21 %d; ", \ 315 n, i, b+i, n, i, b+i); }'` 316 umask 77 317 ;; 318 esac 319 ;; 320 321np*) 322 class=`expr $i : 'np\(.*\)'` 323 case $class in 324 0) offset=0 name=0;; 325 1) offset=16 name=1;; 326 2) offset=32 name=2;; 327 *) echo bad unit for np in: $i;; 328 esac 329 case $class in 330 0|1|2) 331 eval `echo $offset | awk ' { b=$1 } END { 332 for (i = 0; i < 4; i++) 333 printf("mknod np%02d c 39 %d;", \ 334 b+i, b+i); }'` 335 ;; 336 esac 337 ;; 338 339dn*|ik*|ps*|ad*|ct*) 340 unit=`expr $i : '..\(.*\)'` 341 case $i in 342 ct*) name=ct; chr=18;; 343 dn*) name=cu; chr=24;; 344 ps*) name=ps; chr=27;; 345 ad*) name=ad; chr=29;; 346 ik*) name=ik; chr=31;; 347 esac 348 case $unit in 349 0|1|2|3|4|5|6|7) 350 umask 0 351 mknod ${name}${unit} c ${chr} ${unit} 352 umask 77 353 ;; 354 *) 355 echo bad unit for ${name} in: $i 356 ;; 357 esac 358 ;; 359 360qv0) 361 mknod qv0 c 40 0 362 mknod qvcons c 40 1 363 mknod mouse c 40 2 364 ;; 365 366ttyv0) 367 if [ ! -f ttyqe ]; then sh ./MAKEDEV pty1; fi 368 mv ttyqf ttyv0 369 mv ptyqf ptyv0 370 ;; 371 372local) 373 sh MAKEDEV.local 374 ;; 375esac 376done 377