home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / unix / riscbsd / 1_1_beta / upgrades / makedev_gz / makedev_gz~
Encoding:
Text File  |  1996-07-04  |  8.3 KB  |  324 lines

  1. #!/bin/sh -
  2. #
  3. # Copyright (c) 1990 The Regents of the University of California.
  4. # All rights reserved.
  5. #
  6. # Modified by Scott Stevens (16/07/95)from the i386 MAKEDEV
  7. # Written and contributed by W. Jolitz 12/90
  8. #
  9. # Redistribution and use in source and binary forms are permitted provided
  10. # that: (1) source distributions retain this entire copyright notice and
  11. # comment, and (2) distributions including binaries display the following
  12. # acknowledgement:  ``This product includes software developed by the
  13. # University of California, Berkeley and its contributors'' in the
  14. # documentation or other materials provided with the distribution and in
  15. # all advertising materials mentioning features or use of this software.
  16. # Neither the name of the University nor the names of its contributors may
  17. # be used to endorse or promote products derived from this software without
  18. # specific prior written permission.
  19. # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  20. # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  21. # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  22. #
  23. #    @(#)MAKEDEV    5.2 (Berkeley) 6/22/90
  24. #
  25. # Device "make" file.  Valid arguments:
  26. #    all    makes all known devices, including local devices.
  27. #        Tries to make the 'standard' number of each type.
  28. #    floppy    devices to be put on install floppies
  29. #    std    standard devices
  30. #    local    configuration specific devices
  31. #
  32. # Tapes:
  33. #    st*    SCSI tapes
  34. #
  35. # Disks:
  36. #    wd*    "winchester" disk drives (ST506,IDE,ESDI,RLL,...)
  37. #    fd*    "floppy" disk drives (3 1/2", 5 1/4")
  38. #    sd*    SCSI disks
  39. #    cd*    SCSI CD-ROM
  40. #    vnd*    "file" pseudo-disks
  41. #
  42. # Console ports:
  43. #    ttyv0    pccons or pcvt screen 0
  44. #    ttyv*    pcvt
  45. #
  46. # Pointing devices:
  47. #    quadmouse    "quadrature mouse"
  48. # Terminal ports:
  49. #    com*    standard PC COM ports            (XXX)
  50. #    tty*    alias for PC COM ports, this is what the system really wants
  51. #
  52. # Pseudo terminals:
  53. #    pty*    set of 16 master and slave pseudo terminals
  54. #
  55. # Printers:
  56. #    lpt*    stock lp
  57. #    lpa*    interruptless lp
  58. #
  59. # Cpus:
  60. #    cpu*    cpus
  61. #
  62. #
  63. # Call units:
  64. #
  65. # Special purpose devices:
  66. #    fd    file descriptors
  67. #    bpf*    packet filter
  68. #    beep    riscpc speaker
  69. #    lkm    loadable kernel modules interface
  70. #    tun*    network tunnel driver
  71. #    ch*    SCSI Auto changer
  72. #    uk*    SCSI Unknown device
  73.  
  74. PATH=/sbin:/usr/sbin:/bin:/usr/bin
  75. umask 77
  76. for i
  77. do
  78. case $i in
  79.  
  80. all)
  81.     sh MAKEDEV std fd fd0 fd1 wd0 wd1 rd0 rd1 sd0 sd1 sd2 tty0 tty1 pty0 pty1
  82.     sh MAKEDEV st0 st1 ch0 cd0 cd1 vnd0 vnd1 ccd0 ccd1 uk0 uk1
  83.     sh MAKEDEV ttyv0 ttyv1 ttyv2 ttyv3 ttyv4 ttyv5 ttyv6 ttyv7 ttyv8 ttyv9
  84.     sh MAKEDEV lpa0 lpt0 bpf0 bpf1 bpf2 bpf3 tun0 tun1 tun2
  85.     sh MAKEDEV beep lkm quadmouse local cpu0 cpu1 cpu2 cpu3 cpu4 cpu5
  86.     ;;
  87.  
  88. floppy)
  89.     sh MAKEDEV std fd0 fd1 wd0 wd1 rd0 rd1 sd0 sd1 sd2 tty0 tty1
  90.     sh MAKEDEV ttyv0 ttyv1 ttyv2 ttyv3 ttyv4 ttyv5 ttyv6 ttyv7 ttyv8 ttyv9
  91.     sh MAKEDEV st0 st1 cd0 cd1
  92.     ;;
  93.  
  94. std)
  95.     rm -f console drum mem kmem null zero tty klog stdin stdout stderr kbd
  96.     rm -f vidcvideo0 vidc
  97.     mknod mem        c 0 0    ; chmod 640 mem    ; chgrp kmem mem
  98.     mknod kmem        c 0 1    ; chmod 640 kmem ; chgrp kmem kmem
  99.     mknod null        c 0 2    ; chmod 666 null
  100.     mknod zero        c 0 3    ; chmod 666 zero
  101.     mknod drum        c 1 0    ; chmod 640 drum ; chgrp kmem drum
  102.     mknod console        c 2 0
  103.     mknod tty        c 3 0    ; chmod 666 tty
  104.     mknod klog        c 5 0    ; chmod 600 klog
  105.     mknod kbd        c 11 0    ; chmod 666 kbd
  106.     mknod stdin        c 34 0    ; chmod 666 stdin
  107.     mknod stdout        c 34 1    ; chmod 666 stdout
  108.     mknod stderr        c 34 2    ; chmod 666 stderr
  109.     mknod vidcvideo0    c 37 0    ; chmod 640 vidcvideo0
  110.     ln -s vidcvideo0 vidc
  111.     ;;
  112.  
  113. ttyv*)
  114.     unit=`expr $i : 'ttyv\(.*\)'`
  115.     rm -f ttyv$unit
  116.     mknod ttyv$unit c 4 $unit
  117.     chown root.wheel ttyv$unit
  118.     ;;
  119.  
  120. fd)
  121.     rm -f fd/*
  122.     mkdir fd > /dev/null 2>&1
  123.     (cd fd && eval `echo "" | awk ' BEGIN { \
  124.         for (i = 0; i < 64; i++) \
  125.              printf("mknod %d c 34 %d;", i, i)}'`)
  126.     chown -R bin.bin fd
  127.     chmod 555 fd
  128.     chmod 666 fd/*
  129.     ;;
  130.  
  131. fd*|sd*|vnd*|wd*|rd*|ccd*)
  132.     umask 2 ; unit=`expr $i : '.*d\(.*\)'`
  133.     case $i in
  134.     fd*) name=fd; blk=17; chr=17;;
  135.     sd*) name=sd; blk=24; chr=24;;
  136.     vnd*) name=vnd; blk=19; chr=19;;
  137.     wd*) name=wd; blk=16; chr=16;;
  138.     rd*) name=rd; blk=18; chr=18;;
  139.     ccd*) name=ccd; blk=21; chr=21;;
  140.     esac
  141.     rm -f $name$unit? r$name$unit?
  142.     mknod ${name}${unit}a    b $blk `expr $unit '*' 8 + 0`
  143.     mknod ${name}${unit}b    b $blk `expr $unit '*' 8 + 1`
  144.     mknod ${name}${unit}c    b $blk `expr $unit '*' 8 + 2`
  145.     mknod ${name}${unit}d    b $blk `expr $unit '*' 8 + 3`
  146.     mknod ${name}${unit}e    b $blk `expr $unit '*' 8 + 4`
  147.     mknod ${name}${unit}f    b $blk `expr $unit '*' 8 + 5`
  148.     mknod ${name}${unit}g    b $blk `expr $unit '*' 8 + 6`
  149.     mknod ${name}${unit}h    b $blk `expr $unit '*' 8 + 7`
  150.     mknod r${name}${unit}a    c $chr `expr $unit '*' 8 + 0`
  151.     mknod r${name}${unit}b    c $chr `expr $unit '*' 8 + 1`
  152.     mknod r${name}${unit}c    c $chr `expr $unit '*' 8 + 2`
  153.     mknod r${name}${unit}d    c $chr `expr $unit '*' 8 + 3`
  154.     mknod r${name}${unit}e    c $chr `expr $unit '*' 8 + 4`
  155.     mknod r${name}${unit}f    c $chr `expr $unit '*' 8 + 5`
  156.     mknod r${name}${unit}g    c $chr `expr $unit '*' 8 + 6`
  157.     mknod r${name}${unit}h    c $chr `expr $unit '*' 8 + 7`
  158.     chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h]
  159.     chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
  160.     umask 77
  161.     ;;
  162.  
  163. com*|tty*)                    # (XXX -- com should die)
  164.     unit=`expr $i : '...\(.*\)'`
  165.     rm -f com$unit tty0$unit
  166.     mknod tty0$unit c 12 $unit
  167.     chown uucp.wheel tty0$unit
  168.     ;;
  169.  
  170. pty*)
  171.     class=`expr $i : 'pty\(.*\)'`
  172.     case $class in
  173.     0) offset=0 name=p;;
  174.     1) offset=16 name=q;;
  175.     2) offset=32 name=r;;
  176.     3) offset=48 name=s;;
  177. # Note that telnetd, rlogind, and xterm (at least) only look at p-s.
  178.     4) offset=64 name=t;;
  179.     *) echo bad unit for pty in: $i;;
  180.     esac
  181.     case $class in
  182.     0|1|2|3|4)
  183.         umask 0
  184.         eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
  185.             for (i = 0; i < 16; i++)
  186.                 printf("rm -f tty%s%x; mknod tty%s%x c 7 %d; \
  187.                     rm -f pty%s%x; mknod pty%s%x c 6 %d; ", \
  188.                     n, i, n, i, b+i, n, i, n, i, b+i); }'`
  189.         umask 77
  190.         ;;
  191.     esac
  192.     ;;
  193.  
  194. st*)
  195.     umask 2 ; unit=`expr $i : '..\(.*\)'`
  196.     case $i in
  197.     st*) name=st;  chr=25; blk=25;;
  198.     esac
  199.     rm -f $name$unit n$name$unit e$name$unit en$name$unit \
  200.         r$name$unit nr$name$unit er$name$unit enr$name$unit 
  201.     mknod ${name}${unit}    b $blk `expr $unit '*' 16 + 0`
  202.     mknod n${name}${unit}    b $blk `expr $unit '*' 16 + 1`
  203.     mknod e${name}${unit}    b $blk `expr $unit '*' 16 + 2`
  204.     mknod en${name}${unit}    b $blk `expr $unit '*' 16 + 3`
  205.     mknod r${name}${unit}    c $chr `expr $unit '*' 16 + 0`
  206.     mknod nr${name}${unit}    c $chr `expr $unit '*' 16 + 1`
  207.     mknod er${name}${unit}    c $chr `expr $unit '*' 16 + 2`
  208.     mknod enr${name}${unit}    c $chr `expr $unit '*' 16 + 3`
  209.     chgrp operator ${name}${unit} n${name}${unit} \
  210.         e$name$unit en$name$unit \
  211.         r${name}${unit} nr${name}${unit} \
  212.         er${name}${unit} enr${name}${unit} 
  213.     chmod 640 ${name}${unit} n${name}${unit} \
  214.         e$name$unit en$name$unit \
  215.         r${name}${unit} nr${name}${unit} \
  216.         er${name}${unit} enr${name}${unit} 
  217.     umask 77
  218.     ;;
  219.  
  220. ch*)
  221.     umask 2 ; unit=`expr $i : '..\(.*\)'`
  222.     case $i in
  223.     ch*) name=ch;  chr=27;;
  224.     esac
  225.     rm -f $name$unit
  226.     mknod ${name}${unit}    c $chr `expr $unit '*' 16 + 0`
  227.     chgrp operator ${name}${unit}
  228.     chmod 640 ${name}${unit}
  229.     umask 77
  230.     ;;
  231.  
  232.  
  233. uk*)
  234.     umask 2 ; unit=`expr $i : '..\(.*\)'`
  235.     case $i in
  236.     uk*) name=uk;  chr=28;;
  237.     esac
  238.     rm -f $name$unit
  239.     mknod ${name}${unit}    c $chr $unit
  240.     chgrp operator ${name}${unit}
  241.     chmod 640 ${name}${unit}
  242.     umask 77
  243.     ;;
  244.  
  245. cd*)
  246.     umask 2 ; unit=`expr $i : '.*cd\(.*\)'`
  247.     case $i in
  248.     cd*) name=cd; blk=26; chr=26;;
  249.     esac
  250.     rm -f $name$unit? r$name$unit?
  251.     mknod ${name}${unit}a    b $blk `expr $unit '*' 8 + 0`
  252.     mknod ${name}${unit}d    b $blk `expr $unit '*' 8 + 3`
  253.     mknod r${name}${unit}a    c $chr `expr $unit '*' 8 + 0`
  254.     mknod r${name}${unit}d    c $chr `expr $unit '*' 8 + 3`
  255.     chgrp operator ${name}${unit}[a-h] r${name}${unit}[a-h]
  256.     chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
  257.     umask 77
  258.     ;;
  259.  
  260. lpa*)
  261.     unit=`expr $i : 'lpa\(.*\)'`
  262.     rm -f lpa$unit
  263.     mknod lpa$unit c 8 `expr $unit + 128`
  264.     chown root.wheel lpa$unit
  265.     ;;
  266.  
  267. lpt*)
  268.     unit=`expr $i : 'lpt\(.*\)'`
  269.     rm -f lpt$unit
  270.     mknod lpt$unit c 8 $unit
  271.     chown root.wheel lpt$unit
  272.     ;;
  273.  
  274. bpf*)
  275.     unit=`expr $i : 'bpf\(.*\)'`
  276.     rm -f bpf$unit
  277.     mknod bpf$unit c 32 $unit
  278.     chown root.wheel bpf$unit
  279.     ;;
  280.  
  281. tun*)
  282.     unit=`expr $i : 'tun\(.*\)'`
  283.     rm -f tun$unit
  284.     mknod tun$unit c 33 $unit
  285.     chmod 600 tun$unit
  286.     chown root.wheel tun$unit
  287.     ;;
  288.  
  289. beep)
  290.     rm -f beep
  291.     mknod beep c 10 0
  292.     chown root.wheel beep
  293.     ;;
  294.  
  295. lkm)
  296.     rm -f lkm
  297.     mknod lkm c 35 0
  298.     chown root.kmem lkm
  299.     chmod 640 lkm
  300.     ;;
  301.  
  302. quadmouse)
  303.     mknod quadmouse c 9 0
  304.     rm -f mouse
  305.     ln -s quadmouse mouse
  306.     ;;
  307.  
  308. cpu*)
  309.     unit=`expr $i : 'cpu\(.*\)'`
  310.     rm -f cpu$unit
  311.     mknod cpu$unit c 38 $unit
  312.     chown root.wheel cpu$unit
  313.     ;;
  314.  
  315.  
  316. local)
  317.     umask 0
  318.     sh MAKEDEV.local
  319.     ;;
  320.  
  321. esac
  322. done
  323.