BSD 4_3_Net_2 development
[unix-history] / .ref-BSD-4_3_Reno / dev / MAKEDEV
CommitLineData
e06c3afe
KB
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#
1c15e888 18# @(#)MAKEDEV 5.11 (Berkeley) 3/16/90
284ded7a
MK
19#
20# Device "make" file. Valid arguments:
21# std standard devices
22# local configuration specific devices
23# Tapes:
24# cy* Cipher
25# Disks:
66c1a979
KB
26# dk* VDDC or SMDE disk on Versabus
27# hd* VDDC or SMDE disk on VME
284ded7a
MK
28# Terminal multiplexors:
29# vx* VIOC
3095baff 30# mp* MPCC
284ded7a
MK
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#
4b9b0745
KM
40HOME=/; export HOME
41PATH=/sbin:/bin:/usr/sbin:/usr/bin
42export PATH
43
284ded7a
MK
44umask 77
45for i
46do
47case $i in
48
49std)
9eb301c3
KB
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
1710deff
KB
60 mknod stdin c 21 0 ; chmod 666 stdin
61 mknod stdout c 21 1 ; chmod 666 stdout
62 mknod stderr c 21 2 ; chmod 666 stderr
63 mkdir fd > /dev/null 2>&1
64 (cd fd && eval `echo "" | awk ' BEGIN { \
65 for (i = 0; i < 64; i++) \
66 printf("mknod %d c 21 %d;", i, i)}'`)
67 chown -R bin.bin fd
68 chmod 555 fd
69 chmod 666 fd/*
6089ab5d 70 ;;
284ded7a
MK
71
72cy*)
73 umask 0 ; unit=`expr $i : '..\(.*\)'`
74 case $i in
75 cy*) blk=3; chr=7 ;;
76 esac
77 case $unit in
78 0|1|2|3|4|5|6|7)
a3d9bb30
MK
79 four=`expr $unit + 4`
80 eight=`expr $unit + 8`
81 twelve=`expr $unit + 12`
82# twenty=`expr $unit + 20`
9eb301c3
KB
83 mknod mt$unit b $blk $unit
84 mknod mt$four b $blk $four
85 mknod mt$eight b $blk $eight
86 mknod mt$twelve b $blk $twelve
8f23f774
MK
87 ln mt$four nmt$unit ;: sanity
88 ln mt$twelve nmt$eight ;: ditto
9eb301c3
KB
89 mknod rmt$unit c $chr $unit
90 mknod rmt$four c $chr $four
91 mknod rmt$eight c $chr $eight
92 mknod rmt$twelve c $chr $twelve
8f23f774
MK
93 ln rmt$four nrmt$unit ;: sanity
94 ln rmt$twelve nrmt$eight ;: ditto
284ded7a
MK
95# if [ $i = ut ]
96# then
9eb301c3
KB
97# mknod mt$twenty b $blk $twenty
98# mknod rmt$twenty c $chr $twenty
284ded7a 99# fi
284ded7a
MK
100 umask 77
101 ;;
102 *)
103 echo bad unit for tape in: $1
104 ;;
105 esac
106 ;;
107
66c1a979 108hd*|dk*)
284ded7a
MK
109 unit=`expr $i : '..\(.*\)'`
110 case $i in
111 dk*) name=dk; blk=1; chr=5;;
66c1a979 112 hd*) name=hd; blk=2; chr=6;;
284ded7a
MK
113 esac
114 case $unit in
e06c3afe 115 0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f|g|h)
284ded7a
MK
116 case $unit in
117 a) u=10 ;;
118 b) u=11 ;;
119 c) u=12 ;;
120 d) u=13 ;;
121 e) u=14 ;;
122 f) u=15 ;;
e06c3afe
KB
123 g) u=16 ;;
124 h) u=17 ;;
284ded7a
MK
125 *) u=$unit ;;
126 esac
127
9eb301c3
KB
128 mknod ${name}${unit}a b $blk `expr $u '*' 8 + 0`
129 mknod ${name}${unit}b b $blk `expr $u '*' 8 + 1`
130 mknod ${name}${unit}c b $blk `expr $u '*' 8 + 2`
131 mknod ${name}${unit}d b $blk `expr $u '*' 8 + 3`
132 mknod ${name}${unit}e b $blk `expr $u '*' 8 + 4`
133 mknod ${name}${unit}f b $blk `expr $u '*' 8 + 5`
134 mknod ${name}${unit}g b $blk `expr $u '*' 8 + 6`
135 mknod ${name}${unit}h b $blk `expr $u '*' 8 + 7`
136 mknod r${name}${unit}a c $chr `expr $u '*' 8 + 0`
137 mknod r${name}${unit}b c $chr `expr $u '*' 8 + 1`
138 mknod r${name}${unit}c c $chr `expr $u '*' 8 + 2`
139 mknod r${name}${unit}d c $chr `expr $u '*' 8 + 3`
140 mknod r${name}${unit}e c $chr `expr $u '*' 8 + 4`
141 mknod r${name}${unit}f c $chr `expr $u '*' 8 + 5`
142 mknod r${name}${unit}g c $chr `expr $u '*' 8 + 6`
143 mknod r${name}${unit}h c $chr `expr $u '*' 8 + 7`
284ded7a 144
e06c3afe
KB
145 chmod 640 ${name}${unit}[a-h]
146 chgrp operator ${name}${unit}[a-h]
147 chmod 640 r${name}${unit}[a-h]
148 chgrp operator r${name}${unit}[a-h]
284ded7a
MK
149 ;;
150 *)
151 echo bad unit for disk in: $i
152 ;;
153 esac
154 ;;
155
3095baff
KB
156vx*|mp*)
157 case $i in
158 vx*) name=vx; major=1; count=16;
159 unit=`expr $i : "$name\(.*\)"`
284ded7a 160 case $unit in
3095baff
KB
161 0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f) ch=$unit ;;
162 *) echo bad unit for $name in: $i ;;
284ded7a 163 esac
284ded7a 164 ;;
3095baff
KB
165 mp*) name=mp; major=12; count=16;
166 unit=`expr $i : "$name\(.*\)"`
167 case $unit in
168 0) ch=A ;; 1) ch=B ;; 2) ch=C ;; 3) ch=D ;;
169 4) ch=E ;; 5) ch=F ;; 6) ch=G ;; 7) ch=H ;;
170 8) ch=I ;; 9) ch=J ;; a) ch=K ;; b) ch=L ;;
171 c) ch=M ;; d) ch=N ;; e) ch=O ;; f) ch=P ;;
172 *) echo bad unit for $name in: $i ;;
173 esac
284ded7a
MK
174 ;;
175 esac
3095baff
KB
176
177 case $unit in
178 a) un=10 ;; b) un=11 ;; c) un=12 ;; d) un=13 ;;
179 e) un=14 ;; f) un=15 ;; *) un=$unit ;;
180 esac
181
182 umask 044
183 eval `echo $ch $major $count $un |
184 awk ' { ch = $1; u = $3 * $4; m = $2; cnt = $3; nd = $4 } END {
185 if (m == 12)
9eb301c3 186 printf("mknod mpcc%d c 11 %d; /bin/chmod 0600 mpcc%d; ",nd,u,nd);
3095baff
KB
187 for (i = 0; i < cnt; i++)
188 if (i < 10)
9eb301c3 189 printf("mknod tty%s%x c %d %d; ",ch,i,m,u+i);
3095baff 190 else
9eb301c3 191 printf("mknod tty%s%c c %d %d; ",ch,87+i,m,u+i); }'`
3095baff 192 umask 77
284ded7a
MK
193 ;;
194
195pty*)
196 class=`expr $i : 'pty\(.*\)'`
197 case $class in
198 0) offset=0 name=p;;
199 1) offset=16 name=q;;
200 2) offset=32 name=r;;
98300b0e
KB
201 3) offset=48 name=s;;
202 4) offset=64 name=s;;
203 5) offset=80 name=s;;
284ded7a
MK
204 *) echo bad unit for pty in: $i;;
205 esac
206 case $class in
98300b0e 207 0|1|2|3|4|5)
284ded7a
MK
208 umask 0
209 eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
210 for (i = 0; i < 16; i++)
9eb301c3
KB
211 printf("mknod tty%s%x c 9 %d; \
212 mknod pty%s%x c 10 %d; ", \
284ded7a 213 n, i, b+i, n, i, b+i); }'`
284ded7a
MK
214 umask 77
215 ;;
216 esac
217 ;;
218
219enp*)
220 unit=`expr $i : 'enp\(.*\)'`
221 case $unit in
222 [0-6])
9eb301c3 223 mknod enp${unit}ram c 16 $unit; chmod 644 enp${unit}ram
284ded7a
MK
224 ;;
225 *)
226 echo bad unit for enp in: $i
227 ;;
228 esac
229 ;;
230
231dr*)
232 unit=`expr $i : 'dr\(.*\)'`
233 case $unit in
234 [0-6])
9eb301c3 235 mknod dr${unit} c 18 $unit; chmod 644 dr${unit}
284ded7a
MK
236 ;;
237 *)
238 echo bad unit for dr in: $i
239 ;;
240 esac
241 ;;
242
243ik*)
244 unit=`expr $i : 'ik\(.*\)'`
245 case $unit in
246 [0-9])
9eb301c3 247 mknod ik${unit} c 20 $unit; chmod 644 ik${unit}
284ded7a
MK
248 ;;
249 *)
250 echo bad unit for ik in: $i
251 ;;
252 esac
253 ;;
254
255local)
256 sh MAKEDEV.local
257 ;;
258esac
259done