freebsd-nq/etc/MAKEDEV

1516 lines
35 KiB
Plaintext
Raw Normal View History

#!/bin/sh -
#
# Copyright (c) 1990 The Regents of the University of California.
# All rights reserved.
#
# Written and contributed by W. Jolitz 12/90
#
# Redistribution and use in source and binary forms are permitted provided
# that: (1) source distributions retain this entire copyright notice and
# comment, and (2) distributions including binaries display the following
# acknowledgement: ``This product includes software developed by the
# University of California, Berkeley and its contributors'' in the
# documentation or other materials provided with the distribution and in
# all advertising materials mentioning features or use of this software.
# Neither the name of the University nor the names of its contributors may
# be used to endorse or promote products derived from this software without
# specific prior written permission.
# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
# @(#)MAKEDEV 5.2 (Berkeley) 6/22/90
# $FreeBSD$
#
# Device "make" file. Valid arguments:
# all makes all known devices, standard number of units (or close)
# std standard devices
# jail suitable for a jail(8)
# local configuration specific devices
# mach-4 mach4&lites+devices for Mach's XFree86 distribution
# (see http://www.cs.hut.fi/lites.html for more info on LITES)
#
# Tapes:
# wt* QIC-interfaced (e.g. not SCSI) 3M cartridge tape
1998-09-15 10:21:35 +00:00
# sa* SCSI Sequential Access Devices
#
# Disks:
# acd* ATAPI CD-ROM disks
# amrd* AMI MegaRAID
# cd* SCSI CD-ROM disks
# da* SCSI Direct Access Devices
# fd* floppy disk drives (3 1/2", 5 1/4")
# fla* M-Systems DiskOnChip
# ida* Compaq Smart-2 RAID
# matcd* Matsushita (Panasonic) CD-ROM disks
# mcd* Mitsumi CD-ROM disks
# md* Memory (or malloc) disk
# mlx* Mylex DAC960 RAID controllers
# mlxd* Mylex DAC960 RAID disk volumes
# scd* Sony CD-ROM disks
# vn* vnode disks
# wd* "Winchester" disk drives (ST506,IDE,ESDI,RLL,...)
# wfd* IDE floppy disk drives (LS-120)
#
# Console ports:
# vty* virtual console devices for syscons/pcvt/codrv
1995-03-12 15:25:32 +00:00
#
# Pointing devices:
# mse* Logitech and ATI Inport bus mouse
# psm* PS/2 mouse
1996-09-08 23:56:27 +00:00
# sysmouse Mousesystems mouse emulator for syscons
#
# Time devices:
# refclock-* serial ports used by xntpd parse refclocks
#
# Terminal ports:
1995-03-12 15:25:32 +00:00
# tty* general purpose serial ports
# cua* dialout serial ports
# ttyA* Specialix SI/XIO dialin ports ('*' = number of devices)
# cuaA* Specialix SI/XIO dialout ports
# ttyD* Digiboard - 16 dialin ports
# cuaD* Digiboard - 16 dialout ports
# ttyR* Rocketport dialin ports
# cuaR* Rocketport dialout ports
#
# Pseudo terminals:
# pty* set of 32 master and slave pseudo terminals
# vty* virtual terminals using syscons/pcvt/codrv console
#
1998-11-12 22:45:24 +00:00
# Parallel port:
# lpt* Printer
# ppi* Parallel port i/o
# pps* Pulse per second timing interface
1998-11-12 22:45:24 +00:00
#
# I2C and SMBus:
# iic* I2C devices
# smb* SMBUS devices
#
# USB devices:
1999-08-21 18:01:42 +00:00
# usb* USB bus control device
# ums* mouse
# ulpt* printer
# ugen* generic USB device
#
# SCSI devices (other than CD-ROM, tape and disk):
# ch* SCSI Media-Changer (juke box) driver
# ssc The ``super scsi'' device
# worm* WORM driver
# pt* Processor Type (HP scanner, as one example)
1998-09-15 10:21:35 +00:00
# pass* CAM Passthrough device
#
# PC-CARD (previously called PCMCIA) support
# card* PC-CARD slots
#
# ISDN devices:
# i4b isdnd call control device
# i4bctl debugging control device
# i4btrc* trace data interface(s), one per passive card
# i4btel* telephony interface(s)
# i4bteld* telephony dialout interface(s)
# i4brbch* raw b channel access device(s)
#
# Special purpose devices:
# apm Advanced Power Management BIOS
# apmctl APM BIOS control device
# bpf* packet filter
# speaker pc speaker
# tw* xten power controller
# snd* various sound cards
1995-03-12 15:25:32 +00:00
# pcaudio PCM audio driver
# socksys iBCS2 socket system driver
# vat VAT compatibility audio driver (requires snd*)
# gsc Genius GS-4500 hand scanner
1995-01-25 21:21:28 +00:00
# joy pc joystick
# tun* Tunneling IP device
# snp* tty snoop devices
1996-01-31 15:03:18 +00:00
# spigot Video Spigot video acquisition card
# ctx* Cortex-I video acquisition card
1996-01-31 15:03:18 +00:00
# meteor* Matrox Meteor video acquisition card (pci)
# bktr* Bt848 based video acquisition card (pci)
# labpc* National Instrument's Lab-PC and LAB-PC+
1996-03-26 21:04:54 +00:00
# perfmon CPU performance-monitoring counters
# pci PCI configuration-space access from user mode
1999-01-06 16:18:05 +00:00
# kbd keyboard devices
#
if [ -n "$MAKEDEVPATH" ]; then
PATH="$MAKEDEVPATH"
else
PATH=/sbin:/bin
fi
umask 77
# Usage: die exitcode msg
die() {
echo $2
exit $1
}
# Convert integer to partition name
dkitop() {
local p
case $1 in
0) p=a;; 1) p=b;; 2) p=c;; 3) p=d;; 4) p=e;; 5) p=f;; 6) p=g;; 7) p=h;;
*) p="?";;
esac
echo $p
}
# Convert integer to slice name
dkitos() {
local s
case $1 in
0) s="";;
1) s="";;
*) s=s$(($1-1));;
esac
echo $s
}
# Convert disk (type, unit, slice, partition) to minor number
dkminor()
{
echo $(($1 << 25 | ($2 / 32) << 21 | ($2 % 32) << 3 | $3 << 16 | $4))
}
1998-01-03 11:53:52 +00:00
# Override mknod(2) to add extra handling to it.
mknod() {
rm -f "$1" || exit 1
1998-01-03 11:53:52 +00:00
/sbin/mknod "$@" || die 2 "/sbin/mknod $@ failed"
chown root:wheel "$1" || exit 1
}
# Convert tape (ctrl, unit, mode, access) to minor number
saminor()
{
echo $(($1 << 29 | ($2 / 16) << 16 | ($2 % 16) << 4 | $3 << 2 | $4))
}
# Convert the last character of a tty name to a minor number.
ttyminor()
{
case $unit in
[0-9]) m=$unit;;
a) m=10;; b) m=11;; c) m=12;; d) m=13;; e) m=14;; f) m=15;; g) m=16;;
h) m=17;; i) m=18;; j) m=19;; k) m=20;; l) m=21;; m) m=22;; n) m=23;;
o) m=24;; p) m=25;; q) m=26;; r) m=27;; s) m=28;; t) m=29;; u) m=30;;
v) m=31;;
*) m="?";;
esac
echo $m
}
# Raw partition for disks
dkrawpart=2
# Compatibility slice for disks
dkcompatslice=0
# Raw slice for disks
dkrawslice=1
# Standard umasks
disk_umask=037 # allow group operator to read disks
tape_umask=017 # allow group operator to read/write tapes
for i in $*; do
case $i in
all)
sh MAKEDEV std # standard
sh MAKEDEV fd0 fd1 # bdev, floppy disk
sh MAKEDEV da0 da1 da2 da3 # bdev, SCSI disk
sh MAKEDEV ad0 ad1 ad2 ad3 # bdev, ATA disk
sh MAKEDEV acd0 afd0 ast0 # bdev, ATAPI devices
sh MAKEDEV wd0 wd1 wd2 wd3 # bdev, OLD disk
sh MAKEDEV wcd0 wfd0 wst0 # bdev, OLD ATAPI devs
sh MAKEDEV vn0 # bdev, virtual disk
sh MAKEDEV cd0 matcd0 mcd0 scd0 # bdev, cdrom
sh MAKEDEV sa0 wt0 # bdev, tape
sh MAKEDEV vty12 # cdev, virtual tty
sh MAKEDEV cuaa0 cuaa1 cuaa2 cuaa3 # cdev, serial tty
sh MAKEDEV pty0 # cdev, pseudo tty
sh MAKEDEV ttyd0 ttyd1 ttyd2 ttyd3 # cdev, serial tty
1999-01-06 16:18:05 +00:00
sh MAKEDEV kbd0 # cdev, keyboard
sh MAKEDEV mse0 psm0 sysmouse # cdev, mouse
sh MAKEDEV pcaudio speaker # cdev, noise
sh MAKEDEV lpt0 lpt1 lpt2 # cdev, printer
1998-11-12 22:45:24 +00:00
sh MAKEDEV ppi0 ppi1 ppi2 # cdev, parallel port
sh MAKEDEV iic0 iic1 # cdev, I2C device
sh MAKEDEV smb0 smb1 # cdev, SMBus device
sh MAKEDEV usb usb0 ums0 ulpt0 ugen0 # cdev, USB devices
1999-10-10 15:13:48 +00:00
sh MAKEDEV bpf0 tun0 # cdev, network
sh MAKEDEV ch0 perfmon tw0 # cdev, miscellaneous
sh MAKEDEV apm apmctl card0 card1 card2 card3 # cdev, laptop
1998-09-15 10:21:35 +00:00
sh MAKEDEV pass4 xpt2 # cdev, CAM
sh MAKEDEV i4b i4bctl i4btrc0 i4btrc1 # cdev, ISDN
sh MAKEDEV i4btel0 i4btel1 i4bteld0 i4bteld1 # cdev, ISDN
sh MAKEDEV i4brbch0 i4brbch1 # cdev, ISDN
;;
# a much restricted set of the above, to save precious i-nodes on the
# fixit floppy
fixit)
sh MAKEDEV std # standard
sh MAKEDEV fd0 # bdev, floppy disk
sh MAKEDEV da0 # bdev, SCSI disk
sh MAKEDEV ad0 # bdev, ATA disk
sh MAKEDEV acd0 afd0 ast0 # bdev, ATAPI devices
sh MAKEDEV wd0 # bdev, OLD disk
sh MAKEDEV wcd0 wfd0 wst0 # bdev, OLD ATAPI devs
sh MAKEDEV vn0 # bdev, virtual disk
sh MAKEDEV cd0 # bdev, cdrom
sh MAKEDEV sa0 # bdev, tape
sh MAKEDEV vty2 # cdev, virtual tty
sh MAKEDEV cuaa0 # cdev, serial tty
sh MAKEDEV pty0 # cdev, pseudo tty
sh MAKEDEV ttyd0 # cdev, serial tty
sh MAKEDEV kbd0 # cdev, keyboard
sh MAKEDEV mse0 psm0 sysmouse # cdev, mouse
sh MAKEDEV lpt0 # cdev, printer
sh MAKEDEV ppi0 # cdev, parallel port
sh MAKEDEV iic0 # cdev, I2C device
sh MAKEDEV smb0 # cdev, SMBus device
sh MAKEDEV usb usb0 ums0 ulpt0 ugen0 # cdev, USB devices
sh MAKEDEV tun0 # cdev, network
sh MAKEDEV ch0 # cdev, miscellaneous
sh MAKEDEV apm apmctl card0 # cdev, laptop
sh MAKEDEV pass1 xpt1 # cdev, CAM
sh MAKEDEV i4b i4bctl i4btrc0 i4btrc1 # cdev, ISDN
sh MAKEDEV i4btel0 i4bteld0 # cdev, ISDN
sh MAKEDEV i4brbch0 # cdev, ISDN
rm -f fd/[1-9]?
;;
std)
mknod console c 0 0; chmod 600 console
mknod kmem c 2 1; chmod 640 kmem; chgrp kmem kmem
mknod mem c 2 0; chmod 640 mem; chgrp kmem mem
mknod null c 2 2; chmod 666 null
mknod random c 2 3; chmod 644 random
mknod urandom c 2 4; chmod 644 urandom
mknod zero c 2 12; chmod 666 zero
mknod io c 2 14; chmod 600 io
mknod tty c 1 0; chmod 666 tty
mknod klog c 7 0; chmod 600 klog
mknod stdin c 22 0; chmod 666 stdin
mknod stdout c 22 1; chmod 666 stdout
mknod stderr c 22 2; chmod 666 stderr
mknod pci c 78 0; chmod 644 pci
mkdir -p fd
(cd fd && i=0 &&
while [ $i -lt 64 ]; do
mknod $i c 22 $i
i=$(($i + 1))
done
)
chown -R root:wheel fd
chmod 555 fd
chmod 666 fd/*
;;
jail)
sh MAKEDEV std pty0
1999-11-24 19:14:11 +00:00
rm mem kmem pci io klog # for security
ln -sf null mem # for libkvm (ab)users
ln -sf null kmem # --//--
;;
mach-4)
mknod iopl c 22 0
mknod kbd c 23 0
mknod mouse c 24 0
mknod time c 25 0
mknod timezone c 26 0
;;
# Create device files for new Archive/Wangtek QIC-02 tape driver (vak)
wt*)
umask $tape_umask
u=`expr $i : '..\(.*\)'`
if [ -z "${u}" ]; then u=0; fi
mknod rwt${u} c 10 `expr 0 + $u` # default density, 512b blocks
mknod nrwt${u} c 10 `expr 4 + $u`
From: Sergey Ryzhkov, Serge Vakulenko E-mail: <sir@kiae.su>, <vak@zebub.msk.su> added new /dev/wt entries for wt.c version 1.3 8) Some controllers support only 1024 block length. Setting WT_BSIZE bit in device minor number turns on this mode. Minor number structure: 0bfffuuu Fields: uuu - Unit number. It's possible to install up to three tape controllers on the same machine, using DRQs 1..3. Hence, unit number can lie in range 0..2. fff - Tape format number: 0 - /dev/rwt0 - default density (auto select) 1 - /dev/rwt0a - QIC 11 (obsolete) 2 - /dev/rwt0b - QIC 24 (60 megabytes) 3 - /dev/rwt0c - QIC 120 (120 megabytes) 4 - /dev/rwt0d - QIC 150 (150 megabytes) 5 - /dev/rwt0e - QIC 300 (300 megabytes?) 6 - /dev/rwt0f - QIC 600 (600 megabytes?) b - Long block size flag. With this bit set, the driver will perform all i/o operations with the controller using 1024-byte blocks, instead of 512 ones. Some controllers need it (CMS for example). If you Wangtek controller does not stream well, you can try to use /dev/rWt0 device instead of /dev/rwt0 (uncomment needed lines in /dev/MAKEDEV to create it). Block interface (writing blocks less than 2048 bytes) is not functioning pwoperly. Use raw interface instead. Thanks to all who helped to test it on the following hardware: Controller Drive Volume Interface Thanks to --------------------------------------------------------------------------- Archive SC-499 Archive 2150L 150 Meg QIC-02 KIAE CMS? ? 150 Meg QIC-02 KIAE Everex EV 831/833 ? ? QIC-36 Joergen Haegg Wangtek ASSY Wangtek 60 Meg QIC-02 Ken Whedbee Tecmar QT150i? Wangtek 5150EQ ? QIC-02? Marko Teiste ? Wangtek 5099EK 60 Meg QIC-36 Robert Shien Archive SC400S ? 60 Meg ? Warren Toomey
1993-12-14 11:11:37 +00:00
# mknod rWt${u} c 10 `expr 64 + $u` # default density, 1024b blocks
# mknod nrWt${u} c 10 `expr 68 + $u`
mknod rwt${u}b c 10 `expr 16 + $u` # 60 megabytes
mknod nrwt${u}b c 10 `expr 20 + $u`
1995-03-12 15:25:32 +00:00
mknod rwt${u}c c 10 `expr 24 + $u` # 120 megabytes
From: Sergey Ryzhkov, Serge Vakulenko E-mail: <sir@kiae.su>, <vak@zebub.msk.su> added new /dev/wt entries for wt.c version 1.3 8) Some controllers support only 1024 block length. Setting WT_BSIZE bit in device minor number turns on this mode. Minor number structure: 0bfffuuu Fields: uuu - Unit number. It's possible to install up to three tape controllers on the same machine, using DRQs 1..3. Hence, unit number can lie in range 0..2. fff - Tape format number: 0 - /dev/rwt0 - default density (auto select) 1 - /dev/rwt0a - QIC 11 (obsolete) 2 - /dev/rwt0b - QIC 24 (60 megabytes) 3 - /dev/rwt0c - QIC 120 (120 megabytes) 4 - /dev/rwt0d - QIC 150 (150 megabytes) 5 - /dev/rwt0e - QIC 300 (300 megabytes?) 6 - /dev/rwt0f - QIC 600 (600 megabytes?) b - Long block size flag. With this bit set, the driver will perform all i/o operations with the controller using 1024-byte blocks, instead of 512 ones. Some controllers need it (CMS for example). If you Wangtek controller does not stream well, you can try to use /dev/rWt0 device instead of /dev/rwt0 (uncomment needed lines in /dev/MAKEDEV to create it). Block interface (writing blocks less than 2048 bytes) is not functioning pwoperly. Use raw interface instead. Thanks to all who helped to test it on the following hardware: Controller Drive Volume Interface Thanks to --------------------------------------------------------------------------- Archive SC-499 Archive 2150L 150 Meg QIC-02 KIAE CMS? ? 150 Meg QIC-02 KIAE Everex EV 831/833 ? ? QIC-36 Joergen Haegg Wangtek ASSY Wangtek 60 Meg QIC-02 Ken Whedbee Tecmar QT150i? Wangtek 5150EQ ? QIC-02? Marko Teiste ? Wangtek 5099EK 60 Meg QIC-36 Robert Shien Archive SC400S ? 60 Meg ? Warren Toomey
1993-12-14 11:11:37 +00:00
mknod nrwt${u}c c 10 `expr 28 + $u`
mknod rwt${u}d c 10 `expr 32 + $u` # 150 megabytes
mknod nrwt${u}d c 10 `expr 36 + $u`
# mknod rwt${u}e c 10 `expr 40 + $u` # 300 megabytes?
# mknod nrwt${u}e c 10 `expr 44 + $u`
# mknod rwt${u}f c 10 `expr 48 + $u` # 600 megabytes?
# mknod nrwt${u}f c 10 `expr 52 + $u`
chgrp operator r[Ww]t$u nr[Ww]t$u r[Ww]t$u[a-f] nr[Ww]t$u[a-f]
From: Sergey Ryzhkov, Serge Vakulenko E-mail: <sir@kiae.su>, <vak@zebub.msk.su> added new /dev/wt entries for wt.c version 1.3 8) Some controllers support only 1024 block length. Setting WT_BSIZE bit in device minor number turns on this mode. Minor number structure: 0bfffuuu Fields: uuu - Unit number. It's possible to install up to three tape controllers on the same machine, using DRQs 1..3. Hence, unit number can lie in range 0..2. fff - Tape format number: 0 - /dev/rwt0 - default density (auto select) 1 - /dev/rwt0a - QIC 11 (obsolete) 2 - /dev/rwt0b - QIC 24 (60 megabytes) 3 - /dev/rwt0c - QIC 120 (120 megabytes) 4 - /dev/rwt0d - QIC 150 (150 megabytes) 5 - /dev/rwt0e - QIC 300 (300 megabytes?) 6 - /dev/rwt0f - QIC 600 (600 megabytes?) b - Long block size flag. With this bit set, the driver will perform all i/o operations with the controller using 1024-byte blocks, instead of 512 ones. Some controllers need it (CMS for example). If you Wangtek controller does not stream well, you can try to use /dev/rWt0 device instead of /dev/rwt0 (uncomment needed lines in /dev/MAKEDEV to create it). Block interface (writing blocks less than 2048 bytes) is not functioning pwoperly. Use raw interface instead. Thanks to all who helped to test it on the following hardware: Controller Drive Volume Interface Thanks to --------------------------------------------------------------------------- Archive SC-499 Archive 2150L 150 Meg QIC-02 KIAE CMS? ? 150 Meg QIC-02 KIAE Everex EV 831/833 ? ? QIC-36 Joergen Haegg Wangtek ASSY Wangtek 60 Meg QIC-02 Ken Whedbee Tecmar QT150i? Wangtek 5150EQ ? QIC-02? Marko Teiste ? Wangtek 5099EK 60 Meg QIC-36 Robert Shien Archive SC400S ? 60 Meg ? Warren Toomey
1993-12-14 11:11:37 +00:00
umask 77
;;
# Individual slices.
ad*s*|afd*s*|amrd*s*|da*s*|fla*s*|ida*s*|md*s*|mlxd*s*|vn*s*|wd*s*|wfd*s*)
umask $disk_umask
case $i in
ad*s*) name=ad; chr=116;;
afd*s*) name=afd; chr=118;;
amrd*s*) name=amrd; chr=133;;
da*s*) name=da; chr=13;;
fla*s*) name=fla; chr=102;;
ida*s*) name=ida; chr=109;;
md*s*) name=md; chr=95;;
mlxd*s*) name=mlxd; chr=131;;
vn*s*) name=vn; chr=43;;
wd*s*) name=wd; chr=3;;
wfd*s*) name=wfd; chr=87;;
esac
case $i in
amrd*s*|mlxd*s*)
unit=`expr $i : '....\([0-9]*\)s'`
slice=`expr $i : '....[0-9]*s\([0-9]*\)'`
part=`expr $i : '....[0-9]*s[0-9]*\(.*\)'`
;;
afd*s*|fla*s*|ida*s*|wfd*s*)
unit=`expr $i : '...\([0-9]*\)s'`
slice=`expr $i : '...[0-9]*s\([0-9]*\)'`
part=`expr $i : '...[0-9]*s[0-9]*\(.*\)'`
;;
*)
unit=`expr $i : '..\([0-9]*\)s'`
slice=`expr $i : '..[0-9]*s\([0-9]*\)'`
part=`expr $i : '..[0-9]*s[0-9]*\(.*\)'`
;;
esac
case $unit in
[0-9]|[0-9][0-9]|[0-4][0-9][0-9]|50[0-9]|51[0-1])
case $slice in
[0-9]|[1-2][0-9]|30)
oldslice=$slice
slice=$(($slice+1))
slicename=`dkitos $slice`
minor=`dkminor 0 $unit $slice $dkrawpart`
mknod $name$unit$slicename c $chr $minor
mknod r$name$unit$slicename c $chr $minor
case $part in
[a-h])
case $oldslice in
0) slice=$oldslice ;;
esac
for part in 0 1 2 3 4 5 6 7
do
minor=`dkminor 0 $unit $slice $part`
partname=`dkitop $part`
mknod $name$unit$slicename$partname \
c $chr $minor
mknod r$name$unit$slicename$partname \
c $chr $minor
done
;;
"")
;;
*)
echo bad partition for disk in: $i
;;
esac
chgrp operator $name$unit$slicename* \
r$name$unit$slicename*
;;
*)
echo bad slice for disk in: $i
;;
esac
;;
*)
echo bad unit for disk in: $i "(unit=$unit, slice=$slice, part=$part)"
;;
esac
umask 77
;;
fd*)
umask $disk_umask
unit=`expr $i : '..\(.*\)'`
name=fd; chr=9
case $unit in
0|1|2|3)
mknod ${name}${unit} c $chr `expr $unit '*' 64`
mknod r${name}${unit} c $chr `expr $unit '*' 64`
# Fake BSD partitions
for i in a b c d e f g h
do
ln -f ${name}${unit} ${name}${unit}$i
ln -f r${name}${unit} r${name}${unit}$i
done
# User-readable and programmer-readable name sets
mknod ${name}${unit}.1720 c $chr `expr $unit '*' 64 + 1`
mknod r${name}${unit}.1720 c $chr `expr $unit '*' 64 + 1`
# ln -f ${name}${unit}.1720 ${name}${unit}135hs21
# ln -f r${name}${unit}.1720 r${name}${unit}135hs21
mknod ${name}${unit}.1480 c $chr `expr $unit '*' 64 + 2`
mknod r${name}${unit}.1480 c $chr `expr $unit '*' 64 + 2`
# ln -f ${name}${unit}.1480 ${name}${unit}135hs18
# ln -f r${name}${unit}.1480 r${name}${unit}135hs18
# ln -f ${name}${unit}.1480 ${name}${unit}96hs18
# ln -f r${name}${unit}.1480 r${name}${unit}96hs18
mknod ${name}${unit}.1440 c $chr `expr $unit '*' 64 + 3`
mknod r${name}${unit}.1440 c $chr `expr $unit '*' 64 + 3`
# ln -f ${name}${unit}.1440 ${name}${unit}135
# ln -f r${name}${unit}.1440 r${name}${unit}135
# ln -f ${name}${unit}.1440 ${name}${unit}135ds18
# ln -f r${name}${unit}.1440 r${name}${unit}135ds18
# ln -f ${name}${unit}.1440 ${name}${unit}96ds18
# ln -f r${name}${unit}.1440 r${name}${unit}96ds18
mknod ${name}${unit}.1200 c $chr `expr $unit '*' 64 + 4`
mknod r${name}${unit}.1200 c $chr `expr $unit '*' 64 + 4`
# ln -f ${name}${unit}.1200 ${name}${unit}96
# ln -f r${name}${unit}.1200 r${name}${unit}96
# ln -f ${name}${unit}.1200 ${name}${unit}96ds15
# ln -f r${name}${unit}.1200 r${name}${unit}96ds15
# ln -f ${name}${unit}.1200 ${name}${unit}135ds15
# ln -f r${name}${unit}.1200 r${name}${unit}135ds15
mknod ${name}${unit}.820 c $chr `expr $unit '*' 64 + 5`
mknod r${name}${unit}.820 c $chr `expr $unit '*' 64 + 5`
# ln -f ${name}${unit}.820 ${name}${unit}96hs10
# ln -f r${name}${unit}.820 r${name}${unit}96hs10
# ln -f ${name}${unit}.820 ${name}${unit}135hs10
# ln -f r${name}${unit}.820 r${name}${unit}135hs10
mknod ${name}${unit}.800 c $chr `expr $unit '*' 64 + 6`
mknod r${name}${unit}.800 c $chr `expr $unit '*' 64 + 6`
# ln -f ${name}${unit}.800 ${name}${unit}96ds10
# ln -f r${name}${unit}.800 r${name}${unit}96ds10
# ln -f ${name}${unit}.800 ${name}${unit}135ds10
# ln -f r${name}${unit}.800 r${name}${unit}135ds10
mknod ${name}${unit}.720 c $chr `expr $unit '*' 64 + 7`
mknod r${name}${unit}.720 c $chr `expr $unit '*' 64 + 7`
# ln -f ${name}${unit}.720 ${name}${unit}96ds9
# ln -f r${name}${unit}.720 r${name}${unit}96ds9
# ln -f ${name}${unit}.720 ${name}${unit}135ds9
# ln -f r${name}${unit}.720 r${name}${unit}135ds9
mknod ${name}${unit}.360 c $chr `expr $unit '*' 64 + 8`
mknod r${name}${unit}.360 c $chr `expr $unit '*' 64 + 8`
# ln -f ${name}${unit}.360 ${name}${unit}48
# ln -f r${name}${unit}.360 r${name}${unit}48
# ln -f ${name}${unit}.360 ${name}${unit}48ds9
# ln -f r${name}${unit}.360 r${name}${unit}48ds9
mknod ${name}${unit}.640 c $chr `expr $unit '*' 64 + 9`
mknod r${name}${unit}.640 c $chr `expr $unit '*' 64 + 9`
# ln -f ${name}${unit}.640 ${name}${unit}96ds8
# ln -f r${name}${unit}.640 r${name}${unit}96ds8
# ln -f ${name}${unit}.640 ${name}${unit}135ds8
# ln -f r${name}${unit}.640 r${name}${unit}135ds8
mknod ${name}${unit}.1232 c $chr `expr $unit '*' 64 + 10`
mknod r${name}${unit}.1232 c $chr `expr $unit '*' 64 + 10`
# ln -f ${name}${unit}.1232 ${name}${unit}96ds8
# ln -f r${name}${unit}.1232 r${name}${unit}96ds8
# ln -f ${name}${unit}.1232 ${name}${unit}135ds8
# ln -f r${name}${unit}.1232 r${name}${unit}135ds8
chgrp operator ${name}${unit}* r${name}${unit}*
;;
*)
echo bad unit for disk in: $i
;;
esac
umask 77
;;
ad*|afd*|amrd*|da*|fla*|ida*|md*|mlxd*|vn*|wd*|wfd*)
umask $disk_umask
case $i in
ad*) name=ad; chr=116;;
afd*) name=afd; chr=118;;
amrd*) name=amrd; chr=133;;
da*) name=da; chr=13;;
fla*) name=fla; chr=102;;
ida*) name=ida; chr=109;;
md*) name=md; chr=95;;
mlxd*) name=mlxd; chr=131;;
vn*) name=vn; chr=43;;
wd*) name=wd; chr=3;;
wfd*) name=wfd; chr=87;;
esac
case $i in
amrd*|mlxd*)
unit=`expr $i : '....\(.*\)'`
;;
afd*|fla*|ida*|wfd*)
unit=`expr $i : '...\(.*\)'`
;;
*)
unit=`expr $i : '..\(.*\)'`
;;
esac
case $unit in
[0-9]|[0-9][0-9]|[0-4][0-9][0-9]|50[0-9]|51[0-1])
for slicepartname in s0h s1 s2 s3 s4
do
sh MAKEDEV $name$unit$slicepartname
done
;;
*)
echo bad unit for disk in: $i
;;
esac
umask 77
;;
ccd*)
umask $disk_umask
name=ccd
chr=74
1998-10-31 05:27:02 +00:00
unit=`expr $i : '...\(.*\)'`
case $unit in
[0-9]|[0-9][0-9]|[0-4][0-9][0-9]|50[0-9]|51[0-1])
for part in 0 1 2 3 4 5 6 7
do
minor=`dkminor 0 $unit 0 $part`
1998-10-31 05:27:02 +00:00
partname=`dkitop $part`
mknod $name$unit$partname c $chr $minor
1998-10-31 05:27:02 +00:00
mknod r$name$unit$partname c $chr $minor
done
chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h]
;;
*)
echo bad unit for disk in: $i
;;
esac
umask 77
;;
ssc*)
mknod ssc c 49 0
;;
# SCSI processor type driver
pt[0-9]*)
chr=61
name=pt
unit=`expr $i : 'pt\([0-9][0-9]*\)'`
if [ -z "${unit}" ]; then
unit=0
fi
unit=`expr $unit + 1 - 1`
mknod ${name}${unit} c $chr $unit
;;
1998-09-15 10:21:35 +00:00
# SCSI target mode sample driver
targ[0-9]*)
chr=65
name=targ
unit=`expr $i : 'targ\([0-9][0-9]*\)'`
if [ -z "${unit}" ]; then
1998-09-15 10:21:35 +00:00
unit=0
fi
unit=`expr $unit + 1 - 1`
mknod ${name}${unit} c $chr $unit
mknod ${name}.ctl c $chr 0xffff00ff
1998-09-15 10:21:35 +00:00
;;
# CAM transport layer device
xpt*)
# This major number is temporary
chr=104
name=xpt
units=`expr $i : 'xpt\(.*\)'`
if [ -z "${units}" ]; then
1998-09-15 10:21:35 +00:00
units=1
fi
i=0
while [ $i -lt $units ]; do
dname=$name$i
rm -rf $dname r$dname
mknod $dname c $chr $i
chown root:operator $dname
i=$(($i + 1))
done
1998-09-15 10:21:35 +00:00
;;
1998-09-15 10:21:35 +00:00
# CAM passthrough device
pass*|uk*)
# This major number is temporary
chr=31
name=pass
units=`expr $i : 'pass\(.*\)'`
if [ -z "${units}" ]; then
1998-09-15 10:21:35 +00:00
units=1
fi
i=0
while [ $i -lt $units ]; do
dname=$name$i
rm -rf $dname r$dname
mknod $dname c $chr $i
chown root:operator $dname
i=$(($i + 1))
done
1998-09-15 10:21:35 +00:00
;;
pty*)
class=`expr $i : 'pty\(.*\)'`
case $class in
0) offset=0 name=p;;
1) offset=32 name=q;;
2) offset=64 name=r;;
3) offset=96 name=s;;
# Note that xterm (at least) only look at p-s.
1995-03-12 15:25:32 +00:00
4) offset=128 name=P;;
5) offset=160 name=Q;;
6) offset=192 name=R;;
7) offset=224 name=S;;
# This still leaves [tuTU].
*) echo bad unit for pty in: $i;;
esac
umask 0
case $class in
0|1|2|3|4|5|6|7)
i=0
while [ $i -lt 32 ]; do
# This was an awk substr() before.
c=$(echo 0123456789abcdefghijklmnopqrstuv |
dd bs=1 skip=$i count=1 2>/dev/null)
mknod tty$name$c c 5 $(($offset + $i))
mknod pty$name$c c 6 $(($offset + $i))
i=$(($i + 1))
done
;;
esac
umask 77
;;
1998-09-15 10:21:35 +00:00
sa*)
umask $tape_umask
unit=`expr $i : '..\(.*\)'`
chr=14
case $unit in
[0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9])
mknod rsa${unit}.ctl c $chr `saminor 1 ${unit} 0 0`
for m in 0 1 2 3
do
mknod rsa${unit}.${m} c $chr `saminor 0 ${unit} ${m} 0`
mknod nrsa${unit}.${m} c $chr `saminor 0 ${unit} ${m} 1`
mknod ersa${unit}.${m} c $chr `saminor 0 ${unit} ${m} 2`
chgrp operator rsa${unit}.${m} nrsa${unit}.${m} \
ersa${unit}.${m}
done
ln -f rsa${unit}.0 rsa${unit}
ln -f nrsa${unit}.0 nrsa${unit}
ln -f ersa${unit}.0 ersa${unit}
;;
*)
echo bad unit for tape in: $i
1995-03-12 15:25:32 +00:00
;;
esac
umask 77
;;
ch*)
umask 37
unit=`expr $i : '..\(.*\)'`
case $i in
ch*) name=ch; chr=17;;
esac
case $unit in
0|1|2|3|4|5|6)
1998-09-15 10:21:35 +00:00
mknod ${name}${unit} c $chr $unit
chgrp operator ${name}${unit}
;;
*)
echo bad unit for media changer in: $i
;;
esac
umask 77
;;
ast*)
umask 2 ;
unit=`expr $i : '...\(.*\)'`
chr=119
case $unit in
0|1|2|3)
mknod rast${unit} c $chr `expr $unit '*' 8 + 0`
chgrp operator rast${unit}
chmod 640 rast${unit}
mknod nrast${unit} c $chr `expr $unit '*' 8 + 1`
chgrp operator nrast${unit}
chmod 640 nrast${unit}
;;
*)
echo bad unit for tape in: $i
;;
esac
umask 77
;;
acd*|cd*|mcd*|scd*)
umask $disk_umask
case $i in
acd*) units=`expr $i : '...\(.*\)'`; name=acd; chr=117;;
cd*) units=`expr $i : '..\(.*\)'`; name=cd; chr=15;;
mcd*) units=`expr $i : '...\(.*\)'`; name=mcd; chr=29;;
scd*) units=`expr $i : '...\(.*\)'`; name=scd; chr=45;;
esac
if [ -z "${units}" -o "${units}" -le 0 ]; then
1998-09-15 10:21:35 +00:00
units=1
fi
if [ "${units}" -le 31 ]; then
i=0
while [ $i -lt $units ]; do
dname=$name$i
rm -rf ${dname}* r${dname}*
mknod ${dname}a c $chr $(($i * 8))
mknod ${dname}c c $chr $(($i * 8 + 2))
mknod r${dname}a c $chr $(($i * 8))
mknod r${dname}c c $chr $(($i * 8 + 2))
chown root:operator ${dname}* r${dname}*
i=$(($i + 1))
done
1998-09-15 10:21:35 +00:00
else
echo "$i is invalid -- can't have more than 32 cd devices"
fi
umask 77
;;
matcd*)
umask 2
case $i in
matcd*) unit=`expr $i : '.....\(.*\)'`; name=matcd; chr=46;;
esac
case $unit in
0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15)
mknod ${name}${unit}a c $chr `expr $unit '*' 8 + 0`
mknod ${name}${unit}c c $chr `expr $unit '*' 8 + 2`
mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0`
mknod r${name}${unit}c c $chr `expr $unit '*' 8 + 2`
chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h]
chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
mknod ${name}${unit}la c $chr `expr $unit '*' 8 + 128`
mknod ${name}${unit}lc c $chr `expr $unit '*' 8 + 130`
mknod r${name}${unit}la c $chr `expr $unit '*' 8 + 128`
mknod r${name}${unit}lc c $chr `expr $unit '*' 8 + 130`
chgrp operator ${name}${unit}l[a-h] r${name}${unit}l[a-h]
chmod 640 ${name}${unit}l[a-h] r${name}${unit}l[a-h]
;;
*)
echo bad unit for disk in: $i
;;
esac
umask 77
;;
wcd*)
umask 2 ;
unit=`expr $i : '...\(.*\)'`
chr=69
case $unit in
0|1|2|3|4|5|6|7)
mknod wcd${unit}a c $chr `expr $unit '*' 8 + 0`
mknod rwcd${unit}a c $chr `expr $unit '*' 8 + 0`
mknod wcd${unit}c c $chr `expr $unit '*' 8 + 2`
mknod rwcd${unit}c c $chr `expr $unit '*' 8 + 2`
chgrp operator wcd${unit}[a-h] rwcd${unit}[a-h]
chmod 640 wcd${unit}[a-h] rwcd${unit}[a-h]
;;
*)
echo bad unit for disk in: $i
;;
esac
umask 77
;;
wst*)
umask 2 ;
unit=`expr $i : '...\(.*\)'`
chr=90
case $unit in
0|1|2|3)
mknod rwst${unit} c $chr `expr $unit '*' 8 + 0`
chgrp operator rwst${unit}
chmod 640 rwst${unit}
;;
esac
umask 77
;;
1998-11-12 22:45:24 +00:00
iic*)
unit=`expr $i : 'iic\(.*\)'`
mknod iic$unit c 105 $unit
;;
smb*)
unit=`expr $i : 'smb\(.*\)'`
mknod smb$unit c 106 $unit
;;
ppi*)
unit=`expr $i : 'ppi\(.*\)'`
1998-11-12 22:48:16 +00:00
mknod ppi$unit c 82 $unit
1998-11-12 22:45:24 +00:00
;;
pps*)
unit=`expr $i : 'pps\(.*\)'`
mknod pps$unit c 89 $unit
;;
usb)
mknod usb$unit c 108 255
;;
usb*)
unit=`expr $i : 'usb\(.*\)'`
mknod usb$unit c 108 $unit
;;
ums*)
unit=`expr $i : 'ums\(.*\)'`
mknod ums$unit c 111 $unit
;;
ulpt*)
unit=`expr $i : 'ulpt\(.*\)'`
mknod ulpt$unit c 113 $unit
;;
1999-01-12 01:31:13 +00:00
ugen*)
unit=`expr $i : 'ugen\([0-9][0-9]*\)'`
endpoint=`expr $i : 'ugen.*\.\([0-9][0-9]*\)'`
if [ -z "${unit}" ]; then
echo $i - Invalid unit number
fi
if [ -z "${endpoint}" ]; then # ugen0 & ugen0.1 - ugen0.15
mknod ugen$unit c 114 $(($unit * 16))
i=1
while [ $i -lt 16 ]; do
mknod ugen$unit.$i c 114 $(($unit * 16 + $i))
i=$(($i + 1))
done
else
minor=$(($unit * 16 + $endpoint))
mknod ugen$unit.$endpoint c 114 $minor
fi
1999-01-12 01:31:13 +00:00
;;
lpt*)
unit=`expr $i : 'lpt\(.*\)'`
mknod lpt$unit c 16 $unit
mknod lpctl$unit c 16 `expr $unit + 128`
;;
tw*)
unit=`expr $i : 'tw\(.*\)'`
mknod tw$unit c 19 $unit
chgrp operator tw$unit
;;
# Use this to create virtual consoles for syscons, pcvt or codrv
# ttyv0-b
# use as MAKEDEV vtyNN to create NN entries
vty*)
chr=12
units=`expr $i : 'vty\(.*\)'`
i=0
while [ $i -lt $units ]; do
mknod ttyv$(printf %01x $i) c $chr $i
i=$(($i + 1))
done
ln -fs ttyv0 vga # XXX X still needs this pccons relic
;;
bpf*)
nbpf=`expr $i : 'bpf\(.*\)$'`
unit=0
while [ $unit -le $nbpf ]; do
mknod bpf$unit c 23 $unit
unit=$(($unit + 1))
done
;;
speaker)
mknod speaker c 26 0
;;
cuaa?|cua?)
umask 7
1994-12-08 00:44:55 +00:00
unit=`expr $i : 'cua.*\(.\)$'`
m=`ttyminor $unit`
mknod cuaa$unit c 28 `expr $m + 128`
mknod cuaia$unit c 28 `expr $m + 32 + 128`
mknod cuala$unit c 28 `expr $m + 64 + 128`
chown uucp:dialer cua*a$unit
umask 77
;;
tty0?|ttyd?|tty?)
1994-12-08 00:44:55 +00:00
unit=`expr $i : 'tty.*\(.\)$'`
m=`ttyminor $unit`
mknod ttyd$unit c 28 $m
mknod ttyid$unit c 28 `expr $m + 32`
mknod ttyld$unit c 28 `expr $m + 64`
;;
cuac?)
umask 7
portlist="0 1 2 3 4 5 6 7 8 9 a b c d e f
g h i j k l m n o p q r s t u v"
major=48
card=`expr $i : 'cua.*\(.\)$'`
for unit in $portlist
do
minor=`ttyminor $unit`
minor=`expr $card \* 65536 + $minor`
name=$card$unit
mknod cuac$name c $major `expr $minor + 128`
mknod cuaic$name c $major `expr $minor + 32 + 128`
mknod cualc$name c $major `expr $minor + 64 + 128`
chown uucp:dialer cuac$name cuaic$name cualc$name
done
umask 77
;;
ttyc?)
portlist="0 1 2 3 4 5 6 7 8 9 a b c d e f
g h i j k l m n o p q r s t u v"
major=48
card=`expr $i : 'tty.*\(.\)$'`
for unit in $portlist
do
minor=`ttyminor $unit`
minor=`expr $card \* 65536 + $minor`
name=$card$unit
mknod ttyc$name c $major $minor
mknod ttyic$name c $major `expr $minor + 32`
mknod ttylc$name c $major `expr $minor + 64`
done
;;
# RISCom8 'rc' driver entries
cuam?)
1995-04-23 12:02:21 +00:00
umask 7
unit=`expr $i : 'cua.*\(.\)$'`
m=`ttyminor $unit`
mknod cuam$unit c 63 `expr $m + 128`
chown uucp:dialer cuam$unit
1995-04-23 12:02:21 +00:00
umask 77
;;
ttym?)
1995-04-23 12:02:21 +00:00
unit=`expr $i : 'tty.*\(.\)$'`
m=`ttyminor $unit`
mknod ttym$unit c 63 $m
1995-04-23 12:02:21 +00:00
;;
# Specialix SI/XIO.
# Note: these are 'base 1' to match the numbers on the panels, and to match
# the manual that comes with the system.
ttyA*)
major=68
nports=`expr $i : 'ttyA\(.*\)$'`
port=1
while [ $port -le $nports ]; do
minor=`expr $port - 1`
name=`expr $port + 1000 | cut -c 3-4`
mknod ttyA$name c $major $minor
mknod ttyiA$name c $major `expr $minor + 65536`
mknod ttylA$name c $major `expr $minor + 131072`
port=$(($port + 1))
done
# For the user-mode control program, 'sicontrol'
mknod si_control c 68 262144
;;
cuaA*)
umask 7
major=68
nports=`expr $i : 'cuaA\(.*\)$'`
port=1
while [ $port -le $nports ]; do
minor=`expr $port - 1`
name=`expr $port + 1000 | cut -c 3-4`
mknod cuaA$name c $major `expr $minor + 128`
mknod cuaiA$name c $major `expr $minor + 128 + 65536`
mknod cualA$name c $major `expr $minor + 128 + 131072`
chown uucp:dialer cuaA$name cuaiA$name cualA$name
port=$(($port + 1))
done
umask 77
;;
# Digiboard PC/?? 16 port card.
# The current scheme of minor numbering is:
#
# unused{14} CARD{2} major{8} CALLOUT{1} LOCK{1} INIT{1} PORT{5}
#
# CARD bitfield in future versions may be extended to 3 bits.
#
# See dgb(4)
#
ttyD?)
portlist="0 1 2 3 4 5 6 7 8 9 a b c d e f"
major=58
card=`expr $i : 'tty.*\(.\)$'`
for unit in $portlist
do
minor=`ttyminor $unit`
minor=`expr $card \* 65536 + $minor`
name=$card$unit
mknod ttyD$name c $major $minor
mknod ttyiD$name c $major `expr $minor + 32`
mknod ttylD$name c $major `expr $minor + 64`
done
;;
cuaD?)
umask 7
portlist="0 1 2 3 4 5 6 7 8 9 a b c d e f"
major=58
card=`expr $i : 'cua.*\(.\)$'`
for unit in $portlist
do
minor=`ttyminor $unit`
minor=`expr $card \* 65536 + $minor`
name=$card$unit
mknod cuaD$name c $major `expr $minor + 128`
mknod cuaiD$name c $major `expr $minor + 32 + 128`
mknod cualD$name c $major `expr $minor + 64 + 128`
chown uucp:dialer cua*D$name
done
umask 77
;;
ttyM*)
portlist="0 1 2 3 4 5 6 7 8 9 a b c d e f"
modulelist="a b c d"
major=101
card=`expr $i : 'tty.*\(.\)$'`
for unit in $modulelist
do
moduleminor=`ttyminor $unit`
moduleminor=`expr $moduleminor % 10 \* 16`
modulename=$unit
for unit in $portlist
do
minor=`ttyminor $unit`
minor=`expr $card \* 65536 + $minor + $moduleminor`
name=$card$modulename$unit
rm -f tty*M$name
mknod ttyM$name c $major $minor
mknod ttyiM$name c $major `expr $minor + 64`
mknod ttylM$name c $major `expr $minor + 128`
chown root:wheel tty*M$name
done
done
;;
cuaM?)
umask 7
portlist="0 1 2 3 4 5 6 7 8 9 a b c d e f"
modulelist="a b c d"
major=101
card=`expr $i : 'cua.*\(.\)$'`
for unit in $modulelist
do
moduleminor=`ttyminor $unit`
moduleminor=`expr $moduleminor % 10 \* 16`
modulename=$unit
for unit in $portlist
do
minor=`ttyminor $unit`
minor=`expr $card \* 65536 + $minor + $moduleminor`
name=$card$modulename$unit
rm -f cua*M$name
mknod cuaM$name c $major `expr $minor + 262144`
mknod cuaiM$name c $major `expr $minor + 64 + 262144`
mknod cualM$name c $major `expr $minor + 128 + 262144`
chown uucp:dialer cua*M$name
done
done
umask 77
;;
ttyR?)
major=81
BOARD=1; Rnum=0
MINOR=$(($BOARD * 65536))
controllers=$(
dmesg | while read first rest; do
case "\$first" in
RocketPort[0-4])
echo "\$first"
;;
esac
done
)
rm -f /dev/ttyR* /dev/ttyiR* /dev/ttylR*
for i in $controllers; do
ndevices=$(
dmesg | while read first bar ports rest; do
case "\$first" in
$i*)
echo "\$ports"
;;
esac
done
)
echo -n "Creating $ndevices devices for $i: "
dev=0
while [ $dev -lt $ndevices ]; do
mknod /dev/ttyR$Rnum c $major $MINOR
mknod /dev/ttylR$Rnum c $major $(($MINOR + 32))
mknod /dev/ttyiR$Rnum c $major $(($MINOR + 64))
Rnum=$(($Rnum + 1))
MINOR=$(($MINOR + 1))
dev=$(($dev + 1))
done
BOARD=$(($BOARD + 1))
MINOR=$(($BOARD * 65536))
echo " "
done
;;
cuaR?)
major=81
BOARD=1; Rnum=0
MINOR=$(($BOARD * 65536))
controllers=$(
dmesg | while read first rest; do
case "\$first" in
RocketPort[0-4])
echo "\$first"
;;
esac
done
)
rm -f /dev/cuaR* /dev/cuaiR* /dev/cualR*
for i in $controllers; do
ndevices=$(
dmesg | while read first bar ports rest; do
case "\$first" in
$i*)
echo "\$ports"
;;
esac
done
)
echo -n "Creating $ndevices devices for $i: "
dev=0
while [ $dev -lt $ndevices ]; do
mknod /dev/cuaR$Rnum c $major $(($MINOR + 128))
mknod /dev/cualR$Rnum c $major $(($MINOR + 128 + 32))
mknod /dev/cuaiR$Rnum c $major $(($MINOR + 128 + 64))
Rnum=$(($Rnum + 1))
MINOR=$(($MINOR + 1))
dev=$(($dev + 1))
done
BOARD=$(($BOARD + 1))
MINOR=$(($BOARD * 65536))
echo " "
done
chown uucp:dialer /dev/cuaR*
;;
mse*)
unit=`expr $i : 'mse\(.*\)'`
chr=27
mknod mse$unit c $chr `expr $unit '*' 2 + 1` # non-blocking for X11
;;
psm*)
unit=`expr $i : 'psm\(.*\)'`
chr=21
mknod psm$unit c $chr `expr $unit '*' 2 + 1` # non-blocking for X11
;;
mouse*)
1994-12-08 00:44:55 +00:00
name=`expr $i : 'mouse\(.*\)'`
if [ ! -c $name ]; then
$0 $name # make the appropriate device
fi
ln -fs $name mouse
;;
1994-04-21 14:08:27 +00:00
pcaudio)
mknod pcaudio c 24 0
mknod pcaudioctl c 24 128
1994-04-21 14:08:27 +00:00
;;
socksys)
mknod socksys c 41 0
mknod spx c 41 1
ln -fs socksys nfsd
chmod 666 socksys nfsd spx
;;
snd*)
#
# changes from Linux voxware
1996-01-31 15:03:18 +00:00
# minor Linux FreeBSD
# 8 sequencer2 (aka music0) music0
# 17 patmgr0 sequencer1
# 33 patmgr1 sequencer2
#
unit=`expr $i : 'snd\(.*\)'`
chr=30
# XXX write this less verbosely, like std
snd_security_hole=0 # XXX
umask $snd_security_hole
ln -fs mixer$unit mixer
ln -fs sequencer$unit sequencer
ln -fs dsp$unit dsp
ln -fs audio$unit audio
ln -fs dspW$unit dspW
ln -fs music$unit music
ln -fs pss$unit pss
mknod mixer$unit c $chr `expr $unit '*' 16 + 0`
mknod sequencer$unit c $chr `expr $unit '*' 16 + 1`
mknod midi$unit c $chr `expr $unit '*' 16 + 2`
mknod dsp$unit c $chr `expr $unit '*' 16 + 3`
mknod audio$unit c $chr `expr $unit '*' 16 + 4`
mknod dspW$unit c $chr `expr $unit '*' 16 + 5`
mknod sndstat c $chr 6
# minor number 7 is unused
mknod music$unit c $chr `expr $unit '*' 16 + 8`
mknod pss$unit c $chr `expr $unit '*' 16 + 9`
# minor numbers 10-15 are unused
umask 77
;;
vat)
mknod vatio c 25 128
chmod 660 vatio
;;
gsc*)
unit=`expr $i : 'gsc\(.*\)'`
mknod gsc${unit} c 47 $unit
mknod gsc${unit}p c 47 $(($unit + 8))
mknod gsc${unit}d c 47 $(($unit + 32))
mknod gsc${unit}pd c 47 $(($unit + 40))
chmod 666 gsc${unit}*
;;
apm)
mknod apm c 39 0
chgrp operator apm
chmod 660 apm
;;
apmctl)
mknod apmctl c 39 8
chgrp operator apmctl
chmod 660 apmctl
;;
card*)
unit=`expr $i : 'card\(.*\)'`
chr=50
mknod card$unit c $chr $unit
chmod 644 card$unit
;;
ttyx?|ttyy?|ttyz?)
case $i in
1995-03-12 15:25:32 +00:00
*0) unit=0;; *1) unit=1;; *2) unit=2;; *3) unit=3;;
*4) unit=4;; *5) unit=5;; *6) unit=6;; *7) unit=7;;
*8) unit=8;; *9) unit=9;; *a) unit=10;; *b) unit=11;;
*c) unit=12;; *d) unit=13;; *e) unit=14;; *f) unit=15;;
esac
case $i in
ttyy?) unit=`expr $unit \+ 16`;;
ttyz?) unit=`expr $unit \+ 32`;;
esac
mknod $i c 42 $unit
chown uucp:wheel $i
;;
cronyx)
mknod cronyx c 42 63
1995-03-12 15:25:32 +00:00
;;
1995-01-25 21:21:28 +00:00
joy)
mknod joy0 c 51 0
mknod joy1 c 51 1
chgrp operator joy0 joy1
chmod 640 joy0 joy1
1995-01-25 21:21:28 +00:00
;;
spigot)
1995-07-30 12:56:26 +00:00
mknod spigot c 11 0
chmod 444 spigot
;;
ctx?)
unit=`expr $i : 'ctx\(.*\)'`
mknod ctx$unit c 40 $unit
chmod 444 ctx$unit
;;
meteor?)
unit=`expr $i : 'meteor\(.*\)'`
mknod meteor$unit c 67 $unit
chmod 444 meteor$unit
;;
bktr?)
unit=`expr $i : 'bktr\(.*\)'`
mknod bktr$unit c 92 $unit
mknod tuner$unit c 92 $((16 + $unit ))
mknod vbi$unit c 92 $((32 + $unit ))
chmod 444 bktr$unit tuner$unit vbi$unit
;;
tun*)
ntun=`expr $i : 'tun\(.*\)$'`
unit=0
while [ $unit -le $ntun ]; do
mknod tun$unit c 52 $unit
chown uucp:dialer tun$unit
unit=$(($unit + 1))
done
;;
1996-09-08 23:56:27 +00:00
sysmouse)
mknod sysmouse c 12 128
mknod consolectl c 12 255
1996-09-08 23:56:27 +00:00
;;
1995-02-14 21:13:14 +00:00
snp?)
unit=`expr $i : 'snp\(.*\)'`
mknod snp$unit c 53 $unit
;;
# dufault@hda.com: If I do much more work on other A-D boards
# then eventually we'll have a "ad" and "dio" interface and some of these
# "labpcaio" ones will be gone.
# labpcaio: D-A and A-D.
# labpcdio: Digital in and Digital out.
#
labpc*)
umask 7
case $i in
labpcaio*)
name=labpcaio
unit=`expr $i : 'labpcaio\(.*\)'`
all="0 1 2 3 4 5 6 7"
offset=0
;;
labpcdio*)
name=labpcdio
unit=`expr $i : 'labpcdio\(.*\)'`
all="0 1 2 3"
offset=8
;;
*)
die 3 "Don't know LabPC type $i"
;;
esac
if [ -z "${unit}" ]; then
unit=all
fi
case $unit in
0|1|2|3|4|5|6|7)
mknod $name$unit c 66 `expr $offset + $unit `
;;
all)
for i in $all
do
mknod $name$i c 66 `expr $offset + $i `
done
;;
*)
echo "No such LabPC unit: $unit"
;;
esac
umask 77
;;
1996-03-26 21:04:54 +00:00
perfmon)
mknod perfmon c 2 32
chgrp kmem perfmon
chmod 640 perfmon
1996-03-26 21:04:54 +00:00
;;
1999-01-06 16:18:05 +00:00
kbd*)
unit=`expr $i : 'kbd\(.*\)'`
chr=112
mknod kbd$unit c $chr $unit
;;
i4b)
mknod i4b c 60 0
chown root:wheel i4b
chmod 600 i4b
;;
i4bctl)
mknod i4bctl c 55 0
chown root:wheel i4bctl
chmod 600 i4bctl
;;
i4brbch*)
unit=`expr $i : 'i4brbch\(.*\)'`
mknod i4brbch$unit c 57 $unit
chown root:wheel i4brbch$unit
chmod 600 i4brbch$unit
;;
i4bteld*)
offset=64
unit=`expr $i : 'i4bteld\(.*\)'`
mknod i4bteld$unit c 56 `expr $offset + $unit `
chown root:wheel i4bteld$unit
chmod 600 i4bteld$unit
;;
i4btel*)
unit=`expr $i : 'i4btel\(.*\)'`
mknod i4btel$unit c 56 $unit
chown root:wheel i4btel$unit
chmod 600 i4btel$unit
;;
i4btrc*)
unit=`expr $i : 'i4btrc\(.*\)'`
mknod i4btrc$unit c 59 $unit
chown root:wheel i4btrc$unit
chmod 600 i4btrc$unit
;;
mlx*)
unit=`expr $i : 'mlx\(.*\)'`
mknod mlx$unit c 130 $unit
chown root:wheel mlx$unit
chmod 600 mlx$unit
;;
local)
umask 0 # XXX should be elsewhere
sh MAKEDEV.local
umask 77
;;
*)
echo $i - no such device name
;;
esac
done