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