home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / nwsrvr / install / postinstall < prev    next >
Text File  |  1998-08-19  |  11KB  |  494 lines

  1. # @(#)postinstall    1.7
  2. # nws postinstall script
  3. #
  4. # Revision History:
  5. #
  6. # L000    20th Oct 1997    tonylo
  7. #    The script now invokes /usr/lib/scoadmin/account/make-owner to
  8. #    make current system owners have privileges to run NetWare server
  9. #    applications
  10. #
  11. #
  12. trap "" 2
  13.  
  14. if [ "$RANDOM" = "$RANDOM" ]
  15. then
  16.     exec /usr/bin/winxksh $0 $*
  17. fi
  18.  
  19. # Redirect stderr to a file
  20. ERR="/tmp/nwsrvr.post.err"
  21. exec 2>$ERR
  22.  
  23. IDTUNE="/etc/conf/bin/idtune"
  24. IDBUILD="/etc/conf/bin/idbuild"
  25. YES="/usr/bin/yes"
  26. NWCM="/usr/sbin/nwcm"
  27. ADMINROLE="/usr/bin/adminrole"
  28. ADMINUSER="/usr/bin/adminuser"
  29. SCOADMIN=/usr/bin/scoadmin
  30. AWK="/usr/bin/awk"
  31. GREP="/usr/bin/grep"
  32.  
  33.  
  34. function ConfigureProtocolStack
  35. {
  36. [ -n "$DEBUG" ] && set -x
  37.  
  38.     CURRENT=`pwd`
  39.  
  40.     #
  41.     #    Configure Drivers
  42.     #
  43.     CWD=/tmp/nwsps        # this directory created when installing through prototype file
  44.     for i in ncpipx nwetc nemux sfd
  45.     do
  46.         cd ${CWD}/${i}
  47.         echo "/etc/conf/bin/idinstall -P ${PKGINST} -uk ${i}" >> ${ERR} 2>&1
  48.         /etc/conf/bin/idinstall -P ${PKGINST} -uk ${i} >> ${ERR} 2>&1
  49.         if [ $? -ne 0 ]
  50.         then
  51.             echo "/etc/conf/bin/idinstall -P ${PKGINST} -ak ${i}" >> ${ERR} 2>&1
  52.             /etc/conf/bin/idinstall -P ${PKGINST} -ak ${i} >> ${ERR} 2>&1
  53.             if [ $? -ne 0 ]
  54.             then
  55.                 wclose $PC_INFO_WIN
  56.                 print -u2 "$CONFIGURE_KERNEL_SILENT_ERROR"
  57.                 if [ "$SMART_START" = "TRUE" ]
  58.                 then
  59.                     display "$CONFIGURE_KERNEL_SILENT_ERROR" \
  60.                         -fg ${WHITE} -bg ${RED}
  61.                     sleep 3
  62.                 else
  63.                     display -w "$CONFIGURE_KERNEL_ERROR" \
  64.                         -fg ${WHITE} -bg ${RED} \
  65.                         -current "footer $ENTER_TO_CONT_MSG"
  66.                     input_handler
  67.                 fi
  68.                 GoodBye 2
  69.             fi
  70.         fi
  71.         cd ${CWD}
  72.     done
  73.  
  74.     #
  75.     #    Rebuild Kernel
  76.     #
  77.     echo "/etc/conf/bin/idbuild -M ncpipx -M nwetc -M nemux -M sfd" >> ${ERR} 2>&1
  78.     /etc/conf/bin/idbuild -M ncpipx -M nwetc -M nemux -M sfd>> ${ERR} 2>&1
  79.     if [ $? -ne 0 ]
  80.     then
  81.         wclose $PC_INFO_WIN
  82.         print -u2 "$CONFIGURE_KERNEL_SILENT_ERROR"
  83.         if [ "$SMART_START" = "TRUE" ]
  84.         then
  85.             echo "$CONFIGURE_KERNEL_SILENT_ERROR"
  86.             sleep 3
  87.         else
  88.             display -w "$CONFIGURE_KERNEL_ERROR" \
  89.                 -fg ${WHITE} -bg ${RED} \
  90.                 -current "footer $ENTER_TO_CONT_MSG"
  91.             input_handler
  92.         fi
  93.         GoodBye 2
  94.     fi
  95.  
  96.     # Now clean up
  97.     #
  98.     # Remove tmp files from package installation database.
  99.     #
  100.     cd ${CWD}
  101.     find `pwd` -depth -print >/tmp/$$a
  102.     removef $PKGINST `cat /tmp/$$a` >/dev/null 2>&1
  103.     rm -f /tmp/$$a
  104.  
  105.     cd /
  106.     rm -fr ${CWD}
  107.     removef -f ${PKGINST}
  108.  
  109.     cd $CURRENT
  110.  
  111.     return 0
  112. }
  113.  
  114. function ConfigureNetware
  115. {
  116. [ -n "$DEBUG" ] && set -x
  117.  
  118.     #
  119.     # Configure tunable netware parameters
  120.     #
  121.     $NWCM -q -s server_name="$SERVER_NAME"
  122.     # set shm_size only if smaller than what is needed to run the server
  123.     TMP=`$NWCM -v shm_size`
  124.     if [ "$TMP" -lt $SHM_SIZE ]
  125.     then
  126.         $NWCM -q -s shm_size="$SHM_SIZE"
  127.     fi
  128.     # set max_connections only if smaller than what is needed to run the server
  129.     TMP=`$NWCM -v max_connections`
  130.     if [ "$TMP" -lt $MAX_CONNECTIONS ]
  131.     then
  132.         $NWCM -q -s max_connections="$MAX_CONNECTIONS"
  133.     fi
  134.     if [ "$SMART_START" = "TRUE" ]
  135.     then
  136.         $NWCM -q -s ipx_internal_network="$SS_IPX_INTERNAL_NETWORK" >> $ERR 2>&1
  137.     else
  138.         $NWCM -q -s ipx_internal_network="$IPX_INTERNAL_NETWORK" >> $ERR 2>&1
  139.     fi
  140.  
  141.     if [ "$NWS_START_AT_BOOT" = "$START_AT_BOOT_1" ]
  142.     then
  143.         # set to on
  144.         $NWCM -q -s nws_start_at_boot="on" >> $ERR 2>&1
  145.     else
  146.         $NWCM -q -s nws_start_at_boot="off" >> $ERR 2>&1
  147.     fi
  148.  
  149.     #
  150.     # Add Trusted Facilities Manament database entries for NetWare
  151.     # and related binaries.
  152.     #
  153.     TFMSetup
  154.  
  155.     #
  156.     #
  157.     #FNAME=/etc/netware/voltab
  158.     #touch $FNAME
  159.     #chmod 600 $FNAME
  160.     #chown nwuser $FNAME
  161.     #chgrp nwgroup $FNAME
  162.     #installf $PKGINST $FNAME v 0600 nwroot nwgroup
  163.  
  164.     FNAME=$SYSVOL/system/dsrepair.log
  165.     touch $FNAME
  166.     chmod 664 $FNAME
  167.     chown nwuser $FNAME
  168.     chgrp nwgroup $FNAME
  169.     installf $PKGINST $FNAME v 664 nwroot nwgroup
  170.  
  171.     FNAME=$SYSVOL/system/spool.sys
  172.     touch $FNAME
  173.     chmod 664 $FNAME
  174.     chown nwuser $FNAME
  175.     chgrp nwgroup $FNAME
  176.     installf $PKGINST $FNAME v 664 nwroot nwgroup
  177.  
  178.     FNAME=$SYSVOL/system/sys\$log.err
  179.     touch $FNAME
  180.     chmod 664 $FNAME
  181.     chown nwuser $FNAME
  182.     chgrp nwgroup $FNAME
  183.     installf $PKGINST $FNAME v 664 nwroot nwgroup
  184.  
  185.  
  186.     # Create License  directory
  187.     /usr/bin/mkdir -p /etc/netware/licenses > /dev/null 2>&1
  188.  
  189.     ## Change init state to 3
  190.     /usr/bin/ed -s /etc/inittab <<- EOF > /dev/null  2>&1
  191.         /initdefault/
  192.         s/2/3
  193.         w
  194.         q
  195.     EOF
  196.  
  197.     /usr/bin/ed -s /etc/conf/init.d/kernel <<- EOF > /dev/null 2>&1
  198.         /initdefault/
  199.         s/2/3
  200.         w
  201.         q
  202.     EOF
  203.     
  204.     return 0
  205. }
  206.  
  207. function TFMSetup
  208. {
  209. [ -n "$DEBUG" ] && set -x
  210.  
  211.     #
  212.     # Give root user privileges to run all nws commands (GUI and non-GUI).
  213.     #
  214.     $ADMINUSER root | $GREP dsinstall > /dev/null 2>&1
  215.     if (( $? != 0 ))
  216.     then
  217.         # root does not have privs.
  218.         $ADMINUSER -a dsinstall:/usr/sbin/dsinstall:allprivs,dsrepair:/usr/sbin/dsrepair:allprivs,dsadmin:/usr/sbin/dsadmin:allprivs,nwserver:/usr/sbin/nwserver:allprivs,ndsbackup:/usr/sbin/ndsbackup:allprivs,ndsrestore:/usr/sbin/ndsrestore:allprivs,tsadmin:/usr/sbin/tsadmin:allprivs,nwshut:/usr/sbin/nwshut:allprivs,nwvm:/usr/sbin/nwvm:allprivs,nwcm:/usr/sbin/nwcm:allprivs,pserver:/usr/sbin/pserver:allprivs,stopprint:/usr/sbin/stopprint:allprivs,nwserverstatus:/usr/sbin/nwserverstatus:allprivs,NWS_Status:/usr/X/bin/NWS_Status:allprivs,NWVolume_Setup:/usr/X/bin/NWVolume_Setup:allprivs,NWS_Licensing:/usr/X/bin/NWS_Licensing:allprivs root
  219.     fi
  220.  
  221. # L000 vvv
  222.     #
  223.     # If we're running from install on boot, no need to setup owner since
  224.     # the postreboot.sh will take care of it.  if, however, this is an
  225.     # after-the-fact pkgadd, the owner has to be setup here.
  226.     #
  227.     [ -f /etc/inst/scripts/postreboot.sh ] || {
  228.     set `grep mail= /var/sadm/install/admin/* | cut -f2 -d=`
  229.     while [ $# -ne 0 ]
  230.     do
  231.         [ "$1" != "root" ] && /usr/lib/scoadmin/account/make-owner $1 2>/dev/null
  232.         shift
  233.     done
  234.     }
  235. # L000 ^^^
  236.  
  237.     #
  238.     # Give nwprint user privileges to run pserver and stopprint
  239.     #
  240.     $ADMINUSER nwprint | $GREP pserver > /dev/null 2>&1
  241.     if (( $? != 0 ))
  242.     then
  243.         # root does not have privs.
  244.         $ADMINUSER -a pserver:/usr/sbin/pserver:allprivs,stopprint:/usr/sbin/stopprint:allprivs nwprint
  245.     fi
  246.  
  247.     return 0
  248. }
  249.  
  250. function TuneKernel
  251. {
  252. [ -n "$DEBUG" ] && set -x
  253.  
  254.     #
  255.     # Only tune the parameter if it is currently
  256.     # less than what we need.
  257.     #
  258.  
  259.     # Set SHMMAX to 8mb min. This is good for 50 users
  260.     # 50-75 users set 10mb
  261.     # 75-100 users set 12mb
  262.     #   .. add 2mb for each 25 users.
  263.     
  264.     TUNABLE=SHMMAX
  265.     let KERNEL_SHM_SIZE=$SHM_SIZE*2
  266.     TMP=`$IDTUNE -g $TUNABLE`
  267.     TMP=`echo $TMP | $AWK '{print $1}'`
  268.     if [ $TMP -lt $KERNEL_SHM_SIZE ]
  269.     then
  270.         $YES|$IDTUNE -m $TUNABLE $KERNEL_SHM_SIZE
  271.         REBOOT_SYSTEM=1
  272.     fi
  273.  
  274.     # tune semaphores
  275.     TUNABLE=SEMMSL
  276.     VALUE=150
  277.     TMP=`$IDTUNE -g $TUNABLE`
  278.     TMP=`echo $TMP | $AWK '{print $1}'`
  279.     if [ "$TMP" -lt $VALUE ]
  280.     then
  281.         $YES|$IDTUNE -m $TUNABLE $VALUE
  282.         REBOOT_SYSTEM=1
  283.     fi
  284.  
  285.     return 0
  286. }
  287.  
  288. function FlagRebuildKernel
  289. {
  290. [ -n "$DEBUG" ] && set -x
  291.  
  292.     /usr/bin/rm -f /tmp/nws.done > /dev/null 2>&1
  293.  
  294.     if [ $REBOOT_SYSTEM = "1" ]
  295.     then
  296.         $IDBUILD > /dev/null 2>&1
  297.         echo 1 > /tmp/nws.done
  298.     else
  299.         echo 0 > /tmp/nws.done
  300.     fi
  301.  
  302.     return 0
  303. }
  304.  
  305. function ConfigurePserverCFG
  306. {
  307. [ -n "$DEBUG" ] && set -x
  308.  
  309.     if [ "$OVERLAY" = "NO" ]
  310.     then
  311.         FNAME=/var/netware/pserver/pserver.cfg
  312.         cp -f /tmp/pserver.cfg $FNAME
  313.         chmod 600 $FNAME
  314.         chown nwuser $FNAME
  315.         chgrp nwgroup $FNAME
  316.         installf $PKGINST $FNAME v 0600 nwroot nwgroup
  317.     fi
  318.  
  319.     removef $PKGINST /tmp/pserver.cfg 2>&1 > /dev/null
  320.     removef -f ${PKGINST}
  321.     rm -f /tmp/pserver.cfg 2>&1 > /dev/null
  322. }
  323.  
  324. #
  325. # If package netmgt is installed then turn on netmgt.
  326. #
  327. function ConfigureNetMgt
  328. {
  329. [ -n "$DEBUG" ] && set -x
  330.  
  331. /usr/bin/pkginfo -i netmgt > /dev/null 2>&1
  332. if [ "$?" = "0" ]
  333. then
  334.     /usr/sbin/nwcm -q -s nwum="on"
  335. fi
  336.  
  337. }
  338.  
  339. function SetupServerLanguage
  340. {
  341.     nwcm -q -s country_code=$COUNTRY_CODE
  342.     nwcm -q -s code_page=$CODE_PAGE
  343.     nwcm -q -s host_code_set=$HOST_CODE_SET
  344. }
  345.  
  346. function BackupExistingDrivers
  347. {
  348.  
  349. #
  350. # Try to save any existing version of the sfd driver
  351. #
  352.  
  353. #Have we saved it before ?
  354. if [ ! -d ${PKGSAV}/sfd_backup ]; then
  355.     #Is there a previous installation of sfd ?
  356.     if [ -d /etc/conf/pack.d/sfd ]; then
  357.     #Save the old version so we can reinstall it if required
  358.     
  359.     CWD=/etc/conf/pack.d/sfd
  360.     cd ${CWD}
  361.     
  362.     echo "mkdir -p ${PKGSAV}/sfd_backup" >> ${ERR} 2>&1
  363.     mkdir -p ${PKGSAV}/sfd_backup >> ${ERR} 2>&1
  364.     if [ $? -ne 0 ]
  365.     then
  366.         message -d `pfmt -s nostd -g ${PKGMSG}:5 "The installation cannot be completed due to an error \nin the driver installation.  The file %s contains the errors." ${ERR} 2>&1`
  367.         exit 2
  368.     fi
  369.     
  370.     #Backup Driver*.o
  371.     echo "mv Driver*.o ${PKGSAV}/sfd_backup" >> ${ERR} 2>&1
  372.     mv Driver*.o ${PKGSAV}/sfd_backup >> ${ERR} 2>&1
  373.     
  374.     #Backup space.c if one exists
  375.     if [ -f space.c ]; then
  376.         echo "cp space.c ${PKGSAV}/sfd_backup/Space.c" >> ${ERR} 2>&1
  377.         cp space.c ${PKGSAV}/sfd_backup/Space.c >> ${ERR} 2>&1
  378.     fi
  379.     
  380.     #Backup Node if one exists
  381.     if [ -f ../../node.d/sfd ]; then
  382.         echo "cp ../../node.d/sfd ${PKGSAV}/sfd_backup/Node" >> ${ERR} 2>&1
  383.         cp ../../node.d/sfd ${PKGSAV}/sfd_backup/Node >> ${ERR} 2>&1
  384.     fi
  385.     
  386.     #Backup System if one exists
  387.     if [ -f ../../sdevice.d/sfd ]; then
  388.         echo "cp ../../sdevice.d/sfd ${PKGSAV}/sfd_backup/System" >> ${ERR} 2>&1
  389.         cp ../../sdevice.d/sfd ${PKGSAV}/sfd_backup/System >> ${ERR} 2>&1
  390.     fi
  391.     
  392.     #Backup Master if one exists 
  393.     if [ -f ../../mdevice.d/sfd ]; then
  394.         echo "cp ../../mdevice.d/sfd ${PKGSAV}/sfd_backup/Master" >> ${ERR} 2>&1
  395.         cp ../../mdevice.d/sfd ${PKGSAV}/sfd_backup/Master >> ${ERR} 2>&1
  396.     fi
  397.     
  398.     #Backup Mtune if one exists
  399.     if [ -f ../../mtune.d/sfd ]; then
  400.         echo "cp ../../mtune.d/sfd ${PKGSAV}/sfd_backup/Mtune" >> ${ERR} 2>&1
  401.         cp ../../mtune.d/sfd ${PKGSAV}/sfd_backup/Mtune >> ${ERR} 2>&1
  402.     fi
  403.     
  404.     fi    
  405. fi
  406. }
  407.  
  408. #
  409. # Install SCOadmin stuff
  410. #
  411.  
  412. function AddScoAdmin
  413. {
  414. if [ -x $SCOADMIN ]
  415. then
  416.     $SCOADMIN -p NetWare -f -c /usr/lib/scoadmin/NetWare/NWVolume_Setup.obj
  417.     $SCOADMIN -p NetWare -f -c /usr/lib/scoadmin/NetWare/NWS_Status.obj
  418.     $SCOADMIN -p NetWare -f -c /usr/lib/scoadmin/NetWare/NWS_Licensing.obj
  419.     $SCOADMIN -p NetWare -f -c /usr/lib/scoadmin/NetWare/dsinstall.obj
  420.     $SCOADMIN -p NetWare -f -c /usr/lib/scoadmin/NetWare/dsrepair.obj
  421. fi
  422. }
  423.  
  424. #
  425. # Main()
  426. #
  427. [ -n "$DEBUG" ] && set -x
  428. # load misc functions from -> nws <- set directory since nwsrvr is gone by now.
  429. . /var/sadm/pkg/nwsrvr/install/misc_func
  430.  
  431. SetLocale
  432.  
  433. # Load strings
  434. . ${LANGDEP_SCRIPTS}/set_strings
  435.  
  436. # Initialize winxksh
  437. . /usr/lib/winxksh/winrc
  438. . /usr/lib/winxksh/scr_init
  439.  
  440. #
  441. # For running standalone test
  442. #
  443. if [ "$2" = "test" ]
  444. then
  445.     REQDIR=.
  446. fi
  447.  
  448. REBOOT_SYSTEM=0
  449.  
  450. footer "$GENERIC_WAIT_MSG"
  451. if [ "$SMART_START" = "FALSE" ]
  452. then
  453.     display "$INSTALL_POSTCONFIG_MSG" -fg ${WHITE} -bg ${BLUE}
  454. fi
  455.  
  456. PC_INFO_WIN=${CURWIN}
  457.  
  458. # read in nws response file (get SMART_START and SS_IPX_INTERNAL_NETWORK)
  459. . /tmp/nws.response
  460.  
  461. BackupExistingDrivers
  462. ConfigureProtocolStack
  463. ConfigureNetware
  464. TuneKernel
  465. FlagRebuildKernel
  466. ConfigurePserverCFG    
  467. ConfigureNetMgt
  468. SetupServerLanguage
  469. AddScoAdmin
  470.  
  471. # installf needs to be called only once.
  472. installf -f $PKGINST
  473.  
  474. wclose ${PC_INFO_WIN}
  475.  
  476. if [ "$SMART_START" = "FALSE" ]
  477. then
  478.     # If this is last package to be installed display final install screen
  479.     if [ -f /tmp/$PKGINST ]
  480.     then
  481.         display -w "$INSTALL_WHAT_NEXT_WITH_REBOOT" \
  482.             -fg ${WHITE} -bg ${BLUE} \
  483.             -current "footer $HIT_ANY_KEY_TO_END"
  484.     fi
  485.  
  486.     input_handler
  487.  
  488.     ClearScreen
  489.     call endwin
  490. fi
  491.  
  492.  
  493. exit 0
  494.