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