#!/bin/sh - # $NetBSD: MAKEDEV,v 1.12 2003/10/10 22:47:11 jdolecek Exp $ # ########################################################################### # # PLEASE RUN "cd ../share/man/man8 ; make makedevs" # AFTER CHANGING THIS FILE, AND COMMIT THE UPDATED MANPAGE! # ########################################################################### # # Device "make" file. Valid arguments: # all makes all known devices, including local devices. # Tries to make the 'standard' number of each type. # init A set of devices that is used for MFS /dev by init. # May be equal to "all". # std standard devices # # Terminal ports: # tty* serial ports # # Pseudo terminals: # pty* set of 62 master and slave pseudo terminals # # Special purpose devices: # bpf* packet filter # clockctl clock control for non root users # fd file descriptors # lkm loadable kernel modules interface # random Random number generator, see rnd(4) # systrace syscall tracer # tun* network tunnel driver # pf PF packet filter # crypto hardware crypto access driver # dialin=0 dialout=524288 PATH=/sbin:/usr/sbin:/bin:/usr/bin umask 77 # Check if we have fdesc mounted if [ -d fd ]; then case "`df fd`" in *fdesc*) nofdesc=false;; *) nofdesc=true;; esac else nofdesc=true fi makedev() { for i do case $i in init|all) makedev std makedev tty0 tty1 pty0 makedev bpf0 bpf1 bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 makedev lkm random makedev clockctl makedev local ;; std) rm -f console constty drum mem kmem null zero klog mknod console c 0 0 mknod constty c 0 1 mknod drum c 3 0 ; chmod 640 drum ; chgrp kmem drum mknod kmem c 2 1 ; chmod 640 kmem ; chgrp kmem kmem mknod mem c 2 0 ; chmod 640 mem ; chgrp kmem mem mknod null c 2 2 ; chmod 666 null mknod zero c 2 12 ; chmod 666 zero mknod klog c 6 0 ; chmod 600 klog mknod ksyms c 25 0 ; chmod 444 ksyms if $nofdesc; then rm -f tty stdin stdout stderr mknod tty c 1 0 ; chmod 666 tty mknod stdin c 11 0 ; chmod 666 stdin mknod stdout c 11 1 ; chmod 666 stdout mknod stderr c 11 2 ; chmod 666 stderr fi ;; bpf*|tun*) case $i in bpf*) name=bpf; unit=${i#bpf}; chr=12;; tun*) name=tun; unit=${i#tun}; chr=13;; esac rm -f $name$unit mknod $name$unit c $chr $unit ;; pty*) class=${i#pty} set -- p q r s t u v w x y z P Q R S T if [ "$class" -ge $# ]; then echo "$MAKEDEV: $i: pty unit must be between 0 and 15" continue fi shift $class name=$1 if [ "$name" = v ]; then echo "$MAKEDEV: $i: pty unit conflicts with console ttyv0 device." continue fi rm -f tty$name[0-9a-zA-Z] pty$name[0-9a-zA-Z] jn=0 unit=$(($class * 16)) names= set -- - 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 w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z while shift j=$1 [ -n "$j" ] do if [ $j = g ]; then unit=$(($unit + $class * 30 + 256 - 16)) fi mknod tty$name$j c 4 $unit mknod pty$name$j c 5 $unit names="$names tty$name$j pty$name$j" unit=$(($unit + 1)) done chmod 666 $names unset names ;; random) rm -f random urandom mknod random c 21 0 mknod urandom c 21 1 chmod 444 random chmod 644 urandom ;; tty*) ounit=${i#???} ounit=$(($ounit + 0)) if [ $ounit -lt 10 ]; then unit=0$ounit rm -f com$ounit else unit=$ounit fi rm -f tty$unit dty$unit mknod tty$unit c 10 $(($ounit + $dialin )) mknod dty$unit c 10 $(($ounit + $dialout)) chown uucp tty$unit dty$unit ;; pf) rm -f pf mknod pf c 161 0 chmod 600 pf ;; crypto) rm -f crypto mknod crypto c 160 0 chmod 666 crypto ;; lkm) rm -f lkm mknod lkm c 14 0 chgrp kmem lkm chmod 640 lkm ;; clockctl) rm -f clockctl mknod clockctl c 22 0 chgrp ntpd clockctl chmod 660 clockctl ;; local) if [ -f "$0.local" ]; then umask 0 sh $0.local all umask 77 fi ;; *) echo $i: unknown device ;; esac done } makedev $*