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