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