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