#!/bin/sh - # # Copyright (c) 1980 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)MAKEDEV 4.27.6 (2.11BSD) 1999/2/19 # # Device "make" file. Valid arguments: # std standard devices # local configuration specific devices # fd file descriptor driver # Tapes: # ht* unibus tu77 & te16 # tm* unibus tm11 & te10 emulations (e.g. Emulex tc-11) # ts* unibus ts11 # tu* tmscp (tk50/tu81) # Disks: # br* unibus Eaton br1538 or br1711 # hk* unibus rk06 and rk07 # ra* unibus uda50 w/ ra?? # rk* unibus rk05 # rl* unibus rl01/rl02 # rx* unibus rx02 # si* unibus cdc 9766 w/ si 9500 # xp* unibus rm02/03/05, rp04/05/06, diva, eagle, cdc9766, fuji 160. # Terminal multiplexors: # dl* dl-11 units other than the console # dz* unibus dz11 and dz32 # dh* unibus dh11 and emulations (e.g. Able dmax, Emulex cs-11) # dmf* unibus dmf32 # dhu* unibus dhu11 # dmz* unibus dmz32 # dhv* qbus dhv11 # Pseudo terminals: # pty* set of 16 master and slave pseudo terminals # Printers: # lp* unibus lp11 parallel interface # va* unibus varian parallel interface # vp* unibus versatec parallel interface # Call units: # Special purpose devices: # dr* unibus dr11 # ram* memory disk # dn* dn11 dialer # ingreslock Ingres lock driver. PATH=/etc:/sbin:/usr/sbin:/bin:/usr/bin umask 77 for i do case $i in std) mknod console c 0 0 # mknod kUmem c 1 3 ; chmod 600 kUmem ;: untested mknod kmem c 1 1 ; chmod 640 kmem ; chgrp kmem kmem mknod mem c 1 0 ; chmod 640 mem ; chgrp kmem mem mknod null c 1 2 ; chmod 666 null mknod zero c 1 3 ; chmod 444 zero mknod tty c 9 0 ; chmod 666 tty mknod klog c 22 0 ; chmod 600 klog mknod errlog c 22 1 ; chmod 600 errlog mknod acctlog c 22 2 ; chmod 600 acctlog ;; fd) umask 0 rm -rf fd rm -f stdin stdout stderr mkdir fd chmod 755 fd mknod stdin c 26 0 mknod stdout c 26 1 mknod stderr c 26 2 eval `echo "" | awk '{ for (i = 0; i < 32; i++) printf("mknod fd/%d c 26 %d; ",i,i); }'` ;; ht*|tm*|ts*|tu*) umask 0 ; ctlr=`expr $i : '..\(.*\)'` ctlr=`expr $ctlr '*' 64` case $i in ht*) blk=0; chr=6;; tm*) blk=1; chr=7;; ts*) blk=2; chr=8;; tu*) blk=12; chr=23;; esac # Maximum of 4 controllers in a system case $ctlr in 0|64|128|192) # Maximum of 4 units per controller # for unit in 0 1 2 3 for unit in 0 1 do zero=`expr $ctlr + $unit + 0` four=`expr $zero + 4` ; eight=`expr $zero + 8` twelve=`expr $zero + 12` sixteen=`expr $zero + 16` twenty=`expr $zero + 20` twentyfour=`expr $zero + 24` twentyeight=`expr $zero + 28` mknod mt$zero b $blk $zero mknod mt$four b $blk $four mknod mt$eight b $blk $eight mknod mt$twelve b $blk $twelve mknod nmt$zero b $blk $four ;: v7 compatibility mknod nmt$eight b $blk $twelve ;: ditto mknod nrmt$zero c $chr $four ;: ditto mknod nrmt$eight c $chr $twelve ;: ditto mknod rmt$zero c $chr $zero mknod rmt$four c $chr $four mknod rmt$eight c $chr $eight mknod rmt$twelve c $chr $twelve if [ `expr $i : '\(..\)'` = tu ] then mknod mt$sixteen b $blk $sixteen mknod mt$twenty b $blk $twenty mknod mt$twentyfour b $blk $twentyfour mknod mt$twentyeight b $blk $twentyeight mknod nmt$sixteen b $blk $twenty ;: v7 compatibility mknod nmt$twentyfour b $blk $twentyeight ;: ditto mknod nrmt$sixteen c $chr $twenty ;: ditto mknod nrmt$twentyfour c $chr $twentyeight ;: ditto mknod rmt$sixteen c $chr $sixteen mknod rmt$twenty c $chr $twenty mknod rmt$twentyfour c $chr $twentyfour mknod rmt$twentyeight c $chr $twentyeight fi if [ `expr $i : '\(..\)'` = ut ] then mknod mt$twenty b $blk $twenty mknod rmt$twenty c $chr $twenty fi done ;; *) echo bad controller for tape in: $1 ;; esac umask 77 ;; rk*) # The 2.11BSD rk driver doesn't support partitions. We create # a single block and charater inode pair for each unit and # call it rkNh. umask 2 ; unit=`expr $i : '..\(.*\)'` case $i in rk*) name=rk; blk=6; chr=15;; esac mknod ${name}${unit}h b ${blk} ${unit} mknod r${name}${unit}h c ${chr} ${unit} chgrp operator ${name}${unit}h r${name}${unit}h chmod 640 ${name}${unit}h r${name}${unit}h ;; rx*) umask 2 name=rx; blk=8; chr=17 mknod ${name}0a b ${blk} 0 mknod ${name}1a b ${blk} 1 mknod ${name}0b b ${blk} 2 mknod ${name}1b b ${blk} 3 mknod r${name}0a c ${chr} 0 mknod r${name}1a c ${chr} 1 mknod r${name}0b c ${chr} 2 mknod r${name}1b c ${chr} 3 chgrp operator ${name}[01][ab] r${name}[01][ab] chmod 640 ${name}[01][ab] r${name}[01][ab] ;; ram*) # Note, this must come *before* the "ra*". The entry "rram" is for # auto fscks when ram is mentioned in /etc/fstab. umask 2 mknod ram b 3 0 ln ram rram chgrp operator ram chmod 640 ram umask 77 ;; br*|hk*|ra*|si*|xp*|rl*) umask 2 ; unit=`expr $i : '..\(.*\)'` case $i in br*) name=rp; blk=11; chr=20;; hk*) name=hk; blk=4; chr=13;; ra*) name=ra; blk=5; chr=14;; si*) name=si; blk=9; chr=18;; xp*) name=xp; blk=10; chr=19;; rl*) name=rl; blk=7; chr=16;; esac case $unit in 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|\ 17|18|19|20|21|22|23|24|25|26|27|28|29|30|31) mknod ${name}${unit}a b $blk `expr $unit '*' 8 + 0` mknod ${name}${unit}b b $blk `expr $unit '*' 8 + 1` mknod ${name}${unit}c b $blk `expr $unit '*' 8 + 2` mknod ${name}${unit}d b $blk `expr $unit '*' 8 + 3` mknod ${name}${unit}e b $blk `expr $unit '*' 8 + 4` mknod ${name}${unit}f b $blk `expr $unit '*' 8 + 5` mknod ${name}${unit}g b $blk `expr $unit '*' 8 + 6` mknod ${name}${unit}h b $blk `expr $unit '*' 8 + 7` mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0` mknod r${name}${unit}b c $chr `expr $unit '*' 8 + 1` mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2` mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3` mknod r${name}${unit}e c $chr `expr $unit '*' 8 + 4` mknod r${name}${unit}f c $chr `expr $unit '*' 8 + 5` mknod r${name}${unit}h c $chr `expr $unit '*' 8 + 7` mknod r${name}${unit}g c $chr `expr $unit '*' 8 + 6` chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h] chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h] ;; *) echo bad unit for disk in: $i ;; esac umask 77 ;; dz*) unit=`expr $i : 'dz\(.*\)'` case $unit in 0|1|2|3|4|5|6|7) eval `echo $unit | awk ' { u = $1 } END { for (i = 0; i < 8; i++) printf("mknod tty%02d c 2 %d; ",u*8+i,u*8+i); }'` ;; *) echo bad unit for dz in: $i ;; esac ;; # # we may want dmz and dmf someday... # dhu*|dh*|dmf*|dmz*) dhv*|dhu*|dh*) case $i in # dmz*) name=dmz; major=37; count=24; # unit=`expr $i : "$name\(.*\)"` # case $unit in # 0) ch=a ;; 1) ch=b ;; 2) ch=c ;; 3) ch=e ;; # 4) ch=f ;; 5) ch=g ;; # *) echo bad unit for $name in: $i ;; # esac;; # dmf*) name=dmf; major=22; count=8; # unit=`expr $i : "$name\(.*\)"` # case $unit in # 0) ch=A ;; 1) ch=B ;; 2) ch=C ;; 3) ch=E ;; # 4) ch=F ;; 5) ch=G ;; 6) ch=H ;; 7) ch=I ;; # *) echo bad unit for $name in: $i ;; # esac;; dhv*) name=dhv; major=24; count=8; unit=`expr $i : "$name\(.*\)"`; case $unit in 0) ch=S ;; 1) ch=T ;; 2) ch=U ;; 3) ch=V ;; 4) ch=W ;; 5) ch=X ;; 6) ch=Y ;; 7) ch=Z ;; *) echo bad unit for $name in: $i ;; esac;; dhu*) name=dhu; major=4; count=16; unit=`expr $i : "$name\(.*\)"`; case $unit in 0) ch=S ;; 1) ch=T ;; 2) ch=U ;; 3) ch=V ;; 4) ch=W ;; 5) ch=X ;; 6) ch=Y ;; 7) ch=Z ;; *) echo bad unit for $name in: $i ;; esac;; dh*) name=dh; major=3; count=16; unit=`expr $i : "$name\(.*\)"` case $unit in 0) ch=h ;; 1) ch=i ;; 2) ch=j ;; 3) ch=k ;; *) echo bad unit for $name in: $i ;; esac;; esac eval `echo $ch $unit $major $count | awk ' { ch = $1; u = $4 * $2; m = $3; cnt = $4 } END { for (i = 0; i < cnt; i++) if (i < 10) printf("mknod tty%s%x c %d %d; ",ch,i,m,u+i); else printf("mknod tty%s%c c %d %d; ",ch,87+i,m,u+i); }'` ;; # extra DL-11 units not including the console. unit numbers start at 1 because # the console is always unit 0. Seven units (1 - 7) are defined for the 11/93 # and 11/94. Device name is "ttyl?". The DH range was restricted from 'h'-'o' # to 'h' - 'k' (very unlikely that more than 64 channels of DH-11 will or could # be put on an 11. dl*) name=dl; major=0; ch=l unit=`expr $i : "$name\(.*\)"` case $unit in 1|2|3|4|5|6|7) mknod tty${ch}${unit} c $major $unit; ;; *) echo bad unit for $name in: $i ;; esac ;; # we may want va and vp someday... # lp*|va*|vp*) lp*|dn*) case $i in lp*) name=lp; major=5;; dn*) name=dn; major=21;; # va*) name=va; major=10;; # vp*) name=vp; major=6;; esac unit=`expr $i : "$name\(.*\)"` case $unit in 0|1|2|3|4|5|6|7) mknod $i c $major $unit; chmod 666 $i ;; *) echo bad unit for $name in: $i ;; esac ;; pty*) class=`expr $i : 'pty\(.*\)'` case $class in 0) offset=0 name=p;; 1) offset=16 name=q;; 2) offset=32 name=r;; 3) offset=48 name=s;; 4) offset=64 name=t;; 5) offset=80 name=u;; *) echo bad unit for pty in: $i;; esac case $class in 0|1|2|3|4|5) umask 0 eval `echo $offset $name | awk ' { b=$1; n=$2 } END { for (i = 0; i < 16; i++) printf("mknod tty%s%x c 11 %d; \ mknod pty%s%x c 10 %d; ", \ n, i, b+i, n, i, b+i); }'` umask 77 ;; esac ;; dr*) unit=`expr $i : '..\(.*\)'` case $i in dr*) name=dr; chr=12;; esac case $unit in 0|1|2|3|4|5|6|7) umask 0 mknod ${name}${unit} c ${chr} ${unit} umask 77 ;; *) echo bad unit for ${name} in: $i ;; esac ;; ingreslock) mknod ingreslock c 25 0 chown ingres ingreslock chmod 200 ingreslock ;; local) sh MAKEDEV.local ;; esac done