home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / etc / etc.i386 / MAKEDEV < prev    next >
Encoding:
Text File  |  1991-04-08  |  5.6 KB  |  203 lines

  1. #!/bin/sh -
  2. #
  3. # Copyright (c) 1991 The Regents of the University of California.
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms, with or without
  7. # modification, are permitted provided that the following conditions
  8. # are met:
  9. # 1. Redistributions of source code must retain the above copyright
  10. #    notice, this list of conditions and the following disclaimer.
  11. # 2. Redistributions in binary form must reproduce the above copyright
  12. #    notice, this list of conditions and the following disclaimer in the
  13. #    documentation and/or other materials provided with the distribution.
  14. # 3. All advertising materials mentioning features or use of this software
  15. #    must display the following acknowledgement:
  16. #    This product includes software developed by the University of
  17. #    California, Berkeley and its contributors.
  18. # 4. Neither the name of the University nor the names of its contributors
  19. #    may be used to endorse or promote products derived from this software
  20. #    without specific prior written permission.
  21. #
  22. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  23. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  24. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  25. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  26. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  27. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  28. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  29. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  30. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  31. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  32. # SUCH DAMAGE.
  33. #
  34. #    @(#)MAKEDEV    5.1 (Berkeley) 3/22/91
  35. #
  36.  
  37. # Device "make" file.  Valid arguments:
  38. #    std    standard devices
  39. #    local    configuration specific devices
  40. #
  41. # Tapes:
  42. #    wt*    QIC-interfaced (e.g. not SCSI) 3M cartridge tape
  43. #
  44. # Disks:
  45. #    wd*    "winchester" disk drives (ST506,IDE,ESDI,RLL,...)
  46. #    fd*    "floppy" disk drives (3 1/2", 5 1/4")
  47. #
  48. # Terminal ports:
  49. #    com*    standard PC COM ports
  50. #
  51. # Pseudo terminals:
  52. #    pty*    set of 16 master and slave pseudo terminals
  53. #
  54. # Printers:
  55. #
  56. # Call units:
  57. #
  58. # Special purpose devices:
  59. #    flog*    kernel logging device
  60. #
  61.  
  62. PATH=/sbin:/bin/:/usr/bin
  63. umask 77
  64. for i
  65. do
  66. case $i in
  67.  
  68. std)
  69.     mknod console        c 0 0
  70.     mknod drum        c 4 0    ; chmod 640 drum ; chgrp kmem drum
  71.     mknod kmem        c 2 1    ; chmod 640 kmem ; chgrp kmem kmem
  72.     mknod mem        c 2 0    ; chmod 640 mem ; chgrp kmem mem
  73.     mknod null        c 2 2    ; chmod 666 null
  74.     mknod tty        c 1 0    ; chmod 666 tty
  75.     mknod klog        c 7 0    ; chmod 600 klog
  76.     mknod stdin        c 53 0    ; chmod 666 stdin
  77.     mknod stdout        c 53 1    ; chmod 666 stdout
  78.     mknod stderr        c 53 2    ; chmod 666 stderr
  79.     mkdir fd > /dev/null 2>&1
  80.     (cd fd && eval `echo "" | awk ' BEGIN { \
  81.         for (i = 0; i < 64; i++) \
  82.             printf("mknod %d c 53 %d;", i, i)}'`)
  83.     chown -R bin.bin fd
  84.     chmod 555 fd
  85.     chmod 666 fd/*
  86.     ;;
  87.  
  88. wt*)
  89.     umask 0 ; unit=`expr $i : '..\(.*\)'`
  90.     case $i in
  91.     wt*) blk=3; chr=10;;
  92.     esac
  93.     case $unit in
  94.     0)
  95.         four=`expr $unit + 4` ; eight=`expr $unit + 8`
  96.         twelve=`expr $unit + 12`; twenty=`expr $unit + 20`
  97.         #
  98.         # block devices don't work so don't make them
  99.         #mknod wt$unit    b $blk $unit
  100.         #mknod wt$four    b $blk $four
  101.         #mknod wt$eight    b $blk $eight
  102.         #mknod wt$twelve    b $blk $twelve
  103.         #mknod nwt$unit    b $blk $four ;: sanity w/pdp11 v7
  104.         #mknod nwt$eight    b $blk $twelve ;: ditto
  105.         #
  106.         mknod rwt$unit    c $chr $unit
  107.         mknod rwt$four    c $chr $four
  108.         mknod rwt$eight    c $chr $eight
  109.         mknod rwt$twelve    c $chr $twelve
  110.         ln rwt$four nrwt$unit ;: sanity w/pdp11 v7
  111.         ln rwt$twelve nrwt$eight ;: ditto
  112.         ;;
  113.     *)
  114.         echo bad unit for tape in: $1
  115.         ;;
  116.     esac
  117.     umask 77
  118.     ;;
  119.  
  120. fd*|wd*)
  121.     umask 2 ; unit=`expr $i : '..\(.*\)'`
  122.     case $i in
  123.     fd*) name=fd; blk=2; chr=9;;
  124.     wd*) name=wd; blk=0; chr=3;;
  125.     esac
  126.     case $unit in
  127.     0|1)
  128.         mknod ${name}${unit}a    b $blk `expr $unit '*' 8 + 0`
  129.         mknod ${name}${unit}b    b $blk `expr $unit '*' 8 + 1`
  130.         mknod ${name}${unit}c    b $blk `expr $unit '*' 8 + 2`
  131.         mknod ${name}${unit}d    b $blk `expr $unit '*' 8 + 3`
  132.         mknod ${name}${unit}e    b $blk `expr $unit '*' 8 + 4`
  133.         mknod ${name}${unit}f    b $blk `expr $unit '*' 8 + 5`
  134.         mknod ${name}${unit}g    b $blk `expr $unit '*' 8 + 6`
  135.         mknod ${name}${unit}h    b $blk `expr $unit '*' 8 + 7`
  136.         mknod r${name}${unit}a    c $chr `expr $unit '*' 8 + 0`
  137.         mknod r${name}${unit}b    c $chr `expr $unit '*' 8 + 1`
  138.         mknod r${name}${unit}c    c $chr `expr $unit '*' 8 + 2`
  139.         mknod r${name}${unit}d    c $chr `expr $unit '*' 8 + 3`
  140.         mknod r${name}${unit}e    c $chr `expr $unit '*' 8 + 4`
  141.         mknod r${name}${unit}f    c $chr `expr $unit '*' 8 + 5`
  142.         mknod r${name}${unit}g    c $chr `expr $unit '*' 8 + 6`
  143.         mknod r${name}${unit}h    c $chr `expr $unit '*' 8 + 7`
  144.         chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h]
  145.         chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
  146.         ;;
  147.     *)
  148.         echo bad unit for disk in: $i
  149.         ;;
  150.     esac
  151.     umask 77
  152.     ;;
  153.  
  154. com*)
  155.     unit=`expr $i : 'dca\(.*\)'`
  156.     case $unit in
  157.     1)
  158.         mknod com1 c 8 0
  159.         ;;
  160.     2)
  161.         mknod com1 c 8 1
  162.         ;;
  163.     *)
  164.         echo bad unit for com in: $i
  165.         ;;
  166.     esac
  167.     ;;
  168.  
  169. pty*)
  170.     class=`expr $i : 'pty\(.*\)'`
  171.     case $class in
  172.     0) offset=0 name=p;;
  173.     1) offset=16 name=q;;
  174.     2) offset=32 name=r;;
  175.     3) offset=48 name=s;;
  176. # Note that telnetd, rlogind, and xterm (at least) only look at p-s.
  177.     4) offset=64 name=t;;
  178.     *) echo bad unit for pty in: $i;;
  179.     esac
  180.     case $class in
  181.     0|1|2|3|4)
  182.         umask 0
  183.         eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
  184.             for (i = 0; i < 16; i++)
  185.                 printf("mknod tty%s%x c 4 %d; \
  186.                     mknod pty%s%x c 5 %d; ", \
  187.                     n, i, b+i, n, i, b+i); }'`
  188.         umask 77
  189.         if [ $class = 1 ]; then
  190.             mv ttyqf ttyv0; mv ptyqf ptyv0
  191.         fi
  192.         ;;
  193.     esac
  194.     ;;
  195.  
  196. local)
  197.     umask 0
  198.     sh MAKEDEV.local
  199.     ;;
  200.  
  201. esac
  202. done
  203.