#!/bin/sh - # # $OpenBSD: MAKEDEV,v 1.4 2001/05/30 02:11:16 deraadt Exp $ # @(#)MAKEDEV 5.5 (Berkeley) 5/28/91 # # Device "make" file. Valid arguments: # std standard devices # local configuration specific devices # Tapes: # st* SCSI tape # Disks: # fd* floppy disks # sd* SCSI disks # cd* CDROM drives # ccd* "concatenated" pseudo-disks # vnd* "file" pseudo-disks # rd* RAM disks # Terminal multiplexors: # tty0* RS-232 single-port serial interface # Pseudo terminals: # pty* set of 16 master and slave pseudo terminals # Printers: # lpt* IEEE 1284 cetronics iface # Call units: # Special purpose devices: # ch* SCSI media changer # fd file descriptors # hil HIL input devices # bpf* packet filter # tun* network tunnel driver # lkm loadable kernel modules interface # *random inkernel random number generator # xfs* XFS filesystem devices # PATH=/sbin:/bin/:/usr/bin:/usr/sbin umask 77 # # Utility functions # 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 } dodisk () { rm -f ${1}${2}? r${1}${2}? mknod ${1}${2}a b $3 $(($5 * 16 + $6 + 0)) mknod ${1}${2}b b $3 $(($5 * 16 + $6 + 1)) mknod ${1}${2}c b $3 $(($5 * 16 + $6 + 2)) mknod ${1}${2}d b $3 $(($5 * 16 + $6 + 3)) mknod ${1}${2}e b $3 $(($5 * 16 + $6 + 4)) mknod ${1}${2}f b $3 $(($5 * 16 + $6 + 5)) mknod ${1}${2}g b $3 $(($5 * 16 + $6 + 6)) mknod ${1}${2}h b $3 $(($5 * 16 + $6 + 7)) mknod ${1}${2}i b $3 $(($5 * 16 + $6 + 8)) mknod ${1}${2}j b $3 $(($5 * 16 + $6 + 9)) mknod ${1}${2}k b $3 $(($5 * 16 + $6 + 10)) mknod ${1}${2}l b $3 $(($5 * 16 + $6 + 11)) mknod ${1}${2}m b $3 $(($5 * 16 + $6 + 12)) mknod ${1}${2}n b $3 $(($5 * 16 + $6 + 13)) mknod ${1}${2}o b $3 $(($5 * 16 + $6 + 14)) mknod ${1}${2}p b $3 $(($5 * 16 + $6 + 15)) mknod r${1}${2}a c $4 $(($5 * 16 + $6 + 0)) mknod r${1}${2}b c $4 $(($5 * 16 + $6 + 1)) mknod r${1}${2}c c $4 $(($5 * 16 + $6 + 2)) mknod r${1}${2}d c $4 $(($5 * 16 + $6 + 3)) mknod r${1}${2}e c $4 $(($5 * 16 + $6 + 4)) mknod r${1}${2}f c $4 $(($5 * 16 + $6 + 5)) mknod r${1}${2}g c $4 $(($5 * 16 + $6 + 6)) mknod r${1}${2}h c $4 $(($5 * 16 + $6 + 7)) mknod r${1}${2}i c $4 $(($5 * 16 + $6 + 8)) mknod r${1}${2}j c $4 $(($5 * 16 + $6 + 9)) mknod r${1}${2}k c $4 $(($5 * 16 + $6 + 10)) mknod r${1}${2}l c $4 $(($5 * 16 + $6 + 11)) mknod r${1}${2}m c $4 $(($5 * 16 + $6 + 12)) mknod r${1}${2}n c $4 $(($5 * 16 + $6 + 13)) mknod r${1}${2}o c $4 $(($5 * 16 + $6 + 14)) mknod r${1}${2}p c $4 $(($5 * 16 + $6 + 15)) chown root.operator ${1}${2}[a-p] r${1}${2}[a-p] chmod 640 ${1}${2}[a-p] r${1}${2}[a-p] } # # End of utility functions # for i do case $i in all) sh MAKEDEV std fd st0 st1 ccd0 ccd1 ccd2 sh MAKEDEV sd0 sd1 sd2 rd0 rd1 pty0 vnd0 vnd1 vnd2 vnd3 sh MAKEDEV hil com0 com1 com2 com3 sh MAKEDEV bpf0 bpf1 bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 bpf8 bpf9 sh MAKEDEV tun0 tun1 tun2 tun3 lkm random xfs0 sh MAKEDEV local ;; raminst) sh MAKEDEV std fd st0 st1 sd0 sd1 sd2 sd3 rd0 rd1 sh MAKEDEV pty0 hil com0 com1 sh MAKEDEV bpf0 bpf1 tun0 tun1 lkm random ;; std) rm -f console drum kmem mem null zero tty klog stdin stdout stderr ksyms mknod console c 0 0 mknod tty c 1 0 ; chmod 666 tty mknod mem c 2 0 ; chmod 640 mem ; chown root.kmem mem mknod kmem c 2 1 ; chmod 640 kmem ; chown root.kmem kmem mknod null c 2 2 ; chmod 666 null mknod zero c 2 12 ; chmod 666 zero mknod drum c 3 0 ; chmod 640 drum ; chown root.kmem drum mknod klog c 6 0 ; chmod 600 klog mknod stdin c 16 0 ; chmod 666 stdin mknod stdout c 16 1 ; chmod 666 stdout mknod stderr c 16 2 ; chmod 666 stderr mknod ksyms c 29 0 ; chmod 640 ksyms ; chown root.kmem ksyms ;; fd) rm -f fd/* mkdir fd > /dev/null 2>&1 n=0 (cd fd && while [ $n -lt 64 ]; do mknod $n c 24 $n; n="$(( $n + 1 ))"; done ) chown -R root.wheel fd chmod 555 fd chmod 666 fd/* ;; st*) umask 2 ; unit=${i##*[a-z]} case $i in st*) name=st; chr=11; blk=5;; 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 $(($unit * 16 + 0)) mknod n$name$uni b $blk $(($unit * 16 + 1)) mknod e$name$uni b $blk $(($unit * 16 + 2)) mknod en$name$unit b $blk $(($unit * 16 + 3)) mknod r$name$unit c $chr $(($unit * 16 + 0)) mknod nr$name$unit c $chr $(($unit * 16 + 1)) mknod er$name$unit c $chr $(($unit * 16 + 2)) mknod enr$name$unit c $chr $(($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 660 $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 name=ch; chr=13 rm -f $name$unit mknod ${name}${unit} c $chr $unit chown root.operator ${name}${unit} chmod 660 ${name}${unit} umask 77 ;; bpf*) unit=${i##*[a-z]} rm -f bpf$unit mknod bpf$unit c 17 $unit chmod 600 bpf$unit chown root.wheel bpf$unit ;; tun*) unit=${i##*[a-z]} rm -f tun$unit mknod tun$unit c 18 $unit chmod 600 tun$unit chown root.wheel tun$unit ;; rd*|cd*) umask 2 ; unit=${i##*[a-z]} case $i in rd*) name=cd; blk=3; chr=9;; cd*) name=cd; blk=6; chr=12;; esac rm -f $name$unit? r$name$unit? mknod ${name}${unit}a b $blk $(($unit * 16 + 0)) mknod ${name}${unit}c b $blk $(($unit * 16 + 2)) mknod r${name}${unit}a c $chr $(($unit * 16 + 0)) mknod r${name}${unit}c c $chr $(($unit * 16 + 2)) 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 ;; ccd*|sd*) umask 2 ; unit=${i##*[a-z]} case $i in sd*) name=sd; blk=4; chr=10;; ccd*) name=ccd; blk=1; chr=7;; esac case $unit in 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|\ 17|18|19|20|21|22|23|24|25|26|27|28|29|30|31) dodisk $name $unit $blk $chr $unit 0 ;; *) echo bad unit for disk in: $i ;; esac umask 77 ;; vnd*) umask 2 ; unit=${i##*[a-z]} blk=2; chr=8; dodisk vnd $unit $blk $chr $unit 0 dodisk svnd $unit $blk $chr $unit 128 umask 77 ;; tty0*) unit=${i##tty0} case $unit in 0|1|2|3) rm -f tty${unit} cua${unit} mknod tty${unit} c 23 ${unit} mknod cua${unit} c 23 $((${unit} + 128)) ;; *) echo bad unit for tty in: $i ;; esac ;; lpt*) unit=${i##*[a-z]} case $unit in 0|1|2|3) rm -f lpt${unit} mknod lpt${unit} c 30 ${unit} ;; *) echo bad unit for lpt in: $i ;; esac ;; lkm) rm -f lkm mknod lkm c 19 0 chown root.kmem lkm chmod 640 lkm ;; pty*) class=${i##*[a-z]} case $class in 0) offset=0 name=p;; 1) offset=16 name=q;; 2) offset=32 name=r;; 3) offset=48 name=s;; 4) offset=64 name=t;; 5) offset=80 name=u;; 6) offset=96 name=v;; 7) offset=112 name=w;; 8) offset=128 name=x;; 9) offset=144 name=y;; 10) offset=160 name=z;; 11) offset=176 name=P;; 12) offset=192 name=Q;; 13) offset=208 name=R;; 14) offset=224 name=S;; 15) offset=240 name=T;; *) echo bad unit for pty in: $i;; esac case $class in 0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15) 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 20 0 mknod srandom c 20 1 mknod urandom c 20 2 mknod prandom c 20 3 mknod arandom c 20 4 chown root.wheel random srandom urandom prandom arandom chmod 644 random srandom urandom prandom arandom ;; xfs*) rm -f xfs$unit mknod xfs$unit c 31 $unit chmod 600 xfs$unit chown root.wheel xfs$unit ;; local) umask 0 test -s MAKEDEV.local && sh MAKEDEV.local ;; *) echo $i: unknown device ;; esac done