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# cy* Cipher 11# Disks: 12# dk* VDDC or SMDE disk on Versabus 13# hd* VDDC or SMDE disk on VME 14# Terminal multiplexors: 15# vx* VIOC 16# mp* MPCC 17# Pseudo terminals: 18# pty* set of 32 master and slave pseudo terminals 19# Printers: 20# Call units: 21# Special purpose devices: 22# enp* CMC Ethernet interface for loading RAM 23# dr* IKON DR-11W 24# ik* IKON DR-11W w/ E&S PS300 25# 26HOME=/; export HOME 27PATH=/sbin:/bin:/usr/sbin:/usr/bin 28export PATH 29 30umask 77 31for i 32do 33case $i in 34 35std) 36 mknod CP c 0 0 37 mknod console c 0 1 38 mknod remote c 0 2 39 mknod drum c 8 0 ; chmod 640 drum ; chgrp kmem drum 40 mknod mem c 3 0 ; chmod 640 mem ; chgrp kmem mem 41 mknod kmem c 3 1 ; chmod 640 kmem ; chgrp kmem kmem 42 mknod null c 3 2 ; chmod 666 null 43 mknod vmem c 3 3 ; chmod 640 vmem ; chgrp kmem vmem 44 mknod zero c 3 12 ; chmod 666 zero 45 mknod tty c 2 0 ; chmod 666 tty 46 mknod klog c 15 0 ; chmod 400 klog 47 mknod stdin c 21 0 ; chmod 666 stdin 48 mknod stdout c 21 1 ; chmod 666 stdout 49 mknod stderr c 21 2 ; chmod 666 stderr 50 mkdir fd > /dev/null 2>&1 51 (cd fd && eval `echo "" | awk ' BEGIN { \ 52 for (i = 0; i < 64; i++) \ 53 printf("mknod %d c 21 %d;", i, i)}'`) 54 chown -R bin.bin fd 55 chmod 555 fd 56 chmod 666 fd/* 57 ;; 58 59cy*) 60 umask 0 ; unit=`expr $i : '..\(.*\)'` 61 case $i in 62 cy*) blk=3; chr=7 ;; 63 esac 64 case $unit in 65 0|1|2|3|4|5|6|7) 66 four=`expr $unit + 4` 67 eight=`expr $unit + 8` 68 twelve=`expr $unit + 12` 69# twenty=`expr $unit + 20` 70 mknod mt$unit b $blk $unit 71 mknod mt$four b $blk $four 72 mknod mt$eight b $blk $eight 73 mknod mt$twelve b $blk $twelve 74 ln mt$four nmt$unit ;: sanity 75 ln mt$twelve nmt$eight ;: ditto 76 mknod rmt$unit c $chr $unit 77 mknod rmt$four c $chr $four 78 mknod rmt$eight c $chr $eight 79 mknod rmt$twelve c $chr $twelve 80 ln rmt$four nrmt$unit ;: sanity 81 ln rmt$twelve nrmt$eight ;: ditto 82# if [ $i = ut ] 83# then 84# mknod mt$twenty b $blk $twenty 85# mknod rmt$twenty c $chr $twenty 86# fi 87 umask 77 88 ;; 89 *) 90 echo bad unit for tape in: $1 91 ;; 92 esac 93 ;; 94 95hd*|dk*) 96 unit=`expr $i : '..\(.*\)'` 97 case $i in 98 dk*) name=dk; blk=1; chr=5;; 99 hd*) name=hd; blk=2; chr=6;; 100 esac 101 case $unit in 102 0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h) 103 case $unit in 104 a) u=10 ;; 105 b) u=11 ;; 106 c) u=12 ;; 107 d) u=13 ;; 108 e) u=14 ;; 109 f) u=15 ;; 110 g) u=16 ;; 111 h) u=17 ;; 112 *) u=$unit ;; 113 esac 114 115 mknod ${name}${unit}a b $blk `expr $u '*' 8 + 0` 116 mknod ${name}${unit}b b $blk `expr $u '*' 8 + 1` 117 mknod ${name}${unit}c b $blk `expr $u '*' 8 + 2` 118 mknod ${name}${unit}d b $blk `expr $u '*' 8 + 3` 119 mknod ${name}${unit}e b $blk `expr $u '*' 8 + 4` 120 mknod ${name}${unit}f b $blk `expr $u '*' 8 + 5` 121 mknod ${name}${unit}g b $blk `expr $u '*' 8 + 6` 122 mknod ${name}${unit}h b $blk `expr $u '*' 8 + 7` 123 mknod r${name}${unit}a c $chr `expr $u '*' 8 + 0` 124 mknod r${name}${unit}b c $chr `expr $u '*' 8 + 1` 125 mknod r${name}${unit}c c $chr `expr $u '*' 8 + 2` 126 mknod r${name}${unit}d c $chr `expr $u '*' 8 + 3` 127 mknod r${name}${unit}e c $chr `expr $u '*' 8 + 4` 128 mknod r${name}${unit}f c $chr `expr $u '*' 8 + 5` 129 mknod r${name}${unit}g c $chr `expr $u '*' 8 + 6` 130 mknod r${name}${unit}h c $chr `expr $u '*' 8 + 7` 131 132 chmod 640 ${name}${unit}[a-h] 133 chgrp operator ${name}${unit}[a-h] 134 chmod 640 r${name}${unit}[a-h] 135 chgrp operator r${name}${unit}[a-h] 136 ;; 137 *) 138 echo bad unit for disk in: $i 139 ;; 140 esac 141 ;; 142 143vx*|mp*) 144 case $i in 145 vx*) name=vx; major=1; count=16; 146 unit=`expr $i : "$name\(.*\)"` 147 case $unit in 148 0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f) ch=$unit ;; 149 *) echo bad unit for $name in: $i ;; 150 esac 151 ;; 152 mp*) name=mp; major=12; count=16; 153 unit=`expr $i : "$name\(.*\)"` 154 case $unit in 155 0) ch=A ;; 1) ch=B ;; 2) ch=C ;; 3) ch=D ;; 156 4) ch=E ;; 5) ch=F ;; 6) ch=G ;; 7) ch=H ;; 157 8) ch=I ;; 9) ch=J ;; a) ch=K ;; b) ch=L ;; 158 c) ch=M ;; d) ch=N ;; e) ch=O ;; f) ch=P ;; 159 *) echo bad unit for $name in: $i ;; 160 esac 161 ;; 162 esac 163 164 case $unit in 165 a) un=10 ;; b) un=11 ;; c) un=12 ;; d) un=13 ;; 166 e) un=14 ;; f) un=15 ;; *) un=$unit ;; 167 esac 168 169 umask 044 170 eval `echo $ch $major $count $un | 171 awk ' { ch = $1; u = $3 * $4; m = $2; cnt = $3; nd = $4 } END { 172 if (m == 12) 173 printf("mknod mpcc%d c 11 %d; /bin/chmod 0600 mpcc%d; ",nd,u,nd); 174 for (i = 0; i < cnt; i++) 175 if (i < 10) 176 printf("mknod tty%s%x c %d %d; ",ch,i,m,u+i); 177 else 178 printf("mknod tty%s%c c %d %d; ",ch,87+i,m,u+i); }'` 179 umask 77 180 ;; 181 182pty*) 183 class=`expr $i : 'pty\(.*\)'` 184 case $class in 185 0) offset=0 name=p;; 186 1) offset=16 name=q;; 187 2) offset=32 name=r;; 188 3) offset=48 name=s;; 189 4) offset=64 name=s;; 190 5) offset=80 name=s;; 191 *) echo bad unit for pty in: $i;; 192 esac 193 case $class in 194 0|1|2|3|4|5) 195 umask 0 196 eval `echo $offset $name | awk ' { b=$1; n=$2 } END { 197 for (i = 0; i < 16; i++) 198 printf("mknod tty%s%x c 9 %d; \ 199 mknod pty%s%x c 10 %d; ", \ 200 n, i, b+i, n, i, b+i); }'` 201 umask 77 202 ;; 203 esac 204 ;; 205 206enp*) 207 unit=`expr $i : 'enp\(.*\)'` 208 case $unit in 209 [0-6]) 210 mknod enp${unit}ram c 16 $unit; chmod 644 enp${unit}ram 211 ;; 212 *) 213 echo bad unit for enp in: $i 214 ;; 215 esac 216 ;; 217 218dr*) 219 unit=`expr $i : 'dr\(.*\)'` 220 case $unit in 221 [0-6]) 222 mknod dr${unit} c 18 $unit; chmod 644 dr${unit} 223 ;; 224 *) 225 echo bad unit for dr in: $i 226 ;; 227 esac 228 ;; 229 230ik*) 231 unit=`expr $i : 'ik\(.*\)'` 232 case $unit in 233 [0-9]) 234 mknod ik${unit} c 20 $unit; chmod 644 ik${unit} 235 ;; 236 *) 237 echo bad unit for ik in: $i 238 ;; 239 esac 240 ;; 241 242local) 243 sh MAKEDEV.local 244 ;; 245esac 246done 247