#!/bin/sh - # # $OpenBSD: MAKEDEV,v 1.19 1997/05/21 18:30:50 pefo Exp $ # @(#)MAKEDEV 8.1 (Berkeley) 6/9/93 # # Device "make" file. Valid arguments: # all makes all known devices # ramdisk makes all devices for a ramdisk kernel # std standard devices # local configuration specific devices # # Tapes: # st* SCSI tapes # # Disks: # fd* floppy disk drives # sd* SCSI disks # wd* IDE disks # cd* SCSI CD rom # acd* IDE CDROM. # vnd* "file" pseudo-disks # rd* "ramdisk" pseudo-disks # ccd* contatenated disk devices # # Console ports: # ttyC0 pccons # # Pointing devices: # pms* PS/2 compatible mouse # # Terminal multiplexors: # tty* tty ports # # Pseudo terminals: # pty* set of 16 master and slave pseudo terminals # # Printers: # lpt* centronics lpt # # Call units: # # Special purpose devices: # bpf* packet filter # lkm loadable kernel modules interface # tun* network tunnel driver # *random random data source # # Platform-specific devices: # 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 fd fd0 wd0 wd1 wd2 wd3 sd0 sd1 sd2 st0 acd0 cd0 ss0 sh MAKEDEV ccd0 ccd1 ccd2 sh MAKEDEV vnd0 vnd1 vnd2 vnd3 tty00 tty01 tty02 tty03 pty0 pty1 sh MAKEDEV bpf0 bpf1 bpf2 bpf3 ipl tun0 tun1 tun2 sh MAKEDEV ttyC0 lpt0 pms0 random uk0 uk1 local ;; ramdisk) sh MAKEDEV std fd0 wd0 wd1 wd2 wd3 sd0 sd1 sd2 st0 acd0 cd0 sh MAKEDEV tty00 tty01 ttyC0 lpt0 random rd0 ;; 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 ;; ttyC*) unit=`expr $i : 'ttyC\(.*\)'` rm -f ttyC$unit mknod ttyC$unit c 14 $unit chown root.wheel ttyC$unit case $unit in 0) rm -f pccons ln -s ttyC0 pccons ;; esac ;; pms*) unit=`expr $i : '.ms\(.*\)'` unit=`expr $unit \* 2 + 1` case $i in pms*) name=pms; chr=15;; esac rm -f $name$unit mknod $name$unit c $chr $unit chown root.wheel $name$unit ;; fd) rm -rf fd/* 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/* ;; st*) umask 2 ; unit=`expr $i : '..\(.*\)'` case $i in st*) name=st; 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 + 4` unit3=`expr $unit \* 16 + 5` mknod r${name}${unit} c $chr $unit0 mknod nr${name}${unit} c $chr $unit1 mknod r${name}h${unit} c $chr $unit2 mknod nr${name}h${unit} c $chr $unit3 chown root.operator r${name}${unit} nr${name}${unit} \ r${name}h${unit} nr${name}h${unit} chmod 640 r${name}${unit} nr${name}${unit} \ r${name}h${unit} nr${name}h${unit} ;; *) echo bad unit for tape in: $1 ;; esac umask 77 ;; bpf*|tun*) unit=`expr $i : '...\(.*\)'` case $i in bpf*) name=bpf; chr=12;; tun*) name=tun; chr=40;; esac rm -f $name$unit mknod $name$unit c $chr $unit chown root.wheel $name$unit ;; ipl) rm -f ipl mknod ipl c 31 0 chown root.wheel ipl ;; rd*) umask 2 ; unit=`expr $i : '.*d\(.*\)'` mknod rd${unit}a b 8 `expr $unit '*' 16 + 0` mknod rd${unit}c b 8 `expr $unit '*' 16 + 2` mknod rrd${unit}a c 22 `expr $unit '*' 16 + 0` mknod rrd${unit}c c 22 `expr $unit '*' 16 + 2` chown root.operator rd${unit}[ac] rrd${unit}[ac] chmod 640 rd${unit}[ac] rrd${unit}[ac] umask 77 ;; #lkm) # rm -f lkm # mknod lkm c 112 0 # chown root.kmem lkm # chmod 640 lkm # ;; ccd*|fd*|sd*|wd*) umask 2 ; unit=`expr $i : '.*d\(.*\)'` case $i in ccd*) name=ccd; blk=6; chr=23;; sd*) name=sd; blk=0; chr=9;; fd*) name=fd; blk=7; chr=13;; wd*) name=wd; blk=4; chr=18;; esac rm -f $name$unit r$name$unit case $unit in 0|1|2|3|4|5|6) mknod ${name}${unit}a b $blk `expr $unit '*' 16 + 0` mknod r${name}${unit}a c $chr `expr $unit '*' 16 + 0` mknod ${name}${unit}c b $blk `expr $unit '*' 16 + 2` mknod r${name}${unit}c c $chr `expr $unit '*' 16 + 2` mknod ${name}${unit}b b $blk `expr $unit '*' 16 + 1` 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}b c $chr `expr $unit '*' 16 + 1` 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 ;; cd*|acd*) umask 2 ; unit=`expr $i : '.*cd\(.*\)'` case $i in cd*) name=cd; blk=3; chr=8;; acd*) name=acd; blk=6; char=19;; esac rm -f $name$unit? r$name$unit? mknod ${name}${unit}a b $blk `expr $unit '*' 16 + 0` mknod ${name}${unit}c b $blk `expr $unit '*' 16 + 2` mknod r${name}${unit}a c $chr `expr $unit '*' 16 + 0` mknod r${name}${unit}c c $chr `expr $unit '*' 16 + 2` chown root.operator ${name}${unit}[a-p] r${name}${unit}[a-p] chmod 640 ${name}${unit}[a-p] r${name}${unit}[a-p] umask 77 ;; uk*) unit=`expr $i : 'uk\(.*\)'` rm -f uk$unit mknod uk$unit c 32 $unit chown root.operator uk$unit chmod 640 uk$unit ;; ss*) unit=`expr $i : 'ss\(.*\)'` rm -f ss$unit mknod ss$unit c 34 $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 ;; lpt*) unit=`expr $i : 'lpt\(.*\)'` rm -f lpt$unit mknod lpt$unit c 16 $unit chown root.wheel lpt$unit ;; tty*) unit=`expr $i : '...\(.*\)'` rm -f tty$unit cua$unit mknod tty$unit c 17 $unit mknod cua$unit c 17 `expr $unit + 128` chown uucp.wheel tty$unit cua$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 -rf {tty,pty}$n 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 32 0 mknod srandom c 32 1 mknod urandom c 32 2 mknod prandom c 32 3 mknod arandom c 32 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 ;; *) echo $i: unknown device ;; esac done