home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / base / root.15 / usr / lib / drf / mini_kernel / mini_kernel~
Text File  |  1998-08-19  |  5KB  |  240 lines

  1. #!/usr/bin/ksh
  2.  
  3. # Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  4. #                                                                         
  5. #        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  6. #                   SANTA CRUZ OPERATION INC.                             
  7. #                                                                         
  8. #   The copyright notice above does not evidence any actual or intended   
  9. #   publication of such source code.                                      
  10.  
  11.  
  12. #ident    "@(#)drf:cmd/mini_kernel.sh    1.1"
  13.  
  14. turnoff()
  15. {
  16.     cd $ROOT/$MACH/etc/conf/sdevice.d
  17.     [ -d .save ] || mkdir .save
  18.     mv * .save
  19.     cd $ROOT/$MACH/etc/conf/mdevice.d
  20.     [ -d .save ] || mkdir .save
  21.     mv * .save
  22. }
  23.  
  24. turnon()
  25. {
  26.     FAIL=false
  27.     cd $ROOT/$MACH/etc/conf/sdevice.d/.save
  28.     for i
  29.     do
  30.         [ -f $i ] || {
  31.             print -u2 "$CMD: Fatal error -- cannot find kernel module $i."
  32.             FAIL=true
  33.         }
  34.     done
  35.     $FAIL && exit 1
  36.     mv $* ..
  37.     cd $ROOT/$MACH/etc/conf/sdevice.d
  38.     for i in $(grep -l '[     ]N[     ]' $*)
  39.     do
  40.         # Some System files (like asyc's) have both Y and N entries.
  41.         # Do not edit such files.
  42.         case "$(print $(<$i))" in
  43.         *' Y '*)
  44.             continue
  45.             ;;
  46.         esac
  47.         ed -s $i <<-END
  48.             g/[     ]N[     ]/s//    Y    /
  49.             w
  50.             q
  51.         END
  52.     done
  53.     cd $ROOT/$MACH/etc/conf/mdevice.d/.save
  54.     mv $* ..
  55. }
  56.  
  57. stub()
  58. {
  59.     FAIL=false
  60.     cd $ROOT/$MACH/etc/conf/sdevice.d/.save
  61.     for i
  62.     do
  63.         [ -f $i ] || {
  64.             if [ ! -f $ROOT/$MACH/etc/conf/mdevice.d/.save/$i ]
  65.             then
  66.                 print -u2 "$CMD: Fatal error -- cannot find kernel module $i."
  67.                 FAIL=true
  68.             fi
  69.         }
  70.     done
  71.     $FAIL && exit 1
  72.     mv $* .. 2>/dev/null
  73.     cd $ROOT/$MACH/etc/conf/sdevice.d
  74.     for i in $(grep -l '[     ]Y[     ]' $* 2>/dev/null)
  75.     do
  76.         ed -s $i <<-END
  77.             g/[     ]Y[     ]/s//    N    /
  78.             w
  79.             q
  80.         END
  81.     done
  82.     cd $ROOT/$MACH/etc/conf/mdevice.d/.save
  83.     mv $* .. 2>/dev/null
  84. }
  85.  
  86. make_static()
  87. {
  88.     FAIL=false
  89.     cd $ROOT/$MACH/etc/conf/sdevice.d
  90.     for i
  91.     do
  92.         case "$(print $(<$i))" in
  93.         *'$version 2 $static'*)
  94.             continue
  95.             ;;
  96.         *'$version 2'*)
  97.             ;;
  98.         *)
  99.             print -u2 "$CMD: Fatal error -- kernel module $i is not version 2."
  100.             FAIL=true
  101.             continue
  102.             ;;
  103.         esac
  104.         ed -s $i <<-END
  105.             /\$version/a
  106.             \$static
  107.             .
  108.             w
  109.             q
  110.         END
  111.     done
  112.     $FAIL && exit 1
  113. }
  114.  
  115. tune()
  116. {
  117.     /etc/conf/bin/idtune -f PAGES_UNLOCK 50
  118.     /etc/conf/bin/idtune -f FLCKREC 100
  119.     /etc/conf/bin/idtune -f NPROC 100
  120.     /etc/conf/bin/idtune -f MAXUP 30
  121.     /etc/conf/bin/idtune -f NHBUF 32
  122.     /etc/conf/bin/idtune -f FD_DOOR_SENSE 0
  123.     /etc/conf/bin/idtune -f ARG_MAX 20480 # Need large space for exported env variables
  124.     /etc/conf/bin/idtune -f MEMFS_MAXKMEM 4096000
  125.     /etc/conf/bin/idtune -f BDEV_RESERVE 255
  126.     /etc/conf/bin/idtune -f CDEV_RESERVE 255
  127. }
  128.  
  129. make_space()
  130. {
  131.     cd $ROOT/$MACH/etc/conf/sdevice.d/.save
  132.     if [ "`echo *`" != "*" ]
  133.     then
  134.         for i in *
  135.         do
  136.             rm -rf $ROOT/$MACH/etc/conf/pack.d/$i
  137.             rm -rf $ROOT/$MACH/etc/conf/mod.d/$i
  138.             rm -rf $ROOT/$MACH/etc/conf/mtune.d/$i
  139.             rm -rf $ROOT/$MACH/etc/conf/autotune.d/$i
  140.         done
  141.     fi
  142.     cd ..
  143.     rm -rf .save
  144.     cd $ROOT/$MACH/etc/conf/mdevice.d/.save
  145.     if [ "`echo *`" != "*" ]
  146.     then
  147.         for i in *
  148.         do
  149.             rm -rf $ROOT/$MACH/etc/conf/pack.d/$i
  150.             rm -rf $ROOT/$MACH/etc/conf/mod.d/$i
  151.             rm -rf $ROOT/$MACH/etc/conf/mtune.d/$i
  152.             rm -rf $ROOT/$MACH/etc/conf/autotune.d/$i
  153.         done
  154.     fi
  155.     cd ..
  156.     rm -rf .save
  157.     rm -rf $ROOT/$MACH/etc/conf/cf.d/stune*
  158. }
  159.  
  160. #main()
  161.  
  162. CMD=$0
  163. USAGE="Usage: $0 kdb|nokdb"
  164.  
  165. # December 10, 1996 -hah
  166. # added at_toolkit through psm_time to STATIC_LIST which will allow
  167. # BL6 prep.flop to build the mini_kernel.sh properly
  168.  
  169.  
  170. STATIC_LIST="ansi asyc atup ca ccnv cdfs char cmux confmgr cram dcompat
  171. dma eisa elf fd fdbuf fifofs fpe fs gentty gvid hpci iaf iasy intmap intp io
  172. kd kdvm kernel kma ldterm mca mem memfs mm mod modksym name namefs nullzero
  173. pci proc procfs pstart resmgr rtc sad sc01 sd01 sdi specfs st01 sum svc
  174. sysclass ts udev util ws at_toolkit psm_i8254 psm_i8259 psm_mc146818
  175. psm_time vtoc i2omsg i2otrans"
  176.  
  177. # Add any mods which may not exist on a minimal install, but do on the machine
  178. if [ -f /etc/conf/sdevice.d/mpio ]
  179. then
  180.     STATIC_LIST="$STATIC_LIST mpio"
  181. fi
  182.  
  183. if [ "$LANGS" = "ja" ]
  184. then
  185.     STATIC_LIST="$STATIC_LIST gsd fnt"
  186. fi
  187.  
  188. DYNAMIC_LIST="$MODLIST"
  189.  
  190. STUB_LIST="async audit coff dac event ipc log mac nfs prf pse rand rlogin segdev sysdump tpath xnamfs xque osocket segshm"
  191.  
  192. # Add any stubs which may not exist on a minimal install, but do on the machine
  193. if [ -f /etc/conf/sdevice.d/clariion ]
  194. then
  195.     STUB_LIST="$STUB_LIST clariion"
  196. fi
  197. if [ -f /etc/conf/sdevice.d/merge ]
  198. then
  199.     STUB_LIST="$STUB_LIST merge"
  200. fi
  201.  
  202. case "$1" in
  203. kdb)
  204.     if [ -f /etc/conf/sdevice.d/kdb -a -f /etc/conf/sdevice.d/kdb_util ]
  205.     then
  206.         STATIC_LIST="$STATIC_LIST kdb kdb_util"
  207.         print > $ROOT/$MACH/etc/conf/cf.d/kdb.rc
  208.     else
  209.         STUB_LIST="$STUB_LIST kdb_util"
  210.         rm -f $ROOT/$MACH/etc/conf/cf.d/kdb.rc
  211.     fi
  212.     ;;
  213. nokdb)
  214.     if [ -f /etc/conf/sdevice.d/kdb -a -f /etc/conf/sdevice.d/kdb_util ]
  215.     then
  216.         DYNAMIC_LIST="$DYNAMIC_LIST kdb kdb_util"
  217.         rm -f $ROOT/$MACH/etc/conf/cf.d/kdb.rc
  218.     else
  219.         STUB_LIST="$STUB_LIST kdb_util"
  220.         rm -f $ROOT/$MACH/etc/conf/cf.d/kdb.rc
  221.     fi
  222.     ;;
  223. nics)
  224.     # obsolete; remove after caller goes away
  225.     ;;
  226. *)
  227.     print -u2 $USAGE
  228.     exit 1
  229.     ;;
  230. esac
  231.  
  232. turnoff
  233. turnon $STATIC_LIST $DYNAMIC_LIST
  234. stub $STUB_LIST
  235. make_static $STATIC_LIST
  236. tune
  237. make_space
  238. print $DYNAMIC_LIST
  239. exit 0
  240.