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