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