home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 May / PCW596.iso / wtest / clico / sunsoft / pcnfs51 / sunos.41x / addslip.csh < prev    next >
Linux/UNIX/POSIX Shell Script  |  1994-08-26  |  12KB  |  379 lines

  1. #!/bin/csh
  2. # RE_SID: @(%)/usr/re/builds/pcnfs/unix/serial/SCCS/s.addslip.csh 1.5 93/11/04 16:58:48 SMI
  3. #  @(#)addslip.csh    1.5    11/4/93
  4. echo ""
  5. echo "           -------------- addslip.csh -------------------"
  6. echo  ""
  7. echo "This is the PC-NFS 5.1 SLIP Gateway Installation Script"
  8. echo "for SunOS 4.x running on all Sun systems."
  9. echo ""
  10. echo "This script is quite verbose, and will ask you a number of questions about"
  11. echo "your current configuration and what you want to do. You may find it useful"
  12. echo "to use the script(1) command to create a record of the installation process."
  13. echo ""
  14. echo "All questions will be simple yes/no choices. You should enter y or n exactly"
  15. echo "as shown - Y, yes, etc. will not be recognized. The default reply is shown"
  16. echo "in square brackets."
  17. echo ""
  18. echo -n "Are you ready to proceed (y or n [y]): "
  19. set yorn = $<
  20. if ( $yorn == n ) goto exitscript
  21. echo  ""
  22. echo "Retrieving the current configuration..."
  23. echo ""
  24. set curconf=`strings /vmunix | grep "SunOS Release" | sed -e "s/^.*(//" | sed -e "s/).*//"`
  25. set syspath=/usr/sys
  26. set arch=`arch`
  27. #
  28. # Check for new paths on Sun3 and Sun4 systems.
  29. #
  30. if ( $arch == sun3) then
  31.     if ( -e $syspath/sun3x) then
  32.         set arch=sun3x
  33.     else if (! -e $syspath/sun3) then
  34.         echo "This script installs to $syspath/sun3 or $syspath/sun3x. "
  35.         echo "Neither sub-directory can be located. "
  36.         echo "Refer to the documentation for suggestions. "
  37.         exit (3)
  38.     endif
  39. else if ( $arch == sun4) then
  40.         if ( -e $syspath/sun4c) then
  41.             set arch=sun4c
  42.         else if ( -e $syspath/sun4m) then
  43.             set arch=sun4m
  44.         else if (! -e $syspath/sun4) then
  45.             echo "This script installs to $syspath/sun4, sun4c, or sun4m. "
  46.             echo "Neither sub-directory can be located. "
  47.             echo "Refer to the documentation for suggestions. "
  48.             exit (3)
  49.         endif
  50. endif
  51. set archpath = $syspath/$arch
  52. set confpath = $archpath/conf
  53. set localpath = /files/local/sun386
  54. if( $#argv > 1 ) then
  55.     echo "Usage: addslip.csh [<current-config>]"
  56.     exit (1)
  57. endif
  58.  
  59. if (  -e $syspath/sunif/if_sl.c ) then
  60.     diff sunif/if_sl.c $syspath/sunif/if_sl.c >/dev/null
  61.     echo "You have already installed some or all of a SLIP distribution kit. Do you"
  62.     echo "want to remove this software? If you do this, you should then remove any"
  63.     echo "SLIP kernel configurations and install a non-SLIP kernel if necessary."
  64.     echo "(Please note: You do not need to do this if you simply want to upgrade to"
  65.     echo "new SLIP software.)"
  66.     diff sunif/if_sl.c $syspath/sunif/if_sl.c >/dev/null
  67.     if ($status == 0) echo "(N.b. The existing SLIP software matches that in this distribution.)"
  68.     echo ""
  69.     echo -n "Do you want to remove SLIP (y or n [n]): "
  70.     set yorn = $<
  71.     if ( $yorn == y) then
  72.         echo -n "Are you sure you want to remove SLIP (y or n [n]):"
  73.         set yorn = $<
  74.         if ( $yorn == y) then
  75.             if ( -f $syspath/sun/str_conf.c.PRE-SLIP ) mv $syspath/sun/str_conf.c.PRE-SLIP $syspath/sun/str_conf.c
  76.             if ( -f $confpath/files.PRE-SLIP ) mv $confpath/files.PRE-SLIP $confpath/files
  77.             echo ""
  78.             echo "Pre-SLIP files replaced."
  79.             echo ""
  80.         endif
  81.         echo -n "Do you want to continue with the installation (y or n [n]): "
  82.         set yorn = $<
  83.         if ( $yorn != y ) goto exitscript
  84.     else
  85.         echo ""
  86.         echo "Any existing SLIP sources have been left intact."
  87.         echo ""
  88.     endif
  89. endif
  90. if ( $#argv > 0 ) then
  91.     if( $1 != $curconf ) then
  92.         echo "You have specified that the SLIP configuration should be derived from"
  93.         echo "the configuration file $1"
  94.         echo "However, your system is currently running a Unix kernel which was built"
  95.         echo "from the configuration file $curconf"
  96.         echo ""
  97.         echo -n "Do you want to use $curconf instead of $1 (y or n [n]): "
  98.         set yorn = $<
  99.         if ( "$yorn" != y ) set curconf = $1
  100.         echo ""
  101.         echo "The file $curconf will be used as the basis for this configuration."
  102.         echo ""
  103.     endif
  104. endif
  105. if ( $#argv == 0 ) then
  106.     echo "You did not specify the name of a configuration file from which the SLIP"
  107.     echo "configuration should be derived. Your system is currently running a Unix"
  108.     echo "kernel which was built from the configuration file $curconf"
  109.     echo "This configuration file will be used for this installation."
  110.     echo ""
  111. endif
  112. set newconf=${curconf}-SL
  113. if ( ! -f $confpath/$curconf ) then
  114.     echo "addslip.csh cannot find a configuration file called"
  115.     echo "        $confpath/$curconf"
  116.     echo "Please recheck your input."
  117.     goto abortscript
  118. endif
  119.  
  120. fgrep -s sl8 $confpath/$curconf
  121.  
  122. if ( $status ) then
  123.     set newconf=${curconf}-SL
  124.     if ( -f $confpath/$newconf ) then
  125.         echo "The script normally creates a new kernel configuration file by appending"
  126.         echo "the string  -SL to the original name. However a file called $newconf"
  127.         echo -n "already exists. Should I replace this file (y) or use it (n)? [n]: "
  128.         set yorn = $<
  129.         if ( "$yorn" == y ) rm     $confpath/$newconf
  130.          echo ""
  131.     endif
  132. else
  133.     echo "The configuration file $curconf already includes SLIP configuration"
  134.     echo "information. A new configuration file will not be built."
  135.     echo ""
  136.     set newconf=$curconf
  137. endif
  138.  
  139. echo "Current configuration checks complete."
  140. echo ""
  141. echo "Before you can build a SLIP kernel, you must copy the SLIP sources into the"
  142. echo "correct directories. Specifically, new copies of the following files must be"
  143. echo "installed:"
  144. echo "    $syspath/sunif/if_sl.c"
  145. echo ""
  146. echo "Backup copies of all files will be made. If you have already installed SLIP"
  147. echo "you can skip this step. If you are upgrading to a new release of the SLIP"
  148. echo "software, this step will replace the necessary files but will still allow"
  149. echo "you to back out SLIP completely at a later time."
  150. echo ""
  151. echo -n "Do you want to copy the SLIP source files (y or n [y]): "
  152. set yorn = $<
  153. echo ""
  154. if ( "$yorn" != n ) then
  155.     echo "Backing up old source files..."
  156.     if ( ! -e $syspath/sun/str_conf.c.PRE-SLIP ) cp $syspath/sun/str_conf.c $syspath/sun/str_conf.c.PRE-SLIP
  157.     echo "Copying source files..."
  158.     cp sunif/if_sl.c $syspath/sunif/if_sl.c
  159.     echo ""
  160. endif
  161.  
  162. echo "There are four utility programs used by SLIP. They are:"
  163. echo "    sunslip    (handles dial-up SLIP connections)"
  164. echo "    slattach    (handles hard-wired slip connections)"
  165. echo "    mkslipuser    (sets up the dialup user database)"
  166. echo "    dslipuser    (displays dial-up SLIP status)"
  167.  
  168. #### on sun386i ####
  169. if ("$arch" == sun386) then
  170.  echo "These are normally installed in /files/local/sun386/etc, with symbolic"
  171.  echo "links to them in /etc."
  172.  echo ""
  173.  echo -n "Do you want to compile and install the SLIP utilities (y or n [y]): "
  174.  set yorn = $<
  175.  echo ""
  176.  if ( "$yorn" == n ) goto skip
  177.  
  178.  if(! -w $localpath) goto promptuser
  179.  if(! -e $localpath/etc) mkdir $localpath/etc
  180.  if(! -w $localpath/etc) goto promptuser
  181.  set lpath=$localpath/etc
  182.  goto continue
  183.  
  184. promptuser:
  185.     echo "Cannot load files into $localpath/etc"
  186.     echo "Please enter a local directory where you would like"
  187.     echo "the SLIP utilities installed: "
  188.     echo ""
  189.     set lpath = $<
  190.  
  191. #### on other machines ####
  192. else
  193.  echo "These are normally installed in /etc; if you choose to move them to a"
  194.  echo "different location, you should make sure that there are symbolic links"
  195.  echo "to them in /etc."
  196.  echo ""
  197.  echo -n "Do you want to compile and install the SLIP utilities (y or n [y]): "
  198.  set yorn = $<
  199.  echo ""
  200.  if ( "$yorn" != y ) goto skip
  201.  
  202.  if(! -w /etc) then
  203.     echo "Cannot load files into /etc"
  204.            echo "Please enter a local directory where you would like"
  205.            echo "the SLIP utilities installed: " 
  206.            echo ""  
  207.            set lpath = $<
  208.  else
  209.            set lpath=/etc
  210.  endif
  211. endif
  212. continue:
  213.         pushd usr
  214.         echo "Changing current directory to $cwd"
  215.         echo "Removing any old copies of the utilities..."
  216.     if ("$lpath" != /etc) then
  217.             make -i uninstall386 DESTDIR=$lpath
  218.                echo "Installing utilities..."
  219.             make install386 DESTDIR=$lpath
  220.     else
  221.         make -i uninstall DESTDIR=$lpath
  222.         echo "Installing utilities..."
  223.         make install DESTDIR=$lpath
  224.     endif
  225.         
  226.         popd
  227.         echo "Changing current directory back to $cwd"
  228.         echo ""
  229.  
  230. skip:
  231.  
  232. fgrep -s if_sl $confpath/files >/dev/null
  233.  
  234. if ($status ) then
  235.     echo "The file"
  236.     echo "    $confpath/files"
  237.     echo "contains a list of the source files to be used in configuring a new kernel."
  238.     echo "This file must be edited to include an entry for the SLIP driver if_sl.c."
  239.     echo "A backup copy will be made before it is edited. Note that if you do not"
  240.     echo "edit this file, further SLIP installation is impossible."
  241.     echo ""
  242.     echo -n "Edit $confpath/files (y or n [y]): "
  243.     set yorn = $<
  244.     if ( "$yorn" == n ) goto abortscript
  245.     echo ""
  246.     echo "Backing up current file..."
  247.     if ( ! -e $confpath/files.PRE-SLIP ) cp $confpath/files $confpath/files.PRE-SLIP
  248.     echo "Editing..."
  249.     chmod +w $confpath/files
  250.     ed  - $confpath/files  <<EOFSTRING
  251. /if_subr.c/i
  252. sunif/if_sl.c        optional sl INET device-driver
  253. .
  254. w
  255. q
  256. EOFSTRING
  257.     chmod -w $confpath/files
  258.     echo "Edit complete."
  259.     echo ""
  260. endif
  261.  
  262. fgrep -s sl_info $syspath/sun/str_conf.c >/dev/null
  263.  
  264. if ($status ) then
  265.     echo "The file"
  266.     echo "    $syspath/sun/str_conf.c"
  267.     echo "contains definitions of the STREAMS modules to be included in the kernel."
  268.     echo "This file must be edited to include an entry for the SLIP driver if_sl.c."
  269.     echo "A backup copy will be made before it is edited. Note that if you do not"
  270.     echo "edit this file, further SLIP installation is impossible."
  271.     echo ""
  272.     echo -n "Edit $syspath/sun/str_conf.c (y or n [y]): "
  273.     set yorn = $<
  274.     if ( "$yorn" == n ) goto abortscript
  275.     echo ""
  276.     echo "Backing up current file..."
  277.     if ( ! -e $syspath/sun/str_conf.c.PRE-SLIP ) cp $syspath/sun/str_conf.c $syspath/sun/str_conf.c.PRE-SLIP
  278.     echo "Editing..."
  279.     chmod +w $syspath/sun/str_conf.c
  280.     ed  - $syspath/sun/str_conf.c  <<EOFSTRING
  281. /kb\.h/i
  282. #include "sl.h"
  283. .
  284. /pf_info/+1a
  285. #if    NSL > 0
  286. extern struct streamtab    sl_info;
  287. #endif
  288. .
  289. /pf_info/+1a
  290. #if    NSL > 0
  291.     { "sl",    &sl_info },
  292. #endif
  293. .
  294. w
  295. q
  296. EOFSTRING
  297.     chmod -w $syspath/sun/str_conf.c
  298.     echo "Edit complete."
  299.     echo ""
  300. endif
  301.  
  302. if ( ! -e $confpath/$newconf ) then
  303.     echo "The configuration file"
  304.     echo "    $confpath/$newconf"
  305.     echo -n "does not exist. Create it (y or n [y]): "
  306.     set yorn = $<
  307.     if ( $yorn == n ) goto abortscript
  308.     cp $confpath/$curconf $confpath/$newconf 
  309.     echo ""
  310. endif
  311.  
  312. # There are now three possibilities: no SLIP config info;
  313. # obsolete info, or good info
  314.  
  315. egrep -s '^pseudo-device.*sl.*init.*slattach' $confpath/$newconf
  316.  
  317. if ( $status ) then
  318.     echo "The configuration file"
  319.     echo "    $confpath/$newconf"
  320.  
  321.     echo "does not contain an entry for the SLIP pseudo-device (or, possibly, contains"
  322.     echo "an entry which is not in the correct format). The file must be edited to"
  323.     echo "add this information."
  324.     echo -n "Edit $confpath/$newconf (y or n [y]): "
  325.     set yorn = $<
  326.     if ( $yorn == n ) goto abortscript
  327.     echo ""
  328.     echo "Editing..."
  329.     chmod +w $confpath/$newconf
  330.     ed - $confpath/$newconf << EOFSTRING >/dev/null
  331. /pseudo-device.*sl/d
  332. w
  333. q
  334. EOFSTRING
  335.     ed - $confpath/$newconf << EOFSTRING >/dev/null
  336. /pseudo-device.*loop/a
  337. pseudo-device   sl8    init    slattach
  338. .
  339. w
  340. q
  341. EOFSTRING
  342.     echo "Edit complete."
  343. endif
  344. echo ""
  345.  
  346. echo "The next step is to run the config utility. This will take the file"
  347. echo "    $confpath/$newconf"
  348. echo "and create a directory"
  349. echo "    $archpath/$newconf"
  350. echo "The new kernel will then be built by executing a 'make' in this directory."
  351. echo ""
  352. echo -n "Ready to configure and build the new Unix kernel (y or n [y]): "
  353. set yorn = $<
  354. if ( "$yorn" == n ) goto abortscript
  355. echo ""
  356. echo "Changing current directory to $confpath"
  357. pushd $confpath
  358. echo "Configuring kernel..."
  359. config $newconf
  360. cd ../$newconf
  361. echo "Changing current directory to $cwd"
  362. echo "Making new kernel..."
  363. make
  364. echo "Kernel build complete."
  365. echo "Save your exisitng kernel and"
  366. echo "Reboot your machine using the newly built kernel."
  367. popd
  368. echo "Changing current directory back to $cwd"
  369.  
  370. exitscript:
  371. echo ""
  372. echo "        ---------------- addslip.csh DONE -----------------"
  373. exit(0)
  374.  
  375. abortscript:
  376. echo ""
  377. echo "       ---------------- addslip.csh FAILED -----------------"
  378. exit(1)
  379.