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