#!/bin/sh - # # $OpenBSD: MAKEDEV,v 1.10 1997/09/16 06:00:54 deraadt Exp $ # $NetBSD: MAKEDEV,v 1.3 1996/04/26 20:10:24 mark Exp $ # # Copyright (c) 1990 The Regents of the University of California. # All rights reserved. # # Updated by Mark Brinicombe # Created by Scott Stevens # # 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 # # Device "make" file. Valid arguments: # all makes all known devices, including local devices. # Tries to make the 'standard' number of each type. # floppy devices to be put on install floppies # std standard devices # local configuration specific devices # # Tapes: # st* SCSI tapes # # Disks: # wd* "winchester" disk drives (ST506,IDE,ESDI,RLL,...) # fd* "floppy" disk drives (3 1/2", 5 1/4") # sd* SCSI disks # cd* SCSI CD-ROM # vnd* "file" pseudo-disks # # Console ports: # ttyv0 pccons or pcvt screen 0 # ttyv* pcvt # # Pointing devices: # quadmouse "quadrature mouse" # # Terminal ports: # com* standard PC COM ports (XXX) # tty* alias for PC COM ports, this is what the system really wants # # Pseudo terminals: # pty* set of 16 master and slave pseudo terminals # # Printers: # lpt* stock lp # lpa* interruptless lp # # Cpus: # cpu* cpus # # Call units: # # Special purpose devices: # rd ram disk # kbd raw keyboard # kbdctl keyboard control # fd file descriptors # bpf* packet filter # beep riscpc speaker # lkm loadable kernel modules interface # tun* network tunnel driver # ch* SCSI Auto changer # uk* SCSI Unknown device # ss* SCSI scanner device # iic* IIC bus device # rtc* RTC device # *random random data source # PATH=/sbin:/usr/sbin:/bin:/usr/bin umask 77 for i do case $i in all) sh MAKEDEV std fd fd0 fd1 wd0 wd1 rd0 rd1 sd0 sd1 sd2 tty0 tty1 pty0 pty1 sh MAKEDEV st0 st1 ch0 cd0 cd1 vnd0 vnd1 ccd0 ccd1 uk0 uk1 ss0 sh MAKEDEV ttyv0 ttyv1 ttyv2 ttyv3 ttyv4 ttyv5 ttyv6 ttyv7 ttyv8 ttyv9 sh MAKEDEV bpf0 bpf1 bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 bpf8 bpf9 sh MAKEDEV lpa0 lpt0 tun0 tun1 tun2 random sh MAKEDEV beep lkm quadmouse local cpu0 cpu1 cpu2 cpu3 cpu4 cpu5 ;; floppy) sh MAKEDEV std fd0 fd1 wd0 wd1 rd0 rd1 sd0 sd1 sd2 tty0 tty1 sh MAKEDEV ttyv0 ttyv1 ttyv2 ttyv3 ttyv4 ttyv5 sh MAKEDEV st0 st1 cd0 cd1 ;; std) rm -f console drum mem kmem null zero tty klog stdin stdout stderr kbd rm -f kbdctl vidcvideo0 vidc iic rtc0 mknod mem c 0 0 ; chmod 640 mem ; chown root.kmem mem mknod kmem c 0 1 ; chmod 640 kmem ; chown root.kmem kmem mknod null c 0 2 ; chmod 666 null mknod zero c 0 3 ; chmod 666 zero mknod drum c 1 0 ; chmod 640 drum ; chown root.kmem drum mknod console c 2 0 mknod tty c 3 0 ; chmod 666 tty mknod klog c 5 0 ; chmod 600 klog mknod kbd c 11 0 ; chmod 666 kbd mknod kbdctl c 11 1 ; chmod 666 kbdctl mknod stdin c 34 0 ; chmod 666 stdin mknod stdout c 34 1 ; chmod 666 stdout mknod stderr c 34 2 ; chmod 666 stderr mknod vidcvideo0 c 37 0 ; chmod 640 vidcvideo0 ln -s vidcvideo0 vidc mknod iic c 42 0 ; chmod 600 iic mknod rtc0 c 43 0 ; chmod 644 rtc0 ;; ttyv*) unit=`expr $i : 'ttyv\(.*\)'` rm -f ttyv$unit mknod ttyv$unit c 4 $unit chown root.wheel ttyv$unit ;; fd) rm -f fd/* mkdir fd > /dev/null 2>&1 (cd fd && eval `echo "" | awk ' BEGIN { \ for (i = 0; i < 64; i++) \ printf("mknod %d c 34 %d;", i, i)}'`) chown -R root.wheel fd chmod 555 fd chmod 666 fd/* ;; fd*|sd*|wd*|ccd*) umask 2 ; unit=`expr $i : '.*d\(.*\)'` case $i in fd*) name=fd; blk=17; chr=17;; sd*) name=sd; blk=24; chr=24;; wd*) name=wd; blk=16; chr=16;; ccd*) name=ccd; blk=21; chr=21;; esac rm -f $name$unit? r$name$unit? 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}g c $chr `expr $unit '*' 8 + 6` mknod r${name}${unit}h c $chr `expr $unit '*' 8 + 7` chown root.operator ${name}${unit}[a-h] r${name}${unit}[a-h] chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h] umask 77 ;; vnd*) umask 2 ; unit=`expr $i : 'vnd\(.*\)'` for name in vnd svnd; do blk=19; chr=19; case $name in vnd) off=0;; svnd) off=128;; esac rm -f $name$unit? r$name$unit? mknod ${name}${unit}a b $blk `expr $unit '*' 8 + $off + 0` mknod ${name}${unit}b b $blk `expr $unit '*' 8 + $off + 1` mknod ${name}${unit}c b $blk `expr $unit '*' 8 + $off + 2` mknod ${name}${unit}d b $blk `expr $unit '*' 8 + $off + 3` mknod ${name}${unit}e b $blk `expr $unit '*' 8 + $off + 4` mknod ${name}${unit}f b $blk `expr $unit '*' 8 + $off + 5` mknod ${name}${unit}g b $blk `expr $unit '*' 8 + $off + 6` mknod ${name}${unit}h b $blk `expr $unit '*' 8 + $off + 7` mknod r${name}${unit}a c $chr `expr $unit '*' 8 + $off + 0` mknod r${name}${unit}b c $chr `expr $unit '*' 8 + $off + 1` mknod r${name}${unit}c c $chr `expr $unit '*' 8 + $off + 2` mknod r${name}${unit}d c $chr `expr $unit '*' 8 + $off + 3` mknod r${name}${unit}e c $chr `expr $unit '*' 8 + $off + 4` mknod r${name}${unit}f c $chr `expr $unit '*' 8 + $off + 5` mknod r${name}${unit}g c $chr `expr $unit '*' 8 + $off + 6` mknod r${name}${unit}h c $chr `expr $unit '*' 8 + $off + 7` chown root.operator ${name}${unit}[a-h] r${name}${unit}[a-h] chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h] done umask 77 ;; com*|tty*) # (XXX -- com should die) unit=`expr $i : '...\(.*\)'` rm -f com$unit tty0$unit mknod tty0$unit c 12 $unit chown uucp.wheel tty0$unit ;; 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;; # Note that telnetd, rlogind, and xterm (at least) only look at p-s. 4) offset=64 name=t;; *) echo bad unit for pty in: $i;; esac case $class in 0|1|2|3|4) umask 0 eval `echo $offset $name | awk ' { b=$1; n=$2 } END { for (i = 0; i < 16; i++) printf("rm -f tty%s%x; mknod tty%s%x c 7 %d;" \ "rm -f pty%s%x; mknod pty%s%x c 6 %d; ", \ n, i, n, i, b+i, n, i, n, i, b+i); }'` umask 77 ;; esac ;; st*) umask 2 ; unit=`expr $i : '..\(.*\)'` case $i in st*) name=st; chr=25; blk=25;; esac rm -f $name$unit n$name$unit e$name$unit en$name$unit \ r$name$unit nr$name$unit er$name$unit enr$name$unit mknod ${name}${unit} b $blk `expr $unit '*' 16 + 0` mknod n${name}${unit} b $blk `expr $unit '*' 16 + 1` mknod e${name}${unit} b $blk `expr $unit '*' 16 + 2` mknod en${name}${unit} b $blk `expr $unit '*' 16 + 3` mknod r${name}${unit} c $chr `expr $unit '*' 16 + 0` mknod nr${name}${unit} c $chr `expr $unit '*' 16 + 1` mknod er${name}${unit} c $chr `expr $unit '*' 16 + 2` mknod enr${name}${unit} c $chr `expr $unit '*' 16 + 3` chown root.operator ${name}${unit} n${name}${unit} \ e$name$unit en$name$unit \ r${name}${unit} nr${name}${unit} \ er${name}${unit} enr${name}${unit} chmod 640 ${name}${unit} n${name}${unit} \ e$name$unit en$name$unit \ r${name}${unit} nr${name}${unit} \ er${name}${unit} enr${name}${unit} umask 77 ;; ch*) umask 2 ; unit=`expr $i : '..\(.*\)'` case $i in ch*) name=ch; chr=27;; esac rm -f $name$unit mknod ${name}${unit} c $chr `expr $unit '*' 16 + 0` chown root.operator ${name}${unit} chmod 640 ${name}${unit} umask 77 ;; uk*) umask 2 ; unit=`expr $i : '..\(.*\)'` case $i in uk*) name=uk; chr=28;; esac rm -f $name$unit mknod ${name}${unit} c $chr $unit chown root.operator ${name}${unit} chmod 640 ${name}${unit} umask 77 ;; ss*) umask 2 ; unit=`expr $i : '..\(.*\)'` case $i in ss*) name=ss; chr=29;; esac rm -f $name$unit mknod ${name}${unit} c $chr `expr $unit '*' 16 + 0` chown root.operator ${name}${unit} chmod 640 ${name}${unit} umask 77 ;; cd*) umask 2 ; unit=`expr $i : '.*cd\(.*\)'` case $i in cd*) name=cd; blk=26; chr=26;; esac rm -f $name$unit? r$name$unit? mknod ${name}${unit}a b $blk `expr $unit '*' 8 + 0` mknod ${name}${unit}d b $blk `expr $unit '*' 8 + 3` mknod r${name}${unit}a c $chr `expr $unit '*' 8 + 0` mknod r${name}${unit}d c $chr `expr $unit '*' 8 + 3` chown root.operator ${name}${unit}[a-h] r${name}${unit}[a-h] chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h] umask 77 ;; rd*) unit=`expr $i : 'rd\(.*\)'` rm -f rd${unit} rm -f rd${unit}c mknod rd${unit} b 18 ${unit} mknod rd${unit}c c 18 `expr ${unit} + 16` chown root.wheel rd${unit} chown root.wheel rd${unit}c ;; lpa*) unit=`expr $i : 'lpa\(.*\)'` rm -f lpa$unit mknod lpa$unit c 8 `expr $unit + 128` chown root.wheel lpa$unit ;; lpt*) unit=`expr $i : 'lpt\(.*\)'` rm -f lpt$unit mknod lpt$unit c 8 $unit chown root.wheel lpt$unit ;; bpf*) unit=`expr $i : 'bpf\(.*\)'` rm -f bpf$unit mknod bpf$unit c 32 $unit chown root.wheel bpf$unit ;; tun*) unit=`expr $i : 'tun\(.*\)'` rm -f tun$unit mknod tun$unit c 33 $unit chmod 600 tun$unit chown root.wheel tun$unit ;; beep) rm -f beep mknod beep c 10 0 chown root.wheel beep ;; lkm) rm -f lkm mknod lkm c 35 0 chown root.kmem lkm chmod 640 lkm ;; quadmouse) mknod quadmouse c 9 0 rm -f mouse ln -s quadmouse mouse ;; cpu*) unit=`expr $i : 'cpu\(.*\)'` rm -f cpu$unit mknod cpu$unit c 38 $unit chown root.wheel cpu$unit ;; random|srandom|urandom|prandom|arandom) rm -f random urandom srandom prandom arandom mknod random c 44 0 mknod srandom c 44 1 mknod urandom c 44 2 mknod prandom c 44 3 mknod arandom c 44 4 chown root.wheel random srandom urandom prandom arandom chmod 644 random srandom urandom prandom arandom ;; local) umask 0 test -s MAKEDEV.local && sh MAKEDEV.local ;; esac done