xref: /original-bsd/etc/etc.pmax/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#	tz*	SCSI tapes, DEC TK50 cartridge tape
11# Disks:
12#	rz*	SCSI disks
13#	vnd*	"file" pseudo-disks
14# Terminal multiplexors:
15#	dc*	4 channel serial interface (keyboard, mouse, modem, printer)
16#	scc*	82530 serial interface
17# Pseudo terminals:
18#	pty*	set of 16 master and slave pseudo terminals
19# Printers:
20# Call units:
21# Special purpose devices:
22#	NOTE: /dev/mouse should be a link to one of these for X windows.
23#	pm*	raw interface to PMAX graphics devices
24#	cfb*	raw interface to turbochannel PMAG-BA color frame buffer
25#	xcfb*	raw interface to maxine graphics devices
26#	mfb*	raw interface to mono graphics devices
27
28PATH=/sbin:/bin/:/usr/bin:/usr/sbin
29umask 77
30for i
31do
32case $i in
33
34std)
35	mknod console		c 0 0
36	mknod drum		c 3 0	; chmod 640 drum ; chgrp kmem drum
37	mknod kmem		c 2 1	; chmod 640 kmem ; chgrp kmem kmem
38	mknod mem		c 2 0	; chmod 640 mem ; chgrp kmem mem
39	mknod null		c 2 2	; chmod 666 null
40	mknod zero              c 2 12  ; chmod 666 zero
41	mknod tty		c 1 0	; chmod 666 tty
42	mknod klog		c 6 0	; chmod 600 klog
43	mknod stdin		c 7 0	; chmod 666 stdin
44	mknod stdout		c 7 1	; chmod 666 stdout
45	mknod stderr		c 7 2	; chmod 666 stderr
46	mkdir fd > /dev/null 2>&1
47	(cd fd && eval `echo "" | awk ' BEGIN { \
48		for (i = 0; i < 64; i++) \
49			printf("mknod %d c 7 %d;", i, i)}'`)
50	chown -R bin.bin fd
51	chmod 555 fd
52	chmod 666 fd/*
53	;;
54
55tz*)
56	umask 0 ; unit=`expr $i : '..\(.*\)'`
57	case $i in
58	tz*) chr=10;;
59	esac
60	case $unit in
61	0|1|2|3|4|5|6)
62		unit0=`expr $unit \* 16`
63		unit1=`expr $unit \* 16 + 1`
64		unit2=`expr $unit \* 16 + 2`
65		unit3=`expr $unit \* 16 + 3`
66		mknod rmt$unit c $chr $unit0
67		mknod nrmt$unit c $chr $unit1
68		mknod rmth$unit c $chr $unit2
69		mknod nrmth$unit c $chr $unit3
70		chmod 666 rmt$unit nrmt$unit rmth$unit nrmth$unit
71		;;
72	*)
73		echo bad unit for tape in: $1
74		;;
75	esac
76	umask 77
77	;;
78
79rz*|vnd*)
80	umask 2 ; unit=`expr $i : '..\(.*\)'`
81	case $i in
82	rz*) name=rz; blk=0; chr=9;;
83	vnd*) name=vnd; blk=2; chr=11;;
84	esac
85	case $unit in
86	0|1|2|3|4|5|6)
87		mknod ${name}${unit}c	b $blk `expr $unit '*' 8 + 2`
88		mknod r${name}${unit}c	c $chr `expr $unit '*' 8 + 2`
89		if [ $name != vnd ]
90		then
91		mknod ${name}${unit}a	b $blk `expr $unit '*' 8 + 0`
92		mknod ${name}${unit}b	b $blk `expr $unit '*' 8 + 1`
93		mknod ${name}${unit}d	b $blk `expr $unit '*' 8 + 3`
94		mknod ${name}${unit}e	b $blk `expr $unit '*' 8 + 4`
95		mknod ${name}${unit}f	b $blk `expr $unit '*' 8 + 5`
96		mknod ${name}${unit}g	b $blk `expr $unit '*' 8 + 6`
97		mknod ${name}${unit}h	b $blk `expr $unit '*' 8 + 7`
98		mknod r${name}${unit}a	c $chr `expr $unit '*' 8 + 0`
99		mknod r${name}${unit}b	c $chr `expr $unit '*' 8 + 1`
100		mknod r${name}${unit}d	c $chr `expr $unit '*' 8 + 3`
101		mknod r${name}${unit}e	c $chr `expr $unit '*' 8 + 4`
102		mknod r${name}${unit}f	c $chr `expr $unit '*' 8 + 5`
103		mknod r${name}${unit}g	c $chr `expr $unit '*' 8 + 6`
104		mknod r${name}${unit}h	c $chr `expr $unit '*' 8 + 7`
105		fi
106		chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h]
107		chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
108		;;
109	*)
110		echo bad unit for disk in: $i
111		;;
112	esac
113	umask 77
114	;;
115
116dc*)
117	unit=`expr $i : 'dc\(.*\)'`
118	case $unit in
119	0)
120		mknod tty0 c 16 2
121		mknod tty1 c 16 3
122		;;
123	*)
124		echo bad unit for dc in: $i
125		;;
126	esac
127	;;
128
129scc*)
130	unit=`expr $i : 'scc\(.*\)'`
131	case $unit in
132	0)
133		mknod tty0 c 17 2
134		mknod tty1 c 17 3
135		;;
136	*)
137		echo bad unit for scc in: $i
138		;;
139	esac
140	;;
141
142pm*)
143	unit=`expr $i : 'pm\(.*\)'`
144	case $unit in
145	0)
146		mknod pm0 c 8 0
147		;;
148	*)
149		echo bad unit for pm in: $i
150		;;
151	esac
152	;;
153
154cfb*)
155	unit=`expr $i : 'cfb\(.*\)'`
156	case $unit in
157	0)
158		mknod cfb0 c 13 0
159		;;
160	*)
161		echo bad unit for cfb in: $i
162		;;
163	esac
164	;;
165
166xcfb*)
167	unit=`expr $i : 'xcfb\(.*\)'`
168	case $unit in
169	0)
170		mknod xcfb0 c 14 0
171		;;
172	*)
173		echo bad unit for xcfb in: $i
174		;;
175	esac
176	;;
177
178mfb*)
179	unit=`expr $i : 'mfb\(.*\)'`
180	case $unit in
181	0)
182		mknod mfb0 c 18 0
183		;;
184	*)
185		echo bad unit for mfb in: $i
186		;;
187	esac
188	;;
189
190pty*)
191	class=`expr $i : 'pty\(.*\)'`
192	case $class in
193	0) offset=0 name=p;;
194	1) offset=16 name=q;;
195	2) offset=32 name=r;;
196	3) offset=48 name=s;;
197# Note that telnetd, rlogind, and xterm (at least) only look at p-s.
198	4) offset=64 name=t;;
199	*) echo bad unit for pty in: $i;;
200	esac
201	case $class in
202	0|1|2|3|4)
203		umask 0
204		eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
205			for (i = 0; i < 16; i++)
206				printf("mknod tty%s%x c 4 %d; \
207					mknod pty%s%x c 5 %d; ", \
208					n, i, b+i, n, i, b+i); }'`
209		umask 77
210		if [ $class = 1 ]; then
211			mv ttyqf ttyv0; mv ptyqf ptyv0
212		fi
213		;;
214	esac
215	;;
216
217local)
218	umask 0
219	sh MAKEDEV.local
220	;;
221
222*)
223	echo $i: unknown device
224	;;
225esac
226done
227