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# 10# Tapes: 11# wt* QIC-interfaced (e.g. not SCSI) 3M cartridge tape 12# 13# Disks: 14# wd* "winchester" disk drives (ST506,IDE,ESDI,RLL,...) 15# fd* "floppy" disk drives (3 1/2", 5 1/4") 16# 17# Terminal ports: 18# com* standard PC COM ports 19# 20# Pseudo terminals: 21# pty* set of 16 master and slave pseudo terminals 22# 23# Printers: 24# 25# Call units: 26# 27# Special purpose devices: 28# flog* kernel logging device 29# 30 31PATH=/sbin:/bin/:/usr/bin 32umask 77 33for i 34do 35case $i in 36 37std) 38 mknod console c 0 0 39 mknod drum c 4 0 ; chmod 640 drum ; chgrp kmem drum 40 mknod kmem c 2 1 ; chmod 640 kmem ; chgrp kmem kmem 41 mknod mem c 2 0 ; chmod 640 mem ; chgrp kmem mem 42 mknod null c 2 2 ; chmod 666 null 43 mknod zero c 2 12 ; chmod 666 zero 44 mknod tty c 1 0 ; chmod 666 tty 45 mknod klog c 7 0 ; chmod 600 klog 46 mknod stdin c 53 0 ; chmod 666 stdin 47 mknod stdout c 53 1 ; chmod 666 stdout 48 mknod stderr c 53 2 ; chmod 666 stderr 49 mkdir fd > /dev/null 2>&1 50 (cd fd && eval `echo "" | awk ' BEGIN { \ 51 for (i = 0; i < 64; i++) \ 52 printf("mknod %d c 53 %d;", i, i)}'`) 53 chown -R bin.bin fd 54 chmod 555 fd 55 chmod 666 fd/* 56 ;; 57 58wt*) 59 umask 0 ; unit=`expr $i : '..\(.*\)'` 60 case $i in 61 wt*) blk=3; chr=10;; 62 esac 63 case $unit in 64 0) 65 four=`expr $unit + 4` ; eight=`expr $unit + 8` 66 twelve=`expr $unit + 12`; twenty=`expr $unit + 20` 67 # 68 # block devices don't work so don't make them 69 #mknod wt$unit b $blk $unit 70 #mknod wt$four b $blk $four 71 #mknod wt$eight b $blk $eight 72 #mknod wt$twelve b $blk $twelve 73 #mknod nwt$unit b $blk $four ;: sanity w/pdp11 v7 74 #mknod nwt$eight b $blk $twelve ;: ditto 75 # 76 mknod rwt$unit c $chr $unit 77 mknod rwt$four c $chr $four 78 mknod rwt$eight c $chr $eight 79 mknod rwt$twelve c $chr $twelve 80 ln rwt$four nrwt$unit ;: sanity w/pdp11 v7 81 ln rwt$twelve nrwt$eight ;: ditto 82 ;; 83 *) 84 echo bad unit for tape in: $1 85 ;; 86 esac 87 umask 77 88 ;; 89 90fd*|wd*) 91 umask 2 ; unit=`expr $i : '..\(.*\)'` 92 case $i in 93 fd*) name=fd; blk=2; chr=9;; 94 wd*) name=wd; blk=0; chr=3;; 95 esac 96 case $unit in 97 0|1) 98 mknod ${name}${unit}a b $blk `expr $unit '*' 8 + 0` 99 mknod ${name}${unit}b b $blk `expr $unit '*' 8 + 1` 100 mknod ${name}${unit}c b $blk `expr $unit '*' 8 + 2` 101 mknod ${name}${unit}d b $blk `expr $unit '*' 8 + 3` 102 mknod ${name}${unit}e b $blk `expr $unit '*' 8 + 4` 103 mknod ${name}${unit}f b $blk `expr $unit '*' 8 + 5` 104 mknod ${name}${unit}g b $blk `expr $unit '*' 8 + 6` 105 mknod ${name}${unit}h b $blk `expr $unit '*' 8 + 7` 106 mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0` 107 mknod r${name}${unit}b c $chr `expr $unit '*' 8 + 1` 108 mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2` 109 mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3` 110 mknod r${name}${unit}e c $chr `expr $unit '*' 8 + 4` 111 mknod r${name}${unit}f c $chr `expr $unit '*' 8 + 5` 112 mknod r${name}${unit}g c $chr `expr $unit '*' 8 + 6` 113 mknod r${name}${unit}h c $chr `expr $unit '*' 8 + 7` 114 chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h] 115 chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h] 116 ;; 117 *) 118 echo bad unit for disk in: $i 119 ;; 120 esac 121 umask 77 122 ;; 123 124com*) 125 unit=`expr $i : 'dca\(.*\)'` 126 case $unit in 127 1) 128 mknod com1 c 8 0 129 ;; 130 2) 131 mknod com1 c 8 1 132 ;; 133 *) 134 echo bad unit for com in: $i 135 ;; 136 esac 137 ;; 138 139pty*) 140 class=`expr $i : 'pty\(.*\)'` 141 case $class in 142 0) offset=0 name=p;; 143 1) offset=16 name=q;; 144 2) offset=32 name=r;; 145 3) offset=48 name=s;; 146# Note that telnetd, rlogind, and xterm (at least) only look at p-s. 147 4) offset=64 name=t;; 148 *) echo bad unit for pty in: $i;; 149 esac 150 case $class in 151 0|1|2|3|4) 152 umask 0 153 eval `echo $offset $name | awk ' { b=$1; n=$2 } END { 154 for (i = 0; i < 16; i++) 155 printf("mknod tty%s%x c 4 %d; \ 156 mknod pty%s%x c 5 %d; ", \ 157 n, i, b+i, n, i, b+i); }'` 158 umask 77 159 if [ $class = 1 ]; then 160 mv ttyqf ttyv0; mv ptyqf ptyv0 161 fi 162 ;; 163 esac 164 ;; 165 166local) 167 umask 0 168 sh MAKEDEV.local 169 ;; 170 171esac 172done 173