#!/bin/sh - # # $OpenBSD: MAKEDEV,v 1.23 1998/05/10 04:02:08 millert Exp $ # @(#)MAKEDEV 8.1 (Berkeley) 6/9/93 # # Device "make" file. Valid arguments: # all all devices # std standard devices # local configuration specific devices # Tapes: # tz* SCSI tapes, DEC TK50 cartridge tape # Disks: # rz* SCSI disks # vnd* "file" pseudo-disks # ccd* concatenated disk driver # Terminal multiplexors: # dc* 4 channel serial interface (keyboard, mouse, modem, printer) # scc* 82530 serial interface # Pseudo terminals: # pty* set of 16 master and slave pseudo terminals # Printers: # Call units: # Special purpose devices: # bpf* packet filter # lkm loadable kernel modules interface # tun* network tunnel driver # uk* unknown SCSI # ss* SCSI scanners # Platform-specific devices: # NOTE: /dev/mouse should be a link to one of the fb*'s. # fb* framebuffer device # *random random data source PATH=/sbin:/bin/:/usr/bin:/usr/sbin umask 77 hex () { case $1 in [0-9]) echo -n $1 ;; 10) echo -n a;; 11) echo -n b;; 12) echo -n c;; 13) echo -n d;; 14) echo -n e;; 15) echo -n f;; esac } for i do case $i in all) sh MAKEDEV std rz0 rz1 rz2 rz3 rz4 rz5 rz6 tz0 tz1 sh MAKEDEV std rz8 rz9 rz10 rz11 rz12 rz13 rz14 tz2 tz3 sh MAKEDEV pty0 vnd0 vnd1 vnd2 vnd3 ccd0 ccd1 ccd2 ccd3 # sh MAKEDEV tun0 tun1 tun2 tun3 sh MAKEDEV bpf0 bpf1 bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 bpf8 bpf9 # sh MAKEDEV lkm local sh MAKEDEV fb0 fb1 fb2 ;; std) mknod console c 0 0 mknod drum c 1 0 ; chmod 640 drum ; chown root.kmem drum mknod kmem c 3 1 ; chmod 640 kmem ; chown root.kmem kmem mknod mem c 3 0 ; chmod 640 mem ; chown root.kmem mem mknod null c 3 2 ; chmod 666 null mknod zero c 3 12 ; chmod 666 zero mknod tty c 2 0 ; chmod 666 tty mknod klog c 6 0 ; chmod 600 klog mknod stdin c 7 0 ; chmod 666 stdin mknod stdout c 7 1 ; chmod 666 stdout mknod stderr c 7 2 ; chmod 666 stderr mkdir fd > /dev/null 2>&1 n=0 (cd fd && while [ $n -lt 64 ]; do mknod $n c 7 $n; n="$(( $n + 1 ))"; done) chown -R root.wheel fd chmod 555 fd chmod 666 fd/* ;; tz*) umask 0 ; unit=`expr $i : '..\(.*\)'` case $i in tz*) chr=10;; esac case $unit in 0|1|2|3|4|5|6) unit0=`expr $unit \* 16` unit1=`expr $unit \* 16 + 1` unit2=`expr $unit \* 16 + 2` unit3=`expr $unit \* 16 + 3` mknod rmt$unit c $chr $unit0 mknod nrmt$unit c $chr $unit1 mknod rmth$unit c $chr $unit2 mknod nrmth$unit c $chr $unit3 chmod 666 rmt$unit nrmt$unit rmth$unit nrmth$unit ;; *) echo bad unit for tape in: $1 ;; esac umask 77 ;; bpf*) unit=`expr $i : 'bpf\(.*\)'` rm -f bpf$unit mknod bpf$unit c 12 $unit chmod 600 bpf$unit chown root.wheel bpf$unit ;; ipl) rm -f ipl ipnat ipstate mknod ipl c 91 0 mknod ipnat c 91 1 mknod ipstate c 91 2 chown root.wheel ipl ipnat ipstate ;; #tun*) # unit=`expr $i : 'tun\(.*\)'` # rm -f tun$unit # mknod tun$unit c 111 $unit # chmod 600 tun$unit # chown root.wheel tun$unit # ;; #lkm) # rm -f lkm # mknod lkm c 112 0 # chown root.kmem lkm # chmod 640 lkm # ;; rz*|ccd*) umask 2 ; unit=`expr $i : '.*[dz]\(.*\)'` case $i in rz*) name=rz; blk=21; chr=56;; ccd*) name=ccd; blk=24; chr=87;; esac case $unit in 0|1|2|3|4|5|6|8|9|10|11|12|13|14) mknod ${name}${unit}a b $blk `expr $unit '*' 16 + 0` mknod ${name}${unit}b b $blk `expr $unit '*' 16 + 1` mknod ${name}${unit}c b $blk `expr $unit '*' 16 + 2` mknod ${name}${unit}d b $blk `expr $unit '*' 16 + 3` mknod ${name}${unit}e b $blk `expr $unit '*' 16 + 4` mknod ${name}${unit}f b $blk `expr $unit '*' 16 + 5` mknod ${name}${unit}g b $blk `expr $unit '*' 16 + 6` mknod ${name}${unit}h b $blk `expr $unit '*' 16 + 7` mknod ${name}${unit}i b $blk `expr $unit '*' 16 + 8` mknod ${name}${unit}j b $blk `expr $unit '*' 16 + 9` mknod ${name}${unit}k b $blk `expr $unit '*' 16 + 10` mknod ${name}${unit}l b $blk `expr $unit '*' 16 + 11` mknod ${name}${unit}m b $blk `expr $unit '*' 16 + 12` mknod ${name}${unit}n b $blk `expr $unit '*' 16 + 13` mknod ${name}${unit}o b $blk `expr $unit '*' 16 + 14` mknod ${name}${unit}p b $blk `expr $unit '*' 16 + 15` mknod r${name}${unit}a c $chr `expr $unit '*' 16 + 0` mknod r${name}${unit}b c $chr `expr $unit '*' 16 + 1` mknod r${name}${unit}c c $chr `expr $unit '*' 16 + 2` mknod r${name}${unit}d c $chr `expr $unit '*' 16 + 3` mknod r${name}${unit}e c $chr `expr $unit '*' 16 + 4` mknod r${name}${unit}f c $chr `expr $unit '*' 16 + 5` mknod r${name}${unit}g c $chr `expr $unit '*' 16 + 6` mknod r${name}${unit}h c $chr `expr $unit '*' 16 + 7` mknod r${name}${unit}i c $chr `expr $unit '*' 16 + 8` mknod r${name}${unit}j c $chr `expr $unit '*' 16 + 9` mknod r${name}${unit}k c $chr `expr $unit '*' 16 + 10` mknod r${name}${unit}l c $chr `expr $unit '*' 16 + 11` mknod r${name}${unit}m c $chr `expr $unit '*' 16 + 12` mknod r${name}${unit}n c $chr `expr $unit '*' 16 + 13` mknod r${name}${unit}o c $chr `expr $unit '*' 16 + 14` mknod r${name}${unit}p c $chr `expr $unit '*' 16 + 15` chown root.operator ${name}${unit}[a-p] r${name}${unit}[a-p] chmod 640 ${name}${unit}[a-p] r${name}${unit}[a-p] ;; *) echo bad unit for disk in: $i ;; esac umask 77 ;; vnd*) umask 2 ; unit=`expr $i : 'vnd\(.*\)'` for name in vnd svnd; do blk=2; chr=11; 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 '*' 16 + $off + 0` mknod ${name}${unit}b b $blk `expr $unit '*' 16 + $off + 1` mknod ${name}${unit}c b $blk `expr $unit '*' 16 + $off + 2` mknod ${name}${unit}d b $blk `expr $unit '*' 16 + $off + 3` mknod ${name}${unit}e b $blk `expr $unit '*' 16 + $off + 4` mknod ${name}${unit}f b $blk `expr $unit '*' 16 + $off + 5` mknod ${name}${unit}g b $blk `expr $unit '*' 16 + $off + 6` mknod ${name}${unit}h b $blk `expr $unit '*' 16 + $off + 7` mknod ${name}${unit}i b $blk `expr $unit '*' 16 + $off + 8` mknod ${name}${unit}j b $blk `expr $unit '*' 16 + $off + 9` mknod ${name}${unit}k b $blk `expr $unit '*' 16 + $off + 10` mknod ${name}${unit}l b $blk `expr $unit '*' 16 + $off + 11` mknod ${name}${unit}m b $blk `expr $unit '*' 16 + $off + 12` mknod ${name}${unit}n b $blk `expr $unit '*' 16 + $off + 13` mknod ${name}${unit}o b $blk `expr $unit '*' 16 + $off + 14` mknod ${name}${unit}p b $blk `expr $unit '*' 16 + $off + 15` mknod r${name}${unit}a c $chr `expr $unit '*' 16 + $off + 0` mknod r${name}${unit}b c $chr `expr $unit '*' 16 + $off + 1` mknod r${name}${unit}c c $chr `expr $unit '*' 16 + $off + 2` mknod r${name}${unit}d c $chr `expr $unit '*' 16 + $off + 3` mknod r${name}${unit}e c $chr `expr $unit '*' 16 + $off + 4` mknod r${name}${unit}f c $chr `expr $unit '*' 16 + $off + 5` mknod r${name}${unit}g c $chr `expr $unit '*' 16 + $off + 6` mknod r${name}${unit}h c $chr `expr $unit '*' 16 + $off + 7` mknod r${name}${unit}i c $chr `expr $unit '*' 16 + $off + 8` mknod r${name}${unit}j c $chr `expr $unit '*' 16 + $off + 9` mknod r${name}${unit}k c $chr `expr $unit '*' 16 + $off + 10` mknod r${name}${unit}l c $chr `expr $unit '*' 16 + $off + 11` mknod r${name}${unit}m c $chr `expr $unit '*' 16 + $off + 12` mknod r${name}${unit}n c $chr `expr $unit '*' 16 + $off + 13` mknod r${name}${unit}o c $chr `expr $unit '*' 16 + $off + 14` mknod r${name}${unit}p c $chr `expr $unit '*' 16 + $off + 15` chown root.operator ${name}${unit}[a-p] r${name}${unit}[a-p] chmod 640 ${name}${unit}[a-p] r${name}${unit}[a-p] done umask 77 ;; dc*) unit=`expr $i : 'dc\(.*\)'` case $unit in 0) mknod tty00 c 16 2 mknod tty01 c 16 3 ;; *) echo bad unit for dc in: $i ;; esac ;; scc*) unit=`expr $i : 'scc\(.*\)'` case $unit in 0) mknod tty00 c 17 0 mknod tty01 c 17 2 ;; *) echo bad unit for scc in: $i ;; esac ;; fb*) unit=`expr $i : 'fb\(.*\)'` mknod fb$unit c 86 $unit ; chmod 666 fb$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 n=0 while [ $n -lt 16 ] do nam=$name`hex $n` rm -f {tty,pty}$nam mknod tty$nam c 4 "$(( $offset + $n ))" mknod pty$nam c 5 "$(( $offset + $n ))" n="$(( $n + 1 ))" done umask 77 ;; esac ;; random|srandom|urandom|prandom|arandom) rm -f random urandom srandom prandom arandom mknod random c 89 0 mknod srandom c 89 1 mknod urandom c 89 2 mknod prandom c 89 3 mknod arandom c 89 4 chown root.wheel random srandom urandom prandom arandom chmod 644 random srandom urandom prandom arandom ;; uk*) unit=`expr $i : 'uk\(.*\)'` rm -f uk$unit mknod uk$unit c 98 $unit chown root.operator uk$unit chmod 640 uk$unit ;; ss*) unit=`expr $i : 'ss\(.*\)'` rm -f ss$unit mknod ss$unit c 99 $unit chown root.operator ss$unit chmod 440 ss$unit # backwards compatibility with older PINTs rm -f scan$unit ln -s ss$unit scan$unit ;; local) umask 0 test -s MAKEDEV.local && sh MAKEDEV.local ;; *) echo $i: unknown device ;; esac done