home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / usr / etc / MAKEDEV < prev    next >
Encoding:
Text File  |  1992-04-09  |  6.7 KB  |  313 lines

  1. #!/bin/sh -
  2. #
  3. # Copyright (c) 1980 Regents of the University of California.
  4. # All rights reserved.  The Berkeley software License Agreement
  5. # specifies the terms and conditions for redistribution.
  6. #
  7. #    @(#)MAKEDEV    4.28 (Berkeley) 4/28/86
  8. #
  9. # HISTORY
  10. # 30-Jan-92 Blaine Garst
  11. #    Allow operator group to write floppies
  12. # 13-Sep-90    Gregg Kellogg (gk) at NeXT
  13. #    Added dsp device back in (sigh).
  14. #
  15. # 19-Jun-90    Gregg Kellogg (gk) at NeXT
  16. #    Removed dsp device.
  17. # 20-Mar-90    Doug Mitchell
  18. #    Added vol device
  19. # 26-Jan-90    Doug Mitchell
  20. #    Added fd (Floppy Disk).
  21. # 30-Oct-89    Morris Meyer
  22. #    Added dialup devices
  23. # 14-Apr-89    Doug Mitchell
  24. #    Added nrst, rxt, nrxt devices.
  25. # 24-Feb-89    Doug Mitchell at NeXT
  26. #    Added st (SCSI tape).
  27. # 02-Feb-89    Doug Mitchell at NeXT
  28. #    Added sg.
  29. #
  30. #
  31. # Device "make" file.  Valid arguments:
  32. #    std    standard devices
  33. #    local    configuration specific devices
  34. # Tapes:
  35. #    NONE
  36. # Disks:
  37. #    rd*    RAM disk
  38. #    od*    Optical disk
  39. #    oc    Optical disk controller
  40. #    sd*    SCSI disks
  41. #    fd*    Floppy disks
  42. # Terminal multiplexors:
  43. #    tty[ab]    scc terminal drivers
  44. # Pseudo terminals:
  45. #    pty*    set of 16 master and slave pseudo terminals
  46. # Printers:
  47. #    np*    NeXT Printer
  48. # Call units:
  49. #    NONE
  50. # Special purpose devices:
  51. #    vid*    frame buffer
  52. #    ev*    event driver
  53. #    sg*    Generic SCSI Driver
  54. #    st*    SCSI mag tape driver
  55. umask 77
  56. PATH=/bin:/usr/bin:/usr/etc:/etc:/usr/ucb:$PATH
  57. export PATH
  58. for i
  59. do
  60. case $i in
  61.  
  62. NeXT)
  63.     $0 Foc od0 od1 od2 od3 od4 od5 od6 od7 sd0 sd1 sd2 sd3 sd4 sd5 sd6 sd7 sd8 sd9 sd10 sd11 sd12 sd13 sd14 sd15 sc sg0 sg1 sg2 sg3 st0 st1 fd0 fd1 fd2 fd3 fd4 fd5 fd6 fd7 fc vol pty0 pty1 vid0 ev0 evs0 np0 nps0
  64.     ;;
  65.  
  66. std)
  67.     mknod console    c 0 0    ; chmod 622 console
  68.     mknod drum    c 7 0    ; chmod 640 drum ; chgrp kmem drum
  69.     mknod mem    c 3 0    ; chmod 640 mem ; chgrp kmem mem
  70.     mknod kmem    c 3 1    ; chmod 640 kmem ; chgrp kmem kmem
  71.     mknod null    c 3 2    ; chmod 666 null
  72.     mknod dsp    c 3 3    ; chmod 666 dsp
  73.     mknod tty    c 2 0    ; chmod 666 tty
  74.     mknod ttya    c 11 0    ; chmod 666 ttya
  75.     mknod ttyb    c 11 1    ; chmod 666 ttyb
  76.     mknod ttyfa    c 11 32    ; chmod 666 ttyfa
  77.     mknod ttyfb    c 11 33    ; chmod 666 ttyfb
  78.     mknod ttyda    c 11 64    ; chmod 666 ttyda
  79.     mknod ttydb    c 11 65    ; chmod 666 ttydb
  80.     mknod ttydfa    c 11 96    ; chmod 666 ttydfa
  81.     mknod ttydfb    c 11 97    ; chmod 666 ttydfb
  82.     mknod cua    c 11 192; chmod 600 cua ; chown uucp cua
  83.     mknod cub    c 11 193; chmod 600 cub ; chown uucp cub
  84.     mknod cufa    c 11 224; chmod 600 cufa ; chown uucp cufa
  85.     mknod cufb    c 11 225; chmod 600 cufb ; chown uucp cufb
  86.     mknod klog    c 6 0    ; chmod 600 klog
  87.     mknod sound    c 36 0    ; chmod 600 sound
  88.     mknod dialup0    c 16 0  ; chmod 600 dialup0
  89.     mknod dialup1    c 16 1    ; chmod 600 dialup1
  90.     ;;
  91.  
  92. od*|rd*|sd*)
  93.     umask 2 ; unit=`expr $i : '..\(.*\)'`
  94.     case $i in
  95.     od*) name=od; blk=2; chr=9;;
  96.     rd*) name=rd; blk=5; chr=15;;
  97.     sd*) name=sd; blk=6; chr=14;;
  98.     esac
  99.     case $unit in
  100.     0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|\
  101.     17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)
  102.         mknod ${name}${unit}a    b $blk `expr $unit '*' 8 + 0`
  103.         mknod ${name}${unit}b    b $blk `expr $unit '*' 8 + 1`
  104.         mknod ${name}${unit}c    b $blk `expr $unit '*' 8 + 2`
  105.         mknod ${name}${unit}g    b $blk `expr $unit '*' 8 + 6`
  106.         mknod r${name}${unit}a    c $chr `expr $unit '*' 8 + 0`
  107.         mknod r${name}${unit}b    c $chr `expr $unit '*' 8 + 1`
  108.         mknod r${name}${unit}c    c $chr `expr $unit '*' 8 + 2`
  109.         mknod r${name}${unit}g    c $chr `expr $unit '*' 8 + 6`
  110.         mknod ${name}${unit}d    b $blk `expr $unit '*' 8 + 3`
  111.         mknod ${name}${unit}e    b $blk `expr $unit '*' 8 + 4`
  112.         mknod ${name}${unit}f    b $blk `expr $unit '*' 8 + 5`
  113.         mknod ${name}${unit}h    b $blk `expr $unit '*' 8 + 7`
  114.         mknod r${name}${unit}d    c $chr `expr $unit '*' 8 + 3`
  115.         mknod r${name}${unit}e    c $chr `expr $unit '*' 8 + 4`
  116.         mknod r${name}${unit}f    c $chr `expr $unit '*' 8 + 5`
  117.         mknod r${name}${unit}h    c $chr `expr $unit '*' 8 + 7`
  118.         chgrp oFtor ${name}${unit}[a-h] r${name}${unit}[a-h]
  119.         chmod 640 ${name}${unit}[a-h] r${name}${unit}[a-h]
  120.         ;;
  121.     *)
  122.         echo bad unit for disk in: $i
  123.         ;;
  124.     esac
  125.     umask 77
  126.     ;;
  127.  
  128. fd*)
  129.     umask 2 ; unit=`expr $i : '..\(.*\)'`
  130.     name=fd; blk=1; chr=41;
  131.     case $unit in
  132.     0|1|2|3|4|5|6|7)
  133.         mknod ${name}${unit}a    b $blk `expr $unit '*' 8 + 0`
  134.         mknod r${name}${unit}a    c $chr `expr $unit '*' 8 + 0`
  135.         mknod r${name}${unit}b    c $chr `expr $unit '*' 8 + 1`
  136.         chgrp operator ${name}${unit}[a-b] r${name}${unit}[a-b]
  137.         chmod 660 ${name}${unit}[a-b] r${name}${unit}[a-b]
  138.         ;;
  139.     *)
  140.         echo bad unit for disk in: $i
  141.         ;;
  142.     esac
  143.     umask 77
  144.     ;;
  145.     
  146. oc)
  147.     mknod odc0    c 9 255        ; chmod 644 odc0
  148.     ;;
  149.  
  150. fc)
  151.     mknod fdc0    c 41 64        ; chmod 644 fdc0
  152.     ;;
  153.  
  154. sc)
  155.     mknod sdc0    c 14 128    ; chmod 644 sdc0
  156.     ;;
  157.  
  158. vol)
  159.     mknod vol0    c 42 0        ; chmod 644 vol0
  160.     ;;
  161.  
  162.  
  163. sg*)
  164.     umask 2 ; unit=`expr $i : '..\(.*\)'`
  165.     case $i in
  166.     sg*) chr=33;;
  167.     esac
  168.     case $unit in
  169.     0|1|2|3)
  170.         mknod $i    c $chr $unit
  171.         chgrp operator $i
  172.         chmod 666 $i 
  173.         ;;
  174.     *)
  175.         echo bad unit for device in: $i
  176.         ;;
  177.     esac
  178.     umask 77
  179.     ;;
  180.  
  181. st*)
  182.     umask 2 ; unit=`expr $i : '..\(.*\)'`
  183.     case $i in
  184.     st*) chr=34;;
  185.     esac
  186.     case $unit in
  187.     0|1)
  188.         one=`expr $unit '*' 8 + 1`
  189.         two=`expr $unit '*' 8 + 2`
  190.         three=`expr $unit '*' 8 + 3`
  191.         mknod rst$unit    c $chr `expr $unit '*' 8`
  192.         mknod nrst$unit    c $chr $one
  193.         mknod rxt$unit    c $chr $two
  194.         mknod nrxt$unit    c $chr $three
  195.         chgrp operator rst$unit
  196.         chgrp operator nrst$unit
  197.         chgrp operator rxt$unit
  198.         chgrp operator nrxt$unit
  199.         chmod 666 rst$unit 
  200.         chmod 666 nrst$unit 
  201.         chmod 666 rxt$unit 
  202.         chmod 666 nrxt$unit 
  203.         ;;
  204.     *)
  205.         echo bad unit for device in: $i
  206.         ;;
  207.     esac
  208.     umask 77
  209.     ;;
  210.  
  211. pty*)
  212.     class=`expr $i : 'pty\(.*\)'`
  213.     case $class in
  214.     0) offset=0 name=p;;
  215.     1) offset=16 name=q;;
  216.     2) offset=32 name=r;;
  217.     3) offset=48 name=s;;
  218.     4) offset=64 name=t;;
  219.     5) offset=80 name=u;;
  220.     *) echo bad unit for pty in: $i;;
  221.     esac
  222.     case $class in
  223.     0|1|2|3|4|5)
  224.         umask 0
  225.         eval `echo $offset $name | awk ' { b=$1; n=$2 } END {
  226.             for (i = 0; i < 16; i++)
  227.                 printf("mknod tty%s%x c 4 %d; \
  228.                     mknod pty%s%x c 5 %d; ", \
  229.                     n, i, b+i, n, i, b+i); }'`
  230.         umask 77
  231.         ;;
  232.     esac
  233.     ;;
  234.  
  235. vid*)
  236.     name=vid; chr=13;
  237.     unit=`expr $i : 'vid\(.*\)'`
  238.     case $unit in
  239.  
  240.     0|1|2|3|4|5|6|7)
  241.         umask 0
  242.         mknod ${name}${unit} c ${chr} ${unit}
  243.         chmod 600 vid${unit}
  244.         umask 77
  245.         ;;
  246.     *)
  247.         echo bad unit for ${name} in: $i
  248.         ;;
  249.     esac
  250.     ;;
  251.  
  252. ev*|evs*|np*|nps*Fi*|ipl*)
  253.     case $i in
  254.     nps*)
  255.         name=nps; chr=39;
  256.         unit=`expr $i : 'nps\(.*\)'`
  257.         ;;
  258.     np*)
  259.         name=np; chr=8;
  260.         unit=`expr $i : 'np\(.*\)'`
  261.         ;;
  262.     ev?)
  263.         name=ev; chr=10;
  264.         unit=`expr $i : 'ev\(.*\)'`
  265.         ;;
  266.     evs?)
  267.         name=evs; chr=40;
  268.         unit=`expr $i : 'evs\(.*\)'`
  269.         ;;
  270.     ipl*)
  271.         name=ipl; chr=35;
  272.         unit=`expr $i : 'ipl\(.*\)'`
  273.         ;;
  274.     esac
  275.     case $unit in
  276.  
  277.     0|1|2|3|4|5|6|7)
  278.         umask 0
  279.         mknod ${name}${unit} c ${chr} ${unit}
  280.         umask 77
  281.         ;;
  282.     *)
  283.         echo bad unit for ${name} in: $i
  284.         ;;
  285.     esac
  286.     ;;
  287.  
  288. tty?)
  289.     case $i in
  290.     tty?)
  291.         name=tty; chr=11;
  292.         unit=`expr $i : 'tty\(.*\)'`
  293.         ;;
  294.     esac
  295.     case $unit in
  296.     a|b)
  297.         numunit=`echo $unit | tr ab 01`
  298.         umask 0
  299.         mknod ${name}${unit} c ${chr} ${numunit}
  300.         umask 77
  301.         ;;
  302.     *)
  303.         echo bad unit for ${name} in: $i
  304.         ;;
  305.     esac
  306.     ;;
  307.  
  308. local)
  309.     sh /private/dev/MAKEDEV.local
  310.     ;;
  311. esac
  312. done
  313.