xref: /original-bsd/etc/etc.pmax/MAKEDEV (revision 753853ba)
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.1 (Berkeley) 03/09/92
9#
10
11# Device "make" file.  Valid arguments:
12#	std	standard devices
13#	local	configuration specific devices
14# Tapes:
15#	tz*	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# Pseudo terminals:
22#	pty*	set of 16 master and slave pseudo terminals
23# Printers:
24# Call units:
25# Special purpose devices:
26#	pm*	raw interface to PMAX 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		unit2=`expr $unit \* 2`
63		unit3=`expr $unit \* 2 + 1`
64		mknod rmt$unit c $chr $unit2
65		mknod nrmt$unit c $chr $unit3
66		;;
67	*)
68		echo bad unit for tape in: $1
69		;;
70	esac
71	umask 77
72	;;
73
74rz*|vnd*)
75	umask 2 ; unit=`expr $i : '..\(.*\)'`
76	case $i in
77	rz*) name=rz; blk=0; chr=9;;
78	vnd*) name=vnd; blk=2; chr=11;;
79	esac
80	case $unit in
81	0|1|2|3|4|5|6)
82		mknod ${name}${unit}c	b $blk `expr $unit '*' 8 + 2`
83		mknod r${name}${unit}c	c $chr `expr $unit '*' 8 + 2`
84		if [ $name != vnd ]
85		then
86		mknod ${name}${unit}a	b $blk `expr $unit '*' 8 + 0`
87		mknod ${name}${unit}b	b $blk `expr $unit '*' 8 + 1`
88		mknod ${name}${unit}d	b $blk `expr $unit '*' 8 + 3`
89		mknod ${name}${unit}e	b $blk `expr $unit '*' 8 + 4`
90		mknod ${name}${unit}f	b $blk `expr $unit '*' 8 + 5`
91		mknod ${name}${unit}g	b $blk `expr $unit '*' 8 + 6`
92		mknod ${name}${unit}h	b $blk `expr $unit '*' 8 + 7`
93		mknod r${name}${unit}a	c $chr `expr $unit '*' 8 + 0`
94		mknod r${name}${unit}b	c $chr `expr $unit '*' 8 + 1`
95		mknod r${name}${unit}d	c $chr `expr $unit '*' 8 + 3`
96		mknod r${name}${unit}e	c $chr `expr $unit '*' 8 + 4`
97		mknod r${name}${unit}f	c $chr `expr $unit '*' 8 + 5`
98		mknod r${name}${unit}g	c $chr `expr $unit '*' 8 + 6`
99		mknod r${name}${unit}h	c $chr `expr $unit '*' 8 + 7`
100		fi
101		chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h]
102		chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
103		;;
104	*)
105		echo bad unit for disk in: $i
106		;;
107	esac
108	umask 77
109	;;
110
111dc*)
112	unit=`expr $i : 'dc\(.*\)'`
113	case $unit in
114	0)
115		mknod tty0 c 0 2
116		mknod tty1 c 0 3
117		;;
118	*)
119		echo bad unit for dc in: $i
120		;;
121	esac
122	;;
123
124pm*)
125	unit=`expr $i : 'pm\(.*\)'`
126	case $unit in
127	0)
128		mknod mouse c 8 0
129		;;
130	*)
131		echo bad unit for pm in: $i
132		;;
133	esac
134	;;
135
136pty*)
137	class=`expr $i : 'pty\(.*\)'`
138	case $class in
139	0) offset=0 name=p;;
140	1) offset=16 name=q;;
141	2) offset=32 name=r;;
142	3) offset=48 name=s;;
143# Note that telnetd, rlogind, and xterm (at least) only look at p-s.
144	4) offset=64 name=t;;
145	*) echo bad unit for pty in: $i;;
146	esac
147	case $class in
148	0|1|2|3|4)
149		umask 0
150		eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
151			for (i = 0; i < 16; i++)
152				printf("mknod tty%s%x c 4 %d; \
153					mknod pty%s%x c 5 %d; ", \
154					n, i, b+i, n, i, b+i); }'`
155		umask 77
156		if [ $class = 1 ]; then
157			mv ttyqf ttyv0; mv ptyqf ptyv0
158		fi
159		;;
160	esac
161	;;
162
163local)
164	umask 0
165	sh MAKEDEV.local
166	;;
167
168*)
169	echo $i: unknown device
170	;;
171esac
172done
173