On Mon, May 20, 2002 at 02:43:28PM -0400, Nathan Hawkins <[EMAIL PROTECTED]> was heard to say:skaro:/dev# /sbin/MAKEDEV all MAKEDEV: line 1292: syntax error near unexpected token `)' MAKEDEV: line 1292: ` )'
What does line 1292 look like? This sounds like a possible bash or ash bug to me.. (not sure which)
Might be, I don't know. The message about line 1292 repeats quite a few times. It won't work on Linux, even with ash, because the device numbers are much too large, but you can see what it does with bash.
I've got major bugs in other things right now (utmp code puts a 4G hole in /var/run/utmp sometimes. 8-), so I haven't spent any time on this. I've attached the script. If you can see what's wrong with it, I'd love to know what it is.
---Nathan
#!/bin/bash - # # 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: src/etc/MAKEDEV,v 1.243.2.47 2002/04/21 19:47:06 will Exp $ # # 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 # sa* SCSI Sequential Access Devices # # Disks: # aac* Adaptec FSA RAID controllers # aacd* Adaptec FSA RAID # 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 # idad* Compaq Smart-2 RAID arrays # 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 # # Pointing devices: # mse* Logitech and ATI Inport bus mouse # psm* PS/2 mouse # jogdial Sony VAIO Jogdial # sysmouse Mousesystems mouse emulator for syscons # # Time devices: # refclock-* serial ports used by xntpd parse refclocks # # Terminal ports: # 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 # ttyE* Stallion EasyIO (stl) dialin ports # cuaE* Stallion EasyIO (stl) dialout ports # ttyF* Stallion Brumby (stli) dialin ports # cuaF* Stallion Brumby (stli) dialout ports # ttyR* Rocketport dialin ports # cuaR* Rocketport dialout ports # # stlN Stallion EasyIO board N dialin and dialout # stliN Stallion Brumby board N dialin and dialout # # Pseudo terminals: # pty* set of 32 master and slave pseudo terminals # vty* virtual terminals using syscons/pcvt/codrv console # # Parallel port: # lpt* Printer # ppi* Parallel port i/o # pps* Pulse per second timing interface # pcfclock* Parallel time sync interface # # I2C and SMBus: # iic* I2C devices # smb* SMBUS devices # # USB devices: # usb* USB bus control device # ugen* generic USB device # uhid* Human Interface Device (HID) # ulpt* printer # umodem* modems # ums* mouse # urio* Diamond Rio 500 # uscanner* USB scanners # usio* USB serial devices # # SCSI devices (other than CD-ROM, tape and disk): # ch* SCSI Media-Changer (juke box) driver # pt* Processor Type (HP scanner, as one example) # pass* CAM Passthrough device # ses* SES (SCSI Environmental Services) and # SAF-TE (Scsi Accessable Fault-Tolerant Enclosures) 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 # pcaudio PCM audio driver # socksys iBCS2 socket system driver # vat VAT compatibility audio driver (requires snd*) # gsc Genius GS-4500 hand scanner # joy pc joystick # tun* Tunneling IP device # tap* Ethernet Tunneling device # snp* tty snoop devices # spigot Video Spigot video acquisition card # ctx* Cortex-I video acquisition card # meteor* Matrox Meteor video acquisition card (pci) # bktr* Bt848 based video acquisition card (pci) # labpc* National Instrument's Lab-PC and LAB-PC+ # perfmon CPU performance-monitoring counters # pci PCI configuration-space access from user mode # ipl ipfilter control devices (ipl, ipnat, ipstate, ipauth) # kbd keyboard devices # agpgart AGP interface # cfs* Coda Distributed Filesystem # nsmb* SMB/CIFS protocol interface #
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)) } # Override mknod(2) to add extra handling to it. mknod=/sbin/mknod for i in `IFS=':'; echo $PATH`; do if [ -x "${i}/mknod" ]; then mknod="${i}/mknod" break fi done mknod() { rm -f "$1" || exit 1 case $# in 4) "$mknod" "$@" root:wheel || die 2 "$mknod $@ failed";; 5) "$mknod" "$@" || die 2 "$mknod $@ failed";; *) die 2 "bad node: mknod $@";; esac } # 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 $1 in [0-9]) m=$1;; 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 } # Convert a unit number to a minor number. unit2minor() { echo $(((($1 >> 8) << 16) | ($1 % 256))) } # For the stallion devices tty[EF] # stallion major letter card iscallout stallion () { major=$1 letter=$2 card=$3 iscallout=$4 port=0 maxport=8 pref=tty owner= minorbase=0 if [ $iscallout -gt 0 ]; then pref=cua owner=uucp:dialout minorbase=128 fi case "$card" in [0-7]);; *) die 1 "Invalid stl card number $card";; esac # make the mem interface for extracting stats & loading microcode. # 0x1000000 + card number mknod staliomem$card c $major 0x0100000$card while [ $port -lt $maxport ]; do minor=$(($minorbase + $card * 1048576 + $port)) if [ $port -ge 32 ]; then minor=$(($minor + 65504)) fi unit=$(($card * 64 + $port)) mknod ${pref}${letter}$unit c $major $minor $owner mknod ${pref}i${letter}$unit c $major $(($minor + 32)) $owner mknod ${pref}l${letter}$unit c $major $(($minor + 64)) $owner port=$(($port + 1)) done } # 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 ata # cdev, ATA control sh MAKEDEV ad0 ad1 ad2 ad3 # bdev, ATA disk sh MAKEDEV ar0 ar1 # bdev, ATA RAID 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 sh MAKEDEV zs0 # big-Alpha serial tty sh MAKEDEV kbd0 kbd1 # cdev, keyboard sh MAKEDEV mse0 psm0 jogdial sysmouse # cdev, mouse sh MAKEDEV pcaudio speaker snd0 # cdev, noise sh MAKEDEV lpt0 lpt1 lpt2 # cdev, printer 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 uhid0 ums0 ulpt0 ugen0 # cdev, USB devices sh MAKEDEV urio0 uscanner0 umodem0 # cdev, USB devices too sh MAKEDEV bpf0 bpf1 bpf2 bpf3 # cdev, network sh MAKEDEV ipl tun0 tun1 tun2 tun3 # cdev, network sh MAKEDEV tap0 tap1 tap2 tap3 # cdev, network sh MAKEDEV ch0 perfmon tw0 # cdev, miscellaneous sh MAKEDEV apm apmctl card0 card1 card2 card3 # cdev, laptop 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 sh MAKEDEV agpgart # cdev, AGP sh MAKEDEV nsmb0 # cdev, SMB/CIFS ;; # 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 zs0 # big-Alpha 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 ums0 # cdev, USB devices sh MAKEDEV tun0 # cdev, network sh MAKEDEV tap0 # 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 root:kmem; chmod 640 kmem mknod mem c 2 0 root:kmem; chmod 640 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 ) chmod 555 fd chmod 666 fd/* ;; jail) sh MAKEDEV std pty0 rm mem kmem pci io klog console # for security ln -sf null mem # for libkvm (ab)users ln -sf null kmem # --//-- ln -sf null console ;; 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 # default density, 512b blocks mknod rwt${u} c 10 $(( 0 + $u)) root:operator mknod nrwt${u} c 10 $(( 4 + $u)) root:operator # default density, 1024b blocks # mknod rWt${u} c 10 $((64 + $u)) root:operator # mknod nrWt${u} c 10 $((68 + $u)) root:operator mknod rwt${u}b c 10 $((16 + $u)) root:operator # 60 megabytes mknod nrwt${u}b c 10 $((20 + $u)) root:operator mknod rwt${u}c c 10 $((24 + $u)) root:operator # 120 megabytes mknod nrwt${u}c c 10 $((28 + $u)) root:operator mknod rwt${u}d c 10 $((32 + $u)) root:operator # 150 megabytes mknod nrwt${u}d c 10 $((36 + $u)) root:operator # mknod rwt${u}e c 10 $((40 + $u)) root:operator # 300 megabytes? # mknod nrwt${u}e c 10 $((44 + $u)) root:operator # mknod rwt${u}f c 10 $((48 + $u)) root:operator # 600 megabytes? # mknod nrwt${u}f c 10 $((52 + $u)) root:operator umask 77 ;; # Individual slices. aacd*s*|ad*s*|ar*s*|afd*s*|amrd*s*|da*s*|fla*s*|idad*s*|md*s*|mlxd*s*|twed*s*|vn*s*|wd*s*|wfd*s*) umask $disk_umask case $i in aacd*s*) name=aacd; chr=151;; ad*s*) name=ad; chr=116;; ar*s*) name=ar; chr=157;; afd*s*) name=afd; chr=118;; amrd*s*) name=amrd; chr=133;; da*s*) name=da; chr=13;; fla*s*) name=fla; chr=102;; idad*s*) name=idad; chr=109;; md*s*) name=md; chr=95;; mlxd*s*) name=mlxd; chr=131;; twed*s*) name=twed; chr=147;; vn*s*) name=vn; chr=43;; wd*s*) name=wd; chr=3;; wfd*s*) name=wfd; chr=87;; esac case $i in aacd*s*|amrd*s*|idad*s*|mlxd*s*|twed*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*|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 root:operator ln -f $name$unit$slicename r$name$unit$slicename 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 root:operator ln -f $name$unit$slicename$partname \ r$name$unit$slicename$partname done ;; "") ;; *) echo bad partition for disk in: $i ;; esac ;; *) 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 $(($unit * 64)) root:operator ln -f ${name}${unit} r${name}${unit} # 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 $(($unit * 64 + 1)) \ root:operator ln -f ${name}${unit}.1720 r${name}${unit}.1720 # ln -f ${name}${unit}.1720 ${name}${unit}135hs21 # ln -f r${name}${unit}.1720 r${name}${unit}135hs21 mknod ${name}${unit}.1480 c $chr $(($unit * 64 + 2)) \ root:operator ln -f ${name}${unit}.1480 r${name}${unit}.1480 # 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 $(($unit * 64 + 3)) \ root:operator ln -f ${name}${unit}.1440 r${name}${unit}.1440 # 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 $(($unit * 64 + 4)) \ root:operator ln -f ${name}${unit}.1200 r${name}${unit}.1200 # 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 $(($unit * 64 + 5)) \ root:operator ln -f ${name}${unit}.820 r${name}${unit}.820 # 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 $(($unit * 64 + 6)) \ root:operator ln -f ${name}${unit}.800 r${name}${unit}.800 # 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 $(($unit * 64 + 7)) \ root:operator ln -f ${name}${unit}.720 r${name}${unit}.720 # 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 $(($unit * 64 + 8)) \ root:operator ln -f ${name}${unit}.360 r${name}${unit}.360 # 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 $(($unit * 64 + 9)) \ root:operator ln -f ${name}${unit}.640 r${name}${unit}.640 # 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 $(($unit * 64 + 10)) \ root:operator ln -f ${name}${unit}.1232 r${name}${unit}.1232 # 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 ;; *) echo bad unit for disk in: $i ;; esac umask 77 ;; aacd*|ad*|ar*|afd*|amrd*|da*|fla*|idad*|md*|mlxd*|twed*|vn*|wd*|wfd*) umask $disk_umask case $i in aacd*) name=aacd; chr=151;; ad*) name=ad; chr=116;; ar*) name=ar; chr=157;; afd*) name=afd; chr=118;; amrd*) name=amrd; chr=133;; da*) name=da; chr=13;; fla*) name=fla; chr=102;; idad*) name=idad; chr=109;; md*) name=md; chr=95;; mlxd*) name=mlxd; chr=131;; twed*) name=twed; chr=147;; vn*) name=vn; chr=43;; wd*) name=wd; chr=3;; wfd*) name=wfd; chr=87;; esac case $i in aacd*|amrd*|idad*|mlxd*|twed*) unit=`expr $i : '....\(.*\)'` ;; afd*|fla*|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 s1h 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 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` partname=`dkitop $part` mknod $name$unit$partname c $chr $minor root:operator ln -f $name$unit$partname r$name$unit$partname done ;; *) echo bad unit for disk in: $i ;; esac umask 77 ;; # 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=$(($unit + 1 - 1)) mknod ${name}${unit} c $chr `unit2minor $unit` ;; # SCSI SES/SAF-TE type driver ses[0-9]*) chr=110 name=ses unit=`expr $i : 'ses\([0-9][0-9]*\)'` if [ -z "${unit}" ]; then unit=0 fi unit=$(($unit + 1 - 1)) mknod ${name}${unit} c $chr `unit2minor $unit` ;; # SCSI target mode sample driver targ[0-9]*) chr=65 name=targ unit=`expr $i : 'targ\([0-9][0-9]*\)'` if [ -z "${unit}" ]; then unit=0 fi unit=$(($unit + 1 - 1)) mknod ${name}${unit} c $chr `unit2minor $unit` mknod ${name}.ctl c $chr 0xffff00ff ;; # CAM transport layer device xpt*) # This major number is temporary chr=104 name=xpt units=`expr $i : 'xpt\(.*\)'` if [ -z "${units}" ]; then units=1 fi i=0 while [ $i -lt $units ]; do dname=$name$i rm -rf $dname r$dname mknod $dname c $chr `unit2minor $i` root:operator i=$(($i + 1)) done ;; # CAM passthrough device pass*) # This major number is temporary chr=31 name=pass units=`expr $i : 'pass\(.*\)'` if [ -z "${units}" ]; then units=1 fi i=0 while [ $i -lt $units ]; do dname=$name$i rm -rf $dname r$dname mknod $dname c $chr `unit2minor $i` root:operator i=$(($i + 1)) done ;; 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. 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 ;; 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 sa${unit}.ctl c $chr `saminor 1 ${unit} 0 0` ln -f sa${unit}.ctl rsa${unit}.ctl for m in 0 1 2 3 do mknod sa${unit}.${m} c $chr \ `saminor 0 ${unit} ${m} 0` root:operator ln -f sa${unit}.${m} rsa${unit}.${m} mknod nsa${unit}.${m} c $chr \ `saminor 0 ${unit} ${m} 1` root:operator ln -f nsa${unit}.${m} nrsa${unit}.${m} mknod esa${unit}.${m} c $chr \ `saminor 0 ${unit} ${m} 2` root:operator ln -f esa${unit}.${m} ersa${unit}.${m} done ln -f sa${unit}.0 sa${unit} ln -f sa${unit}.0 rsa${unit}.0 ln -f sa${unit}.0 rsa${unit} ln -f nsa${unit}.0 nsa${unit} ln -f nsa${unit}.0 nrsa${unit}.0 ln -f nsa${unit}.0 nrsa${unit} ln -f esa${unit}.0 esa${unit} ln -f esa${unit}.0 ersa${unit}.0 ln -f esa${unit}.0 ersa${unit} ;; *) echo bad unit for tape in: $i ;; 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) mknod ${name}${unit} c $chr $unit root:operator ;; *) echo bad unit for media changer in: $i ;; esac umask 77 ;; ata) mknod ata c 159 0 root:operator ;; ast*) umask 2 ; unit=`expr $i : '...\(.*\)'` chr=119 case $unit in 0|1|2|3) mknod ast${unit} c $chr $(($unit * 8 + 0)) root:operator chmod 640 ast${unit} mknod nast${unit} c $chr $(($unit * 8 + 1)) root:operator chmod 640 nast${unit} ;; *) echo bad unit for tape in: $i ;; esac umask 77 ;; acd*t*) umask $disk_umask units=`expr $i : '...\(.*\)t'`; tracks=`expr $i : '.*t\(.*\)'`; name=acd; chr=117; if [ -z "${units}" -o "${units}" -le 0 ]; then units=1 fi if [ -z "${tracks}" -o "${tracks}" -le 0 ]; then tracks=100 fi if [ "${units}" -le 31 -a "${tracks}" -le 169 ]; then i=0 while [ $i -le $units ]; do dname=$name$i rm -rf ${dname}t* j=1 while [ $j -le ${tracks} ]; do mknod ${dname}t$j c $chr \ $((($i * 8) + (65536 * $j))) \ root:operator j=$(($j + 1)) done i=$(($i + 1)) done else echo "$i is invalid -- can't have more than 32 cd devices or 169 tracks" fi 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 units=1 fi if [ "${units}" -le 31 ]; then i=0 while [ $i -le $units ]; do dname=$name$i rm -rf ${dname}* r${dname}* mknod ${dname}a c $chr $(($i * 8)) root:operator case $name in acd) ln -f ${dname}a ${dname}c;; *) mknod ${dname}c c $chr $(($i * 8 + 2)) root:operator;; esac ln -f ${dname}a r${dname}a ln -f ${dname}c r${dname}c i=$(($i + 1)) done 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 $(($unit * 8 + 0)) \ root:operator mknod ${name}${unit}c c $chr $(($unit * 8 + 2)) \ root:operator ln -f ${name}${unit}a r${name}${unit}a ln -f ${name}${unit}c r${name}${unit}c chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h] mknod ${name}${unit}la c $chr $(($unit * 8 + 128)) \ root:operator mknod ${name}${unit}lc c $chr $(($unit * 8 + 130)) \ root:operator ln -f ${name}${unit}la r${name}${unit}la ln -f ${name}${unit}lc r${name}${unit}lc 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 $(($unit * 8 + 0)) root:operator mknod wcd${unit}c c $chr $(($unit * 8 + 2)) root:operator ln -f wcd${unit}a rwcd${unit}a ln -f wcd${unit}c rwcd${unit}c 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 $(($unit * 8 + 0)) root:operator chmod 640 rwst${unit} ;; esac umask 77 ;; iic*) unit=`expr $i : 'iic\(.*\)'` mknod iic$unit c 105 `unit2minor $unit` ;; smb*) unit=`expr $i : 'smb\(.*\)'` mknod smb$unit c 106 `unit2minor $unit` ;; pcfclock*) unit=`expr $i : 'pcfclock\(.*\)'` mknod pcfclock$unit c 140 `unit2minor $unit` ;; ppi*) unit=`expr $i : 'ppi\(.*\)'` mknod ppi$unit c 82 `unit2minor $unit` ;; pps*) unit=`expr $i : 'pps\(.*\)'` mknod pps$unit c 89 `unit2minor $unit` ;; usb) mknod usb$unit c 108 255 root:operator chmod 0660 usb$unit ;; usb*) umask 7 unit=`expr $i : 'usb\(.*\)'` mknod usb$unit c 108 `unit2minor $unit` root:operator umask 77 ;; uhid*) umask 7 unit=`expr $i : 'uhid\(.*\)'` mknod uhid$unit c 122 `unit2minor $unit` root:operator umask 77 ;; ums*) umask 7 unit=`expr $i : 'ums\(.*\)'` mknod ums$unit c 111 `unit2minor $unit` root:operator umask 77 ;; ulpt*) unit=`expr $i : 'ulpt\(.*\)'` minor=`unit2minor $unit` mknod ulpt$unit c 113 $minor minor=`unit2minor $(($unit + 64))` mknod unlpt$unit c 113 $minor # and the 'no prime' version ;; ugen*) umask 7 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 \ `unit2minor $(($unit * 16))` root:operator i=1 while [ $i -lt 16 ]; do mknod ugen$unit.$i c 114 \ `unit2minor $(($unit * 16 + $i))` root:operator i=$(($i + 1)) done else minor=`unit2minor $(($unit * 16 + $endpoint))` mknod ugen$unit.$endpoint c 114 $minor root:operator fi umask 77 ;; urio*) umask 7 unit=`expr $i : 'urio\(.*\)'` mknod urio$unit c 143 `unit2minor $unit` root:operator umask 77 ;; usio*) umask 7 unit=`expr $i : 'usio\(.*\)'` minor=$(($unit + 128)) minor=`unit2minor $(($unit + 128))` mknod usio$unit c 138 $minor uucp:dialout umask 77 ;; uscanner*) umask 7 unit=`expr $i : 'uscanner\(.*\)'` mknod uscanner$unit c 156 `unit2minor $unit` root:operator umask 77 ;; umodem*) umask 7 unit=`expr $i : 'umodem\(.*\)'` mknod umodem$unit c 124 `unit2minor $unit` uucp:dialout umask 77 ;; lpt*) unit=`expr $i : 'lpt\(.*\)'` mknod lpt$unit c 16 `unit2minor $unit` mknod lpctl$unit c 16 `unit2minor $(($unit + 128))` ;; # 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 `unit2minor $i` i=$(($i + 1)) done ln -fs ttyv0 vga # XXX X still needs this pccons relic ;; nmdm*) units=`expr $i : 'nmdm\(.*\)'` chr=18 i=0 while [ $i -lt $units ]; do minor=`unit2minor $i` minor=$(($minor + $minor)) mknod nmdm${i}A c $chr $minor mknod nmdm${i}B c $chr $(($minor + 1)) i=$(($i + 1)) done ;; bpf*) nbpf=`expr $i : 'bpf\(.*\)$'` unit=0 while [ $unit -le $nbpf ]; do mknod bpf$unit c 23 `unit2minor $unit` unit=$(($unit + 1)) done ;; speaker) mknod speaker c 26 0 ;; cua?|cuaa?|cuaa??) umask 7 unit_low=`expr $i : 'cua.*\(.\)$'` case $i in cua?|cuaa?) unit_high="" m_high=0 ;; cuaa??) unit_high=`expr $i : 'cuaa\(.\).$'` m_high=`ttyminor $unit_high` ;; esac unit=$unit_high$unit_low m=$(($m_high << 16 | `ttyminor $unit_low`)) mknod cuaa$unit c 28 $(($m | 128)) uucp:dialout mknod cuaia$unit c 28 $(($m | 32 | 128)) uucp:dialout mknod cuala$unit c 28 $(($m | 64 | 128)) uucp:dialout umask 77 ;; tty?|tty0?|ttyd?|ttyd??) unit_low=`expr $i : 'tty.*\(.\)$'` case $i in tty?|tty0?|ttyd?) unit_high="" m_high=0 ;; ttyd??) unit_high=`expr $i : 'ttyd\(.\).$'` m_high=`ttyminor $unit_high` ;; esac unit=$unit_high$unit_low m=$(($m_high << 16 | `ttyminor $unit_low`)) mknod ttyd$unit c 28 $m mknod ttyid$unit c 28 $(($m | 32)) mknod ttyld$unit c 28 $(($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=$(($card * 65536 + $minor)) name=$card$unit mknod cuac$name c $major $(($minor + 128)) uucp:dialout mknod cuaic$name c $major $(($minor + 32 + 128)) uucp:dialout mknod cualc$name c $major $(($minor + 64 + 128)) uucp:dialout 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=$(($card * 65536 + $minor)) name=$card$unit mknod ttyc$name c $major $minor mknod ttyic$name c $major $(($minor + 32)) mknod ttylc$name c $major $(($minor + 64)) done ;; # RISCom8 'rc' driver entries cuam?) umask 7 unit=`expr $i : 'cua.*\(.\)$'` m=`ttyminor $unit` mknod cuam$unit c 63 $(($m + 128)) uucp:dialout umask 77 ;; ttym?) unit=`expr $i : 'tty.*\(.\)$'` m=`ttyminor $unit` mknod ttym$unit c 63 $m ;; # 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=$(($port - 1)) name=$(printf %02d $port) mknod ttyA$name c $major $minor mknod ttyiA$name c $major $(($minor + 65536)) mknod ttylA$name c $major $(($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=$(($port - 1)) name=$(printf %02d $port) mknod cuaA$name c $major $(($minor + 128)) uucp:dialout mknod cuaiA$name c $major $(($minor + 128 + 65536)) \ uucp:dialout mknod cualA$name c $major $(($minor + 128 + 131072)) \ uucp:dialout port=$(($port + 1)) done umask 77 ;; # Alpha AS8[24]00 (TurboLaser) console. zs?) unit=`expr $i : 'zs.*\(.\)$'` m=`ttyminor $unit` mknod zs$unit c 135 $m ;; # 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=$(($card * 65536 + $minor)) name=$card$unit mknod ttyD$name c $major $minor mknod ttyiD$name c $major $(($minor + 32)) mknod ttylD$name c $major $(($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=$(($card * 65536 + $minor)) name=$card$unit mknod cuaD$name c $major $(($minor + 128)) uucp:dialout mknod cuaiD$name c $major $(($minor + 32 + 128)) uucp:dialout mknod cualD$name c $major $(($minor + 64 + 128)) uucp:dialout done umask 77 ;; # Stallion multi serial cards (stl and stli drivers) # # These drivers reserve 64 minor devices per board, even if the board # supports only 4 devices. We default to creating only 8 of the 64 devices # to keep /dev from getting too large (which => slow). The last part of the # arg is the board number to create ports for. So: # ttyE0 will create 8 dialin ports ttyE0-ttyE7, plus ttyiE* and ttylE* # cuaE0 will create 8 dialout ports cuaE0-cuaE7, plus cuaiE* and cualE* # ttyE1 will create 8 dialin ports ttyE64-ttyE71, plus ttyiE* and ttylE* # etc # If you have EasyConnect 8/32 or 8/64 cards, you will need to change the # definition of "maxport" below to get nodes for the full 32 or 64 # ports per card. # # Note that the mapping of minor device numbers (with the hole between # 32-64k) is a bit odd to keep compatibility with ttyd? for # lock/initial devices. # Minor device field for the ports is # card{3} unused{4} unit-msb{1} unused{8} callout{1} lock{1} init{1} unit-lsbs{5} # for the mem device is # 0x1000000 + card # (For stl, there is only 1 mem device per system; for stli, one per board) ttyE*) stallion 72 E `expr $i : 'tty.*\(.\)$'` 0 ;; cuaE*) stallion 72 E `expr $i : 'cua.*\(.\)$'` 1 ;; stl*) card=`expr $i : 'stl\(.\)$'` stallion 72 E $card 0 stallion 72 E $card 1 ;; ttyF*) stallion 75 F `expr $i : 'tty.*\(.\)$'` 0 ;; cuaF*) stallion 75 F `expr $i : 'cua.*\(.\)$'` 1 ;; stli*) card=`expr $i : 'stl\(.\)$'` stallion 75 F $card 0 stallion 75 F $card 1 ;; 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=$(($moduleminor % 10 * 16)) modulename=$unit for unit in $portlist do minor=`ttyminor $unit` minor=$(($card * 65536 + $minor + $moduleminor)) name=$card$modulename$unit rm -f tty*M$name mknod ttyM$name c $major $minor mknod ttyiM$name c $major $(($minor + 64)) mknod ttylM$name c $major $(($minor + 128)) 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=$(($moduleminor % 10 * 16)) modulename=$unit for unit in $portlist do minor=`ttyminor $unit` minor=$(($card * 65536 + $minor + $moduleminor)) name=$card$modulename$unit rm -f cua*M$name mknod cuaM$name c $major $(($minor + 262144)) \ uucp:dialout mknod cuaiM$name c $major $(($minor + 64 + 262144)) \ uucp:dialout mknod cualM$name c $major $(($minor + 128 + 262144)) \ uucp:dialout 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 ttyR* ttyiR* 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 ttyR$Rnum c $major $MINOR mknod ttyiR$Rnum c $major $(($MINOR + 32)) mknod ttylR$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 cuaR* cuaiR* 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 cuaR$Rnum c $major $(($MINOR + 128)) uucp:dialout mknod cuaiR$Rnum c $major $(($MINOR + 128 + 32)) \ uucp:dialout mknod cualR$Rnum c $major $(($MINOR + 128 + 64)) \ uucp:dialout Rnum=$(($Rnum + 1)) MINOR=$(($MINOR + 1)) dev=$(($dev + 1)) done BOARD=$(($BOARD + 1)) MINOR=$(($BOARD * 65536)) echo " " done ;; mse*) unit=`expr $i : 'mse\(.*\)'` chr=27 # non-blocking for X11 mknod mse$unit c $chr `unit2minor $(($unit * 2 + 1))` ;; psm*) unit=`expr $i : 'psm\(.*\)'` chr=21 # non-blocking for X11 mknod psm$unit c $chr `unit2minor $(($unit * 2 + 1))` ;; mouse*) name=`expr $i : 'mouse\(.*\)'` if [ ! -c $name ]; then $0 $name # make the appropriate device fi ln -fs $name mouse ;; pcaudio) mknod pcaudio c 24 0 mknod pcaudioctl c 24 128 ;; 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 # 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 ln -fs dsp$unit.0 dsp$unit ln -fs audio$unit.0 audio$unit ln -fs dspW$unit.0 dspW$unit mknod mixer$unit c $chr `unit2minor $(($unit * 16 + 0))` mknod sequencer$unit c $chr `unit2minor $(($unit * 16 + 1))` mknod midi$unit c $chr `unit2minor $(($unit * 16 + 2))` for chn in 0 1 2 3 do minor=$(($chn * 65536 + $unit * 16)) mknod dsp$unit.$chn c $chr $(($minor + 3)) mknod audio$unit.$chn c $chr $(($minor + 4)) mknod dspW$unit.$chn c $chr $(($minor + 5)) done mknod sndstat c $chr 6 # minor number 7 is unused mknod music$unit c $chr `unit2minor $(($unit * 16 + 8))` mknod pss$unit c $chr `unit2minor $(($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 `unit2minor $unit` mknod gsc${unit}p c 47 `unit2minor $(($unit + 8))` mknod gsc${unit}d c 47 `unit2minor $(($unit + 32))` mknod gsc${unit}pd c 47 `unit2minor $(($unit + 40))` chmod 666 gsc${unit}* ;; apm) mknod apm c 39 0 root:operator chmod 664 apm ;; apmctl) mknod apmctl c 39 8 root:operator chmod 660 apmctl ;; card*) unit=`expr $i : 'card\(.*\)'` chr=50 mknod card$unit c $chr `unit2minor $unit` chmod 644 card$unit ;; ttyx?|ttyy?|ttyz?) case $i in *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=$(($unit + 16));; ttyz?) unit=$(($unit + 32));; esac mknod $i c 42 $unit ;; cronyx) mknod cronyx c 42 63 ;; joy) mknod joy0 c 51 0 root:operator mknod joy1 c 51 1 root:operator chmod 640 joy0 joy1 ;; spigot) mknod spigot c 11 0 chmod 444 spigot ;; ctx?) unit=`expr $i : 'ctx\(.*\)'` mknod ctx$unit c 40 `unit2minor $unit` chmod 444 ctx$unit ;; meteor?) unit=`expr $i : 'meteor\(.*\)'` mknod meteor$unit c 67 `unit2minor $unit` chmod 444 meteor$unit ;; bktr?) unit=`expr $i : 'bktr\(.*\)'` mknod bktr$unit c 92 `unit2minor $unit` mknod tuner$unit c 92 `unit2minor $((16 + $unit))` mknod vbi$unit c 92 `unit2minor $((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 `unit2minor $unit` unit=$(($unit + 1)) done ;; tap*) ntap=`expr $i : 'tap\(.*\)$'` unit=0 while [ $unit -le $ntap ]; do mknod tap$unit c 149 `unit2minor $unit` root:network unit=$(($unit + 1)) done ;; sysmouse) mknod sysmouse c 12 128 mknod consolectl c 12 255 ;; jogdial) mknod jogdial c 160 0 ;; snp?) unit=`expr $i : 'snp\(.*\)'` mknod snp$unit c 53 `unit2minor $unit` ;; # [EMAIL PROTECTED]: 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 $(($offset + $unit)) ;; all) for i in $all do mknod $name$i c 66 $(($offset + $i)) done ;; *) echo "No such LabPC unit: $unit" ;; esac umask 77 ;; perfmon) mknod perfmon c 2 32 root:kmem chmod 640 perfmon ;; ipl) mknod ipl c 79 0 mknod ipnat c 79 1 mknod ipstate c 79 2 mknod ipauth c 79 3 ;; kbd*) unit=`expr $i : 'kbd\(.*\)'` chr=112 mknod kbd$unit c $chr `unit2minor $unit` ;; i4b) mknod i4b c 60 0 ;; i4bctl) mknod i4bctl c 55 0 ;; i4brbch*) unit=`expr $i : 'i4brbch\(.*\)'` mknod i4brbch$unit c 57 `unit2minor $unit` ;; i4bteld*) offset=64 unit=`expr $i : 'i4bteld\(.*\)'` mknod i4bteld$unit c 56 `unit2minor $(($offset + $unit))` ;; i4btel*) unit=`expr $i : 'i4btel\(.*\)'` mknod i4btel$unit c 56 `unit2minor $unit` ;; i4btrc*) unit=`expr $i : 'i4btrc\(.*\)'` mknod i4btrc$unit c 59 `unit2minor $unit` ;; aac*) unit=`expr $i : 'aac\(.*\)'` mknod aac$unit c 150 `unit2minor $unit` ln -fs aac$unit afa$unit ln -fs aac$unit hpn$unit ;; mlx*) unit=`expr $i : 'mlx\(.*\)'` mknod mlx$unit c 130 `unit2minor $unit` ;; amr*) unit=`expr $i : 'amr\(.*\)'` mknod amr$unit c 132 `unit2minor $unit` ;; ciss*) unit=`expr $i : 'ciss\(.*\)'` mknod ciss$unit c 166 `unit2minor $unit` ;; agpgart) mknod agpgart c 148 0 ;; twe*) unit=`expr $i : 'twe\(.*\)'` mknod twe$unit c 146 `unit2minor $unit` ;; tw*) unit=`expr $i : 'tw\(.*\)'` mknod tw$unit c 19 `unit2minor $unit` root:operator ;; cfs*) unit=`expr $i : 'cfs\(.*\)'` mknod cfs$unit c 93 $unit root:operator ;; nsmb*) unit=`expr $i : 'nsmb\(.*\)'` mknod nsmb$unit c 144 $unit ;; local) umask 0 # XXX should be elsewhere sh MAKEDEV.local umask 77 ;; *) echo $i - no such device name ;; esac done