1#!/bin/sh - 2# 3# Copyright (c) 1988 Regents of the University of California. 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms are permitted 7# provided that the above copyright notice and this paragraph are 8# duplicated in all such forms and that any documentation, 9# advertising materials, and other materials related to such 10# distribution and use acknowledge that the software was developed 11# by the University of California, Berkeley. The name of the 12# University may not be used to endorse or promote products derived 13# from this software without specific prior written permission. 14# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 15# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 16# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 17# 18# @(#)MAKEDEV 5.8 (Berkeley) 05/10/89 19# 20# Device "make" file. Valid arguments: 21# std standard devices 22# local configuration specific devices 23# Tapes: 24# cy* Cipher 25# Disks: 26# dk* VDDC or SMDE disk on Versabus 27# hd* VDDC or SMDE disk on VME 28# Terminal multiplexors: 29# vx* VIOC 30# mp* MPCC 31# Pseudo terminals: 32# pty* set of 32 master and slave pseudo terminals 33# Printers: 34# Call units: 35# Special purpose devices: 36# enp* CMC Ethernet interface for loading RAM 37# dr* IKON DR-11W 38# ik* IKON DR-11W w/ E&S PS300 39# 40umask 77 41for i 42do 43case $i in 44 45std) 46 /etc/mknod CP c 0 0 47 /etc/mknod console c 0 1 48 /etc/mknod remote c 0 2 49 /etc/mknod drum c 8 0 ; chmod 640 drum ; chgrp kmem drum 50 /etc/mknod mem c 3 0 ; chmod 640 mem ; chgrp kmem mem 51 /etc/mknod kmem c 3 1 ; chmod 640 kmem ; chgrp kmem kmem 52 /etc/mknod null c 3 2 ; chmod 666 null 53 /etc/mknod vmem c 3 3 ; chmod 640 vmem ; chgrp kmem vmem 54 /etc/mknod tty c 2 0 ; chmod 666 tty 55 /etc/mknod klog c 15 0 ; chmod 400 klog 56 ;; 57 58cy*) 59 umask 0 ; unit=`expr $i : '..\(.*\)'` 60 case $i in 61 cy*) blk=3; chr=7 ;; 62 esac 63 case $unit in 64 0|1|2|3|4|5|6|7) 65 four=`expr $unit + 4` 66 eight=`expr $unit + 8` 67 twelve=`expr $unit + 12` 68# twenty=`expr $unit + 20` 69 /etc/mknod mt$unit b $blk $unit 70 /etc/mknod mt$four b $blk $four 71 /etc/mknod mt$eight b $blk $eight 72 /etc/mknod mt$twelve b $blk $twelve 73 ln mt$four nmt$unit ;: sanity 74 ln mt$twelve nmt$eight ;: ditto 75 /etc/mknod rmt$unit c $chr $unit 76 /etc/mknod rmt$four c $chr $four 77 /etc/mknod rmt$eight c $chr $eight 78 /etc/mknod rmt$twelve c $chr $twelve 79 ln rmt$four nrmt$unit ;: sanity 80 ln rmt$twelve nrmt$eight ;: ditto 81# if [ $i = ut ] 82# then 83# /etc/mknod mt$twenty b $blk $twenty 84# /etc/mknod rmt$twenty c $chr $twenty 85# fi 86 umask 77 87 ;; 88 *) 89 echo bad unit for tape in: $1 90 ;; 91 esac 92 ;; 93 94hd*|dk*) 95 unit=`expr $i : '..\(.*\)'` 96 case $i in 97 dk*) name=dk; blk=1; chr=5;; 98 hd*) name=hd; blk=2; chr=6;; 99 esac 100 case $unit in 101 0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h) 102 case $unit in 103 a) u=10 ;; 104 b) u=11 ;; 105 c) u=12 ;; 106 d) u=13 ;; 107 e) u=14 ;; 108 f) u=15 ;; 109 g) u=16 ;; 110 h) u=17 ;; 111 *) u=$unit ;; 112 esac 113 114 /etc/mknod ${name}${unit}a b $blk `expr $u '*' 8 + 0` 115 /etc/mknod ${name}${unit}b b $blk `expr $u '*' 8 + 1` 116 /etc/mknod ${name}${unit}c b $blk `expr $u '*' 8 + 2` 117 /etc/mknod ${name}${unit}d b $blk `expr $u '*' 8 + 3` 118 /etc/mknod ${name}${unit}e b $blk `expr $u '*' 8 + 4` 119 /etc/mknod ${name}${unit}f b $blk `expr $u '*' 8 + 5` 120 /etc/mknod ${name}${unit}g b $blk `expr $u '*' 8 + 6` 121 /etc/mknod ${name}${unit}h b $blk `expr $u '*' 8 + 7` 122 /etc/mknod r${name}${unit}a c $chr `expr $u '*' 8 + 0` 123 /etc/mknod r${name}${unit}b c $chr `expr $u '*' 8 + 1` 124 /etc/mknod r${name}${unit}c c $chr `expr $u '*' 8 + 2` 125 /etc/mknod r${name}${unit}d c $chr `expr $u '*' 8 + 3` 126 /etc/mknod r${name}${unit}e c $chr `expr $u '*' 8 + 4` 127 /etc/mknod r${name}${unit}f c $chr `expr $u '*' 8 + 5` 128 /etc/mknod r${name}${unit}g c $chr `expr $u '*' 8 + 6` 129 /etc/mknod r${name}${unit}h c $chr `expr $u '*' 8 + 7` 130 131 chmod 640 ${name}${unit}[a-h] 132 chgrp operator ${name}${unit}[a-h] 133 chmod 640 r${name}${unit}[a-h] 134 chgrp operator r${name}${unit}[a-h] 135 ;; 136 *) 137 echo bad unit for disk in: $i 138 ;; 139 esac 140 ;; 141 142vx*|mp*) 143 case $i in 144 vx*) name=vx; major=1; count=16; 145 unit=`expr $i : "$name\(.*\)"` 146 case $unit in 147 0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f) ch=$unit ;; 148 *) echo bad unit for $name in: $i ;; 149 esac 150 ;; 151 mp*) name=mp; major=12; count=16; 152 unit=`expr $i : "$name\(.*\)"` 153 case $unit in 154 0) ch=A ;; 1) ch=B ;; 2) ch=C ;; 3) ch=D ;; 155 4) ch=E ;; 5) ch=F ;; 6) ch=G ;; 7) ch=H ;; 156 8) ch=I ;; 9) ch=J ;; a) ch=K ;; b) ch=L ;; 157 c) ch=M ;; d) ch=N ;; e) ch=O ;; f) ch=P ;; 158 *) echo bad unit for $name in: $i ;; 159 esac 160 ;; 161 esac 162 163 case $unit in 164 a) un=10 ;; b) un=11 ;; c) un=12 ;; d) un=13 ;; 165 e) un=14 ;; f) un=15 ;; *) un=$unit ;; 166 esac 167 168 umask 044 169 eval `echo $ch $major $count $un | 170 awk ' { ch = $1; u = $3 * $4; m = $2; cnt = $3; nd = $4 } END { 171 if (m == 12) 172 printf("/etc/mknod mpcc%d c 11 %d; /bin/chmod 0600 mpcc%d; ",nd,u,nd); 173 for (i = 0; i < cnt; i++) 174 if (i < 10) 175 printf("/etc/mknod tty%s%x c %d %d; ",ch,i,m,u+i); 176 else 177 printf("/etc/mknod tty%s%c c %d %d; ",ch,87+i,m,u+i); }'` 178 umask 77 179 ;; 180 181pty*) 182 class=`expr $i : 'pty\(.*\)'` 183 case $class in 184 0) offset=0 name=p;; 185 1) offset=16 name=q;; 186 2) offset=32 name=r;; 187 3) offset=48 name=s;; 188 4) offset=64 name=s;; 189 5) offset=80 name=s;; 190 *) echo bad unit for pty in: $i;; 191 esac 192 case $class in 193 0|1|2|3|4|5) 194 umask 0 195 eval `echo $offset $name | awk ' { b=$1; n=$2 } END { 196 for (i = 0; i < 16; i++) 197 printf("/etc/mknod tty%s%x c 9 %d; \ 198 /etc/mknod pty%s%x c 10 %d; ", \ 199 n, i, b+i, n, i, b+i); }'` 200 umask 77 201 ;; 202 esac 203 ;; 204 205enp*) 206 unit=`expr $i : 'enp\(.*\)'` 207 case $unit in 208 [0-6]) 209 /etc/mknod enp${unit}ram c 16 $unit; chmod 644 enp${unit}ram 210 ;; 211 *) 212 echo bad unit for enp in: $i 213 ;; 214 esac 215 ;; 216 217dr*) 218 unit=`expr $i : 'dr\(.*\)'` 219 case $unit in 220 [0-6]) 221 /etc/mknod dr${unit} c 18 $unit; chmod 644 dr${unit} 222 ;; 223 *) 224 echo bad unit for dr in: $i 225 ;; 226 esac 227 ;; 228 229ik*) 230 unit=`expr $i : 'ik\(.*\)'` 231 case $unit in 232 [0-9]) 233 /etc/mknod ik${unit} c 20 $unit; chmod 644 ik${unit} 234 ;; 235 *) 236 echo bad unit for ik in: $i 237 ;; 238 esac 239 ;; 240 241local) 242 sh MAKEDEV.local 243 ;; 244esac 245done 246