home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 15 / 15.iso / s / s053 / 5.ddi / sbin / ldsysdump < prev    next >
Encoding:
Text File  |  1990-12-08  |  3.0 KB  |  144 lines

  1. #!/sbin/sh
  2. #    Copyright (c) 1990 UNIX System Laboratories, Inc.
  3. #    Copyright (c) 1984, 1986, 1987, 1988, 1989, 1990 AT&T
  4. #      All Rights Reserved
  5.  
  6. #    THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF
  7. #    UNIX System Laboratories, Inc.
  8. #    The copyright notice above does not evidence any
  9. #    actual or intended publication of such source code.
  10.  
  11.  
  12. #ident    "@(#)/sbin/ldsysdump.sl 1.1 4.0 12/08/90 36212 AT&T-USL"
  13. # load a system memory image dump from tape or floppy to a file
  14.  
  15. # shell variables used:
  16. #
  17. #       DEV     "f" = floppy; "t" = tape
  18. #
  19. #       IF      input device file used by dd
  20. #       BS      block size used by dd, in 512 byte units
  21. #       COUNT   number of blocks per disk/tape
  22. #
  23. #       NB      number of BS size blocks on tape/disk
  24. #       N       number of BS size blocks of memory to copy
  25.  
  26.  
  27. if [ $# -ne 1 ]
  28. then
  29.     echo 'usage: /etc/ldsysdump file'
  30.     exit
  31. fi
  32.  
  33. while :
  34. do
  35.     echo '\nIs the dump on:'
  36.     echo '  1 - low density 5.25" (360K) diskettes'
  37.     echo '  2 - high density 5.25" (1.2M) diskettes'
  38.     echo '  3 - low density 3.5" (720K) diskettes'
  39.     echo '  4 - high density 3.5" (1.44M) diskettes'
  40.     if [ -r /dev/rmt/c0s0 ]
  41.     then
  42.         echo '  t - Cartridge tape'
  43.     fi
  44.     if [ -r /dev/scsi/qtape1 ]
  45.     then
  46.         echo '  s - SCSI cartridge tape'
  47.     fi
  48.     echo '  n - no, QUIT'
  49.     echo '> \c'
  50.     read ans
  51.     case $ans in
  52.       1 )   BS=18 NB=40     DEV=f ; break ;;
  53.       2 )   BS=30 NB=80     DEV=f ; break ;;
  54.       3 )   BS=18 NB=80     DEV=f ; break ;;
  55.       4 )   BS=36 NB=80     DEV=f ; break ;;
  56.       t )   IF=/dev/rmt/c0s0     BS=32 NB=10000  DEV=t ;
  57.         if [ -r $IF ]; then break; fi ;;
  58.       s )   IF=/dev/scsi/qtape1     BS=32 NB=10000  DEV=t ;
  59.         if [ -r $IF ]; then break; fi ;;
  60.       n )   exit ;;
  61.     esac
  62.     echo '???'
  63. done
  64.  
  65. if [ "$DEV" = "f" ]
  66. then
  67. /sbin/flop_num
  68. if [ $? -gt 1 ]
  69. then
  70.     while true
  71.     do
  72.         echo "\nThis system has two floppy drives.\n\
  73. Strike ENTER to load dump from drive 0\n\
  74. or 1 to load dump from drive 1.  \c"
  75.         read ans
  76.         if [ "$ans" = 1 ]
  77.         then
  78.             IF=/dev/rdsk/f1t
  79.             break
  80.         elif [ "$ans" = "" -o "$ans" = 0 ]
  81.         then
  82.             IF=/dev/rdsk/f0t
  83.             break
  84.         fi
  85.     done
  86. else
  87.     IF=/dev/rdsk/f0t
  88. fi
  89. fi
  90.  
  91. # while :
  92. # do
  93. #    echo 'How many megabytes of memory image do you want to load?'
  94. #    echo 'Enter decimal integer or "q" to quit. > \c'
  95. #    read ans
  96. #    case $ans in
  97. #      q )   exit ;;
  98. #    esac
  99. #    N=`expr \( $ans \* 2048 + $BS - 1 \) / $BS`
  100. #    case $? in
  101. #      0 )   break;;
  102. #    esac
  103. #    echo '???'
  104. # done
  105.  
  106. SKIP=0
  107. COUNT=$NB
  108. N=-1
  109. OLIM=`ulimit`
  110.  
  111. {   while [ $N != 0 ]
  112.     do
  113.     echo 'Insert \c' >&2
  114.     case $DEV in
  115.       f )   echo 'diskette \c' >&2 ;;
  116.       t )   echo 'tape cartridge \c' >&2 ;;
  117.     esac
  118.     echo 'and press return to load it, or enter q to quit. > \c' >&2
  119.     read ans
  120.     case $ans in
  121.       q )   exit ;;
  122.     esac
  123.     echo 'Wait.' >&2
  124.     if [ $N = -1 ]
  125.     then
  126.         N=`/etc/memsize $IF`
  127.         N=`expr \( \( $N + 511 \) / 512 + $BS - 1 \) / $BS`
  128.         ulimit `expr $N \* $BS`
  129.     fi
  130.     if [ $COUNT -gt $N ]
  131.     then
  132.         COUNT=$N
  133.     fi
  134.     echo dd if=$IF bs=${BS}b count=$COUNT >&2
  135.     dd if=$IF bs=${BS}b count=$COUNT
  136.     N=`expr $N - $COUNT`
  137.     SKIP=`expr $SKIP + $COUNT`
  138.     done
  139. } > $1
  140.  
  141. ulimit $OLIM
  142.  
  143. echo "System dump copied into $1.  Use crash(1M) to analyze the dump."
  144.