xref: /original-bsd/etc/etc.tahoe/MAKEDEV (revision 21b9697b)
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