home *** CD-ROM | disk | FTP | other *** search
/ tusportal.tus.k12.pa.us / tusportal.tus.k12.pa.us.tar / tusportal.tus.k12.pa.us / Wyse / latest-image.raw / 0.img / etc / init.d / boot < prev    next >
Text File  |  2010-04-07  |  8KB  |  360 lines

  1. #! /bin/bash
  2. #
  3. # Copyright (c) 1996-2004 SuSE Linux AG, Nuernberg, Germany.
  4. # All rights reserved.
  5. #
  6. # Author: Ruediger Oertel <ro@suse.de>, 1996-2002
  7. #         Werner Fink <werner@suse.de>, 1996-2004
  8. #         Burchard Steinbild, 1996-2000
  9. #         Florian La Roche, 1996
  10. #
  11. # Please send feedback to http://www.suse.de/feedback
  12. #
  13. # /etc/init.d/boot
  14. #
  15. # first script to be executed from init on system startup
  16. #
  17.  
  18. #
  19. # Avoid be interrupted by child or keyboard
  20. trap "echo" SIGINT SIGSEGV SIGQUIT
  21. set +e
  22.  
  23. #
  24. # Start up sreadahead as early as possible, if present.
  25. #
  26. if [ -x /sbin/sreadahead ]; then
  27.     /sbin/sreadahead >/dev/null 2>&1
  28. fi
  29.  
  30. #
  31. # Standard input from the system console
  32. #
  33. test -z "$CONSOLE" && CONSOLE=/dev/console
  34. REDIRECT="$(showconsole 2>/dev/null)"
  35. export CONSOLE REDIRECT
  36.  
  37. #
  38. # Configuration and coloring of the boot messages
  39. #
  40.  
  41. . /etc/rc.status
  42. . /etc/sysconfig/boot
  43.  
  44. #
  45. # Reset status of this script
  46. #
  47. rc_reset
  48.  
  49. #
  50. # Export the real device in variable REDIRECT.
  51. #
  52. if test -x /sbin/isserial && /sbin/isserial ; then
  53.     test "$TERM" = "linux" -o -z "$TERM" && TERM=vt102
  54. elif test "${REDIRECT%[0-9]}" = "/dev/ttyS" ; then
  55.     test "$TERM" = "linux" -o -z "$TERM" && TERM=vt102
  56. fi
  57.  
  58. #
  59. # Save old terminal settings and set -nl to avoid staircase
  60. # effect, do not lock scrolling, and avoid break characters.
  61. #
  62. otty=$(stty -g)
  63. if test "$FLOW_CONTROL" = "yes" ; then
  64.     stty -nl  ixon ignbrk -brkint
  65. else
  66.     stty -nl -ixon ignbrk -brkint
  67. fi
  68.  
  69. echo -n "System Boot Control: "
  70. echo "Running $0"
  71.  
  72. #
  73. # Start of e.g. blogd, requires /proc and /dev/pts.
  74. #
  75. DTYPE=$(stat -f -c "%T" /proc 2>/dev/null)
  76. if test "$DTYPE" != "proc" ; then
  77.     echo -n "Mounting procfs at /proc"
  78.     mount -n -t proc proc /proc
  79.     rc_status -v -r
  80. fi
  81.  
  82. DTYPE=$(stat -f -c "%T" /sys 2>/dev/null)
  83. if test "$DTYPE" != "sysfs" ; then
  84.     echo -n "Mounting sysfs at /sys"
  85.     mount -n -t sysfs sysfs /sys
  86.     rc_status -v -r
  87. fi
  88.  
  89. HAVE_DEBUGFS=0
  90. DEVTMPFS=tmpfs
  91. while read dev type ; do
  92.         test "$type" = "debugfs" && HAVE_DEBUGFS=1
  93.         test "$type" = "devtmpfs" && DEVTMPFS=devtmpfs
  94. done < /proc/filesystems
  95.  
  96. if test -d /sys/kernel/debug ; then
  97.     DTYPE=$(stat -f -c "%T" /sys/kernel/debug 2>/dev/null)
  98.     if test "$DTYPE" = "sysfs" -a "$HAVE_DEBUGFS" = "1" ; then
  99.         echo -n "Mounting debugfs at /sys/kernel/debug"
  100.         mount -n -t debugfs debugfs /sys/kernel/debug
  101.         rc_status -v -r
  102.     fi
  103. fi
  104.  
  105. # stat does really only return tmpfs even for devtmpfs
  106. # but testing both values anyway they change their mind
  107. DTYPE=$(stat -f -c "%T" /dev 2>/dev/null)
  108. if test "$DTYPE" != "tmpfs" -a "$DTYPE" != "devtmpfs"; then
  109.     echo -n "Mounting devtmpfs at /dev"
  110.     mount -n -t $DEVTMPFS -o mode=0755 $DEVTMPFS /dev
  111.     rc_status -v -r
  112. fi
  113.  
  114. echo -n "Copying static /dev content"
  115. cp -axT --remove-destination /lib/udev/devices /dev
  116. rc_status -v -r
  117.  
  118. #workaround until fixed in udev
  119. chmod 1777 /dev/shm
  120.  
  121. if test "$(stat -Lc %d /dev/shm 2>/dev/null)" = "$(stat -Lc %d /dev/shm/.. 2>/dev/null)" ; then
  122.     echo -n "Mounting tmpfs at /dev/shm"
  123.     mkdir -p -m 1777 /dev/shm
  124.     mount -t tmpfs -o mode=1777 tmpfs /dev/shm
  125.     rc_status -v -r
  126. fi
  127.  
  128. DTYPE=$(stat -f -c "%T" /dev/pts 2>/dev/null)
  129. if test "$DTYPE" != "devpts" ; then
  130.     echo -n "Mounting devpts at /dev/pts"
  131.     mkdir -p -m 755 /dev/pts
  132.     mount -n -t devpts -o mode=0620,gid=5 devpts /dev/pts
  133.     rc_status -v -r
  134. fi
  135.  
  136. #
  137. # Set I/O of this script and its childs to console
  138. #
  139. exec 0<> $CONSOLE 1>&0 2>&0
  140.  
  141. #
  142. # Should we ask for interactive boot mode
  143. #
  144. DO_CONFIRM=""
  145. DO_FORCEFSCK=""
  146. if rc_cmdline confirm > /dev/null ; then
  147.     DO_CONFIRM=yes
  148. fi
  149. if rc_cmdline forcefsck > /dev/null ; then
  150.     DO_FORCEFSCK=yes
  151. fi
  152. if rc_cmdline fastboot > /dev/null ; then
  153.     DO_FASTBOOT=yes
  154. fi
  155. test -z "$CONFIRM_PROMPT_TIMEOUT" && CONFIRM_PROMPT_TIMEOUT=5
  156. if test "$PROMPT_FOR_CONFIRM" = "yes" -a "$DO_CONFIRM" != "yes" ; then
  157.     echo -en "${extd}Enter Interactive startup mode?${norm}"
  158.     rc_timer_on "$CONFIRM_PROMPT_TIMEOUT" 37
  159.     read -t "$CONFIRM_PROMPT_TIMEOUT" -n 1 \
  160.     -p " ${extd}y${norm}/[${extd}n${norm}]("${CONFIRM_PROMPT_TIMEOUT}s") " answer
  161.     rc_timer_off
  162.     case "$answer" in
  163.     [yYiI]) DO_CONFIRM=yes ;;
  164.     *)      DO_CONFIRM=    ;;
  165.     esac
  166.     unset answer
  167.     echo
  168. fi
  169. export DO_CONFIRM DO_FORCEFSCK DO_FASTBOOT
  170.  
  171. #
  172. # Start blogd, requires /proc and /dev/pts.
  173. # Export the real device in variable REDIRECT.
  174. #
  175. if test -z "$REDIRECT" ; then
  176.     if (echo -n > /dev/tty) 2>/dev/null ; then
  177.     REDIRECT=/dev/tty
  178.     else
  179.     REDIRECT=/dev/console
  180.     fi
  181. else
  182.     if test -x /sbin/blogd ; then
  183.     /sbin/blogd $REDIRECT
  184.     fi
  185. fi
  186.  
  187. #
  188. # Common used variables
  189. #
  190. bootrc=/etc/init.d/boot.d
  191. rex="[0-9][0-9]"
  192. failed=""
  193. skipped=""
  194. callord=""
  195.  
  196. #
  197. # Initialize boosplash progressbar variables
  198. #
  199. . /etc/rc.splash B
  200. splashtrigger "rlchange B"
  201.  
  202. #
  203. # Check if we are able to use make for booting
  204. #
  205. test -s /etc/init.d/.depend.boot || RUN_PARALLEL="no"
  206. test "$DO_CONFIRM"   = "yes"     && RUN_PARALLEL="no"
  207. type -p startpar &> /dev/null    || RUN_PARALLEL="no"
  208. startpar -v &> /dev/null     || RUN_PARALLEL="no"
  209.  
  210. #
  211. # Start bootup client scripts.
  212. #
  213. if test "$RUN_PARALLEL" = "yes" ; then
  214.  
  215.     #
  216.     # Start scripts in parallel with make behaviour of startpar
  217.     #
  218.  
  219.     startopt="-p4 -t 30 -T 3 $(splashmake)"
  220.     eval $(startpar $startopt -M boot)
  221.     failed="${failed:+$failed }$failed_service"
  222.     skipped="${skipped:+$skipped }$skipped_service"
  223.  
  224.     unset failed_service skipped_service startopt
  225.  
  226. elif test -d ${bootrc}/ ; then
  227.  
  228.     #
  229.     # Start scripts in given link order
  230.     #
  231.     for i in ${bootrc}/S${rex}*; do
  232.  
  233.     test -f $i || continue
  234.  
  235.     B=${i##*/}
  236.     script=${B#*S$rex}
  237.     B=${B%$script}
  238.  
  239.     if test "$DO_CONFIRM" = "yes" ; then
  240.         rc_confirm -t $CONFIRM_PROMPT_TIMEOUT "Start bootup script ${script}" 0<>$REDIRECT 1>&0 2>&0
  241.         case "$?" in
  242.         0) true     ;;
  243.         1) continue ;;
  244.         2) DO_CONFIRM="" ;;
  245.         esac
  246.     fi
  247.  
  248.     blogger "$script start"
  249.  
  250.     if test -x "$i" ; then
  251.         $i start
  252.     else
  253.         echo Running $i
  254.         /bin/sh $i b
  255.         rc_status -v1 -r
  256.     fi
  257.     status=$?
  258.     echo -en "$rc_reset"
  259.     splashprogress "$script start"
  260.  
  261.     case $status in
  262.     [1-47])  failed="${failed:+$failed }$script"   ;;
  263.     [56])   skipped="${skipped:+$skipped }$script" ;;
  264.     0|*) ;;
  265.     esac
  266.  
  267.     blogger "'$script start' exits with status $status"
  268.     done
  269. fi
  270.  
  271. splashtrigger "rlreached B"
  272.  
  273. #
  274. # Be verbose and print stats
  275. #
  276. echo -n "System Boot Control: "
  277. echo -e "The system has been ${stat}${extd}set up${norm}"
  278. if test -n "$failed" ; then
  279.     n=$((${#failed} + 7))
  280.     echo -n  "Failed features: "
  281.     test $n -lt 47 && echo -en "\033[${COLUMNS}C\033[${n}D"
  282.     echo -e  "${warn}${failed}${norm}"
  283. fi
  284. if test -n "$skipped" ; then
  285.     n=$((${#skipped} + 7))
  286.     echo -n  "Skipped features: "
  287.     test $n -lt 47 && echo -en "\033[${COLUMNS}C\033[${n}D"
  288.     echo -e  "${attn}${skipped}${norm}"
  289. fi
  290.  
  291. #
  292. # Start user defined bootup script.
  293. #
  294. if test -f /etc/init.d/boot.local ; then
  295.     echo -n "System Boot Control: "
  296.     echo "Running /etc/init.d/boot.local"
  297.     /bin/sh /etc/init.d/boot.local
  298.     rc_status -v1 -r
  299.     splashtrigger "boot.local"
  300. fi
  301.  
  302. #
  303. # Stop blogd
  304. #
  305. test -x /sbin/blogd && killproc -QUIT /sbin/blogd
  306.  
  307. #
  308. # Check for boot cycle detection
  309. #
  310. test -s /lib/bootcycle/stats && . /lib/bootcycle/stats
  311.  
  312. #
  313. # Remember for master resource script
  314. #
  315. if test "$DO_CONFIRM" = "yes" ; then
  316.     > /var/run/do_confirm
  317. fi
  318.  
  319. #
  320. # Restore old terminal settings
  321. #
  322. stty $otty
  323.  
  324. #
  325. # Let YaST2 finish its installation, if you installed with YaST2
  326. #
  327. if test -f /var/lib/YaST2/runme_at_boot ; then
  328.     HOSTTYPE=$(uname -m)
  329.     splashtrigger "YaST"
  330.     exec 0<> $REDIRECT 1>&0 2>&0
  331.     # if yast2 failed, this ensures proper system setup
  332.     #ulimit -c unlimited
  333.     > /var/lib/YaST2/run_suseconfig
  334.     if test -x /usr/lib/YaST2/startup/YaST2.Second-Stage; then
  335.     /usr/lib/YaST2/startup/YaST2.Second-Stage
  336.     else
  337.     # oops, yast2 not installed
  338.     rm -f /var/lib/YaST2/runme_at_boot
  339.     fi
  340. fi
  341. if test -f /var/lib/YaST2/reconfig_system ; then
  342.     HOSTTYPE=$(uname -m)
  343.     splashtrigger "YaST"
  344.     exec 0<> $REDIRECT 1>&0 2>&0
  345.     if test -x /usr/lib/YaST2/startup/YaST2.Firstboot; then
  346.     /usr/lib/YaST2/startup/YaST2.Firstboot
  347.     else
  348.     # oops, yast2-firstboot not installed
  349.     rm -f /var/lib/YaST2/reconfig_system
  350.     fi
  351. fi
  352. # run SuSEconfig (with args) if needed
  353. if test -f /var/lib/YaST2/run_suseconfig ; then
  354.     /sbin/SuSEconfig $(cat /var/lib/YaST2/run_suseconfig)
  355.     rm -f /var/lib/YaST2/run_suseconfig
  356. fi
  357.  
  358. exit 0
  359.