378 lines
9.4 KiB
Bash
Executable File
378 lines
9.4 KiB
Bash
Executable File
#!/bin/sh -
|
|
#
|
|
# Copyright (c) 1980 Regents of the University of California.
|
|
# All rights reserved. The Berkeley software License Agreement
|
|
# specifies the terms and conditions for redistribution.
|
|
#
|
|
# @(#)MAKEDEV 4.27.6 (2.11BSD) 1999/2/19
|
|
#
|
|
# Device "make" file. Valid arguments:
|
|
# std standard devices
|
|
# local configuration specific devices
|
|
# fd file descriptor driver
|
|
# Tapes:
|
|
# ht* unibus tu77 & te16
|
|
# tm* unibus tm11 & te10 emulations (e.g. Emulex tc-11)
|
|
# ts* unibus ts11
|
|
# tu* tmscp (tk50/tu81)
|
|
# Disks:
|
|
# br* unibus Eaton br1538 or br1711
|
|
# hk* unibus rk06 and rk07
|
|
# ra* unibus uda50 w/ ra??
|
|
# rk* unibus rk05
|
|
# rl* unibus rl01/rl02
|
|
# rx* unibus rx02
|
|
# si* unibus cdc 9766 w/ si 9500
|
|
# xp* unibus rm02/03/05, rp04/05/06, diva, eagle, cdc9766, fuji 160.
|
|
# Terminal multiplexors:
|
|
# dl* dl-11 units other than the console
|
|
# dz* unibus dz11 and dz32
|
|
# dh* unibus dh11 and emulations (e.g. Able dmax, Emulex cs-11)
|
|
# dmf* unibus dmf32
|
|
# dhu* unibus dhu11
|
|
# dmz* unibus dmz32
|
|
# dhv* qbus dhv11
|
|
# Pseudo terminals:
|
|
# pty* set of 16 master and slave pseudo terminals
|
|
# Printers:
|
|
# lp* unibus lp11 parallel interface
|
|
# va* unibus varian parallel interface
|
|
# vp* unibus versatec parallel interface
|
|
# Call units:
|
|
# Special purpose devices:
|
|
# dr* unibus dr11
|
|
# ram* memory disk
|
|
# dn* dn11 dialer
|
|
# ingreslock Ingres lock driver.
|
|
|
|
PATH=/etc:/sbin:/usr/sbin:/bin:/usr/bin
|
|
umask 77
|
|
for i
|
|
do
|
|
case $i in
|
|
|
|
std)
|
|
mknod console c 0 0
|
|
# mknod kUmem c 1 3 ; chmod 600 kUmem ;: untested
|
|
mknod kmem c 1 1 ; chmod 640 kmem ; chgrp kmem kmem
|
|
mknod mem c 1 0 ; chmod 640 mem ; chgrp kmem mem
|
|
mknod null c 1 2 ; chmod 666 null
|
|
mknod zero c 1 3 ; chmod 444 zero
|
|
mknod tty c 9 0 ; chmod 666 tty
|
|
mknod klog c 22 0 ; chmod 600 klog
|
|
mknod errlog c 22 1 ; chmod 600 errlog
|
|
mknod acctlog c 22 2 ; chmod 600 acctlog
|
|
;;
|
|
|
|
fd)
|
|
umask 0
|
|
rm -rf fd
|
|
rm -f stdin stdout stderr
|
|
mkdir fd
|
|
chmod 755 fd
|
|
mknod stdin c 26 0
|
|
mknod stdout c 26 1
|
|
mknod stderr c 26 2
|
|
eval `echo "" | awk '{ for (i = 0; i < 32; i++)
|
|
printf("mknod fd/%d c 26 %d; ",i,i); }'`
|
|
;;
|
|
|
|
ht*|tm*|ts*|tu*)
|
|
umask 0 ; ctlr=`expr $i : '..\(.*\)'`
|
|
ctlr=`expr $ctlr '*' 64`
|
|
case $i in
|
|
ht*) blk=0; chr=6;;
|
|
tm*) blk=1; chr=7;;
|
|
ts*) blk=2; chr=8;;
|
|
tu*) blk=12; chr=23;;
|
|
esac
|
|
# Maximum of 4 controllers in a system
|
|
case $ctlr in
|
|
0|64|128|192)
|
|
# Maximum of 4 units per controller
|
|
# for unit in 0 1 2 3
|
|
for unit in 0 1
|
|
do
|
|
zero=`expr $ctlr + $unit + 0`
|
|
four=`expr $zero + 4` ; eight=`expr $zero + 8`
|
|
twelve=`expr $zero + 12`
|
|
sixteen=`expr $zero + 16`
|
|
twenty=`expr $zero + 20`
|
|
twentyfour=`expr $zero + 24`
|
|
twentyeight=`expr $zero + 28`
|
|
mknod mt$zero b $blk $zero
|
|
mknod mt$four b $blk $four
|
|
mknod mt$eight b $blk $eight
|
|
mknod mt$twelve b $blk $twelve
|
|
mknod nmt$zero b $blk $four ;: v7 compatibility
|
|
mknod nmt$eight b $blk $twelve ;: ditto
|
|
mknod nrmt$zero c $chr $four ;: ditto
|
|
mknod nrmt$eight c $chr $twelve ;: ditto
|
|
mknod rmt$zero c $chr $zero
|
|
mknod rmt$four c $chr $four
|
|
mknod rmt$eight c $chr $eight
|
|
mknod rmt$twelve c $chr $twelve
|
|
if [ `expr $i : '\(..\)'` = tu ]
|
|
then
|
|
mknod mt$sixteen b $blk $sixteen
|
|
mknod mt$twenty b $blk $twenty
|
|
mknod mt$twentyfour b $blk $twentyfour
|
|
mknod mt$twentyeight b $blk $twentyeight
|
|
mknod nmt$sixteen b $blk $twenty ;: v7 compatibility
|
|
mknod nmt$twentyfour b $blk $twentyeight ;: ditto
|
|
mknod nrmt$sixteen c $chr $twenty ;: ditto
|
|
mknod nrmt$twentyfour c $chr $twentyeight ;: ditto
|
|
mknod rmt$sixteen c $chr $sixteen
|
|
mknod rmt$twenty c $chr $twenty
|
|
mknod rmt$twentyfour c $chr $twentyfour
|
|
mknod rmt$twentyeight c $chr $twentyeight
|
|
fi
|
|
if [ `expr $i : '\(..\)'` = ut ]
|
|
then
|
|
mknod mt$twenty b $blk $twenty
|
|
mknod rmt$twenty c $chr $twenty
|
|
fi
|
|
done
|
|
;;
|
|
*)
|
|
echo bad controller for tape in: $1
|
|
;;
|
|
esac
|
|
umask 77
|
|
;;
|
|
|
|
rk*)
|
|
# The 2.11BSD rk driver doesn't support partitions. We create
|
|
# a single block and charater inode pair for each unit and
|
|
# call it rkNh.
|
|
umask 2 ; unit=`expr $i : '..\(.*\)'`
|
|
case $i in
|
|
rk*) name=rk; blk=6; chr=15;;
|
|
esac
|
|
mknod ${name}${unit}h b ${blk} ${unit}
|
|
mknod r${name}${unit}h c ${chr} ${unit}
|
|
chgrp operator ${name}${unit}h r${name}${unit}h
|
|
chmod 640 ${name}${unit}h r${name}${unit}h
|
|
;;
|
|
|
|
rx*)
|
|
umask 2
|
|
name=rx; blk=8; chr=17
|
|
mknod ${name}0a b ${blk} 0
|
|
mknod ${name}1a b ${blk} 1
|
|
mknod ${name}0b b ${blk} 2
|
|
mknod ${name}1b b ${blk} 3
|
|
mknod r${name}0a c ${chr} 0
|
|
mknod r${name}1a c ${chr} 1
|
|
mknod r${name}0b c ${chr} 2
|
|
mknod r${name}1b c ${chr} 3
|
|
chgrp operator ${name}[01][ab] r${name}[01][ab]
|
|
chmod 640 ${name}[01][ab] r${name}[01][ab]
|
|
;;
|
|
|
|
ram*)
|
|
# Note, this must come *before* the "ra*". The entry "rram" is for
|
|
# auto fscks when ram is mentioned in /etc/fstab.
|
|
umask 2
|
|
mknod ram b 3 0
|
|
ln ram rram
|
|
chgrp operator ram
|
|
chmod 640 ram
|
|
umask 77
|
|
;;
|
|
|
|
br*|hk*|ra*|si*|xp*|rl*)
|
|
umask 2 ; unit=`expr $i : '..\(.*\)'`
|
|
case $i in
|
|
br*) name=rp; blk=11; chr=20;;
|
|
hk*) name=hk; blk=4; chr=13;;
|
|
ra*) name=ra; blk=5; chr=14;;
|
|
si*) name=si; blk=9; chr=18;;
|
|
xp*) name=xp; blk=10; chr=19;;
|
|
rl*) name=rl; blk=7; chr=16;;
|
|
esac
|
|
case $unit in
|
|
0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|\
|
|
17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)
|
|
mknod ${name}${unit}a b $blk `expr $unit '*' 8 + 0`
|
|
mknod ${name}${unit}b b $blk `expr $unit '*' 8 + 1`
|
|
mknod ${name}${unit}c b $blk `expr $unit '*' 8 + 2`
|
|
mknod ${name}${unit}d b $blk `expr $unit '*' 8 + 3`
|
|
mknod ${name}${unit}e b $blk `expr $unit '*' 8 + 4`
|
|
mknod ${name}${unit}f b $blk `expr $unit '*' 8 + 5`
|
|
mknod ${name}${unit}g b $blk `expr $unit '*' 8 + 6`
|
|
mknod ${name}${unit}h b $blk `expr $unit '*' 8 + 7`
|
|
mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0`
|
|
mknod r${name}${unit}b c $chr `expr $unit '*' 8 + 1`
|
|
mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2`
|
|
mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3`
|
|
mknod r${name}${unit}e c $chr `expr $unit '*' 8 + 4`
|
|
mknod r${name}${unit}f c $chr `expr $unit '*' 8 + 5`
|
|
mknod r${name}${unit}h c $chr `expr $unit '*' 8 + 7`
|
|
mknod r${name}${unit}g c $chr `expr $unit '*' 8 + 6`
|
|
chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h]
|
|
chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
|
|
;;
|
|
*)
|
|
echo bad unit for disk in: $i
|
|
;;
|
|
esac
|
|
umask 77
|
|
;;
|
|
|
|
dz*)
|
|
unit=`expr $i : 'dz\(.*\)'`
|
|
case $unit in
|
|
0|1|2|3|4|5|6|7)
|
|
eval `echo $unit | awk ' { u = $1 } END {
|
|
for (i = 0; i < 8; i++)
|
|
printf("mknod tty%02d c 2 %d; ",u*8+i,u*8+i); }'`
|
|
;;
|
|
*)
|
|
echo bad unit for dz in: $i
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
#
|
|
# we may want dmz and dmf someday...
|
|
# dhu*|dh*|dmf*|dmz*)
|
|
dhv*|dhu*|dh*)
|
|
case $i in
|
|
# dmz*) name=dmz; major=37; count=24;
|
|
# unit=`expr $i : "$name\(.*\)"`
|
|
# case $unit in
|
|
# 0) ch=a ;; 1) ch=b ;; 2) ch=c ;; 3) ch=e ;;
|
|
# 4) ch=f ;; 5) ch=g ;;
|
|
# *) echo bad unit for $name in: $i ;;
|
|
# esac;;
|
|
# dmf*) name=dmf; major=22; count=8;
|
|
# unit=`expr $i : "$name\(.*\)"`
|
|
# case $unit in
|
|
# 0) ch=A ;; 1) ch=B ;; 2) ch=C ;; 3) ch=E ;;
|
|
# 4) ch=F ;; 5) ch=G ;; 6) ch=H ;; 7) ch=I ;;
|
|
# *) echo bad unit for $name in: $i ;;
|
|
# esac;;
|
|
dhv*) name=dhv; major=24; count=8;
|
|
unit=`expr $i : "$name\(.*\)"`;
|
|
case $unit in
|
|
0) ch=S ;; 1) ch=T ;; 2) ch=U ;; 3) ch=V ;;
|
|
4) ch=W ;; 5) ch=X ;; 6) ch=Y ;; 7) ch=Z ;;
|
|
*) echo bad unit for $name in: $i ;;
|
|
esac;;
|
|
dhu*) name=dhu; major=4; count=16;
|
|
unit=`expr $i : "$name\(.*\)"`;
|
|
case $unit in
|
|
0) ch=S ;; 1) ch=T ;; 2) ch=U ;; 3) ch=V ;;
|
|
4) ch=W ;; 5) ch=X ;; 6) ch=Y ;; 7) ch=Z ;;
|
|
*) echo bad unit for $name in: $i ;;
|
|
esac;;
|
|
dh*) name=dh; major=3; count=16;
|
|
unit=`expr $i : "$name\(.*\)"`
|
|
case $unit in
|
|
0) ch=h ;; 1) ch=i ;; 2) ch=j ;; 3) ch=k ;;
|
|
*) echo bad unit for $name in: $i ;;
|
|
esac;;
|
|
esac
|
|
eval `echo $ch $unit $major $count |
|
|
awk ' { ch = $1; u = $4 * $2; m = $3; cnt = $4 } END {
|
|
for (i = 0; i < cnt; i++)
|
|
if (i < 10)
|
|
printf("mknod tty%s%x c %d %d; ",ch,i,m,u+i);
|
|
else
|
|
printf("mknod tty%s%c c %d %d; ",ch,87+i,m,u+i); }'`
|
|
;;
|
|
|
|
# extra DL-11 units not including the console. unit numbers start at 1 because
|
|
# the console is always unit 0. Seven units (1 - 7) are defined for the 11/93
|
|
# and 11/94. Device name is "ttyl?". The DH range was restricted from 'h'-'o'
|
|
# to 'h' - 'k' (very unlikely that more than 64 channels of DH-11 will or could
|
|
# be put on an 11.
|
|
|
|
dl*)
|
|
name=dl; major=0; ch=l
|
|
unit=`expr $i : "$name\(.*\)"`
|
|
case $unit in
|
|
1|2|3|4|5|6|7)
|
|
mknod tty${ch}${unit} c $major $unit;
|
|
;;
|
|
*)
|
|
echo bad unit for $name in: $i
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
# we may want va and vp someday...
|
|
# lp*|va*|vp*)
|
|
lp*|dn*)
|
|
case $i in
|
|
lp*) name=lp; major=5;;
|
|
dn*) name=dn; major=21;;
|
|
# va*) name=va; major=10;;
|
|
# vp*) name=vp; major=6;;
|
|
esac
|
|
unit=`expr $i : "$name\(.*\)"`
|
|
case $unit in
|
|
0|1|2|3|4|5|6|7)
|
|
mknod $i c $major $unit;
|
|
chmod 666 $i
|
|
;;
|
|
*)
|
|
echo bad unit for $name in: $i
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
pty*)
|
|
class=`expr $i : 'pty\(.*\)'`
|
|
case $class in
|
|
0) offset=0 name=p;;
|
|
1) offset=16 name=q;;
|
|
2) offset=32 name=r;;
|
|
3) offset=48 name=s;;
|
|
4) offset=64 name=t;;
|
|
5) offset=80 name=u;;
|
|
*) echo bad unit for pty in: $i;;
|
|
esac
|
|
case $class in
|
|
0|1|2|3|4|5)
|
|
umask 0
|
|
eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
|
|
for (i = 0; i < 16; i++)
|
|
printf("mknod tty%s%x c 11 %d; \
|
|
mknod pty%s%x c 10 %d; ", \
|
|
n, i, b+i, n, i, b+i); }'`
|
|
umask 77
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
dr*)
|
|
unit=`expr $i : '..\(.*\)'`
|
|
case $i in
|
|
dr*) name=dr; chr=12;;
|
|
esac
|
|
case $unit in
|
|
0|1|2|3|4|5|6|7)
|
|
umask 0
|
|
mknod ${name}${unit} c ${chr} ${unit}
|
|
umask 77
|
|
;;
|
|
*)
|
|
echo bad unit for ${name} in: $i
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
ingreslock)
|
|
mknod ingreslock c 25 0
|
|
chown ingres ingreslock
|
|
chmod 200 ingreslock
|
|
;;
|
|
|
|
local)
|
|
sh MAKEDEV.local
|
|
;;
|
|
esac
|
|
done
|