Guest User

Untitled

a guest
Nov 25th, 2015
446
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.15 KB | None | 0 0
  1. #!/bin/sh
  2. #
  3. # VirtualBox autostart service init script.
  4. #
  5. # Copyright (C) 2012 Oracle Corporation
  6. #
  7. # This file is part of VirtualBox Open Source Edition (OSE), as
  8. # available from http://www.virtualbox.org. This file is free software;
  9. # you can redistribute it and/or modify it under the terms of the GNU
  10. # General Public License (GPL) as published by the Free Software
  11. # Foundation, in version 2 as it comes in the "COPYING" file of the
  12. # VirtualBox OSE distribution. VirtualBox OSE is distributed in the
  13. # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
  14. #
  15.  
  16. # chkconfig: 35 35 65
  17. # description: VirtualBox autostart service
  18. #
  19. ### BEGIN INIT INFO
  20. # Provides: vboxautostart-service
  21. # Required-Start: vboxdrv
  22. # Required-Stop: vboxdrv
  23. # Default-Start: 2 3 4 5
  24. # Default-Stop: 0 1 6
  25. # Description: VirtualBox autostart service
  26. ### END INIT INFO
  27.  
  28. PATH=$PATH:/bin:/sbin:/usr/sbin
  29. DEBIAN=yes
  30. NOLSB=
  31.  
  32. [ -f /lib/lsb/init-functions ] || NOLSB=yes
  33. [ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
  34.  
  35. if [ -n "$INSTALL_DIR" ]; then
  36. binary="$INSTALL_DIR/VBoxAutostart"
  37. else
  38. binary="/usr/lib/virtualbox/VBoxAutostart"
  39. fi
  40.  
  41. # silently exit if the package was uninstalled but not purged,
  42. # applies to Debian packages only
  43. [ -z "$DEBIAN" -o -x $binary ] || exit 0
  44.  
  45. [ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
  46.  
  47. system=unknown
  48. if [ -f /etc/redhat-release ]; then
  49.     system=redhat
  50. elif [ -f /etc/SuSE-release ]; then
  51.     system=suse
  52. elif [ -f /etc/debian_version ]; then
  53.     system=debian
  54. elif [ -f /etc/gentoo-release ]; then
  55.     system=gentoo
  56. elif [ -f /etc/arch-release ]; then
  57.     system=arch
  58. elif [ -f /etc/slackware-version ]; then
  59.     system=slackware
  60. elif [ -f /etc/lfs-release ]; then
  61.     system=lfs
  62. else
  63.     system=other
  64. fi
  65.  
  66. if [ -z "$NOLSB" ]; then
  67.     . /lib/lsb/init-functions
  68.     fail_msg() {
  69.         echo ""
  70.         log_failure_msg "$1"
  71.     }
  72.     succ_msg() {
  73.         log_success_msg " done."
  74.     }
  75.     begin_msg() {
  76.         log_daemon_msg "$@"
  77.     }
  78. fi
  79.  
  80. if [ "$system" = "redhat" ]; then
  81.     . /etc/init.d/functions
  82.     if [ -n "$NOLSB" ]; then
  83.         start_daemon() {
  84.             usr="$1"
  85.             shift
  86.             daemon --user $usr $@
  87.         }
  88.         fail_msg() {
  89.             echo_failure
  90.             echo
  91.         }
  92.         succ_msg() {
  93.             echo_success
  94.             echo
  95.         }
  96.         begin_msg() {
  97.             echo -n "$1"
  98.         }
  99.     fi
  100. fi
  101.  
  102. if [ "$system" = "suse" ]; then
  103.     . /etc/rc.status
  104.     start_daemon() {
  105.         usr="$1"
  106.         shift
  107.         su - $usr -c "$*"
  108.     }
  109.     if [ -n "$NOLSB" ]; then
  110.         fail_msg() {
  111.             rc_failed 1
  112.             rc_status -v
  113.         }
  114.         succ_msg() {
  115.             rc_reset
  116.             rc_status -v
  117.         }
  118.         begin_msg() {
  119.             echo -n "$1"
  120.         }
  121.     fi
  122. fi
  123.  
  124. if [ "$system" = "debian" ]; then
  125.     start_daemon() {
  126.         usr="$1"
  127.         shift
  128.         bin="$1"
  129.         shift
  130.         start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
  131.     }
  132.     killproc() {
  133.         start-stop-daemon --stop --exec $@
  134.     }
  135.     if [ -n "$NOLSB" ]; then
  136.         fail_msg() {
  137.             echo " ...fail!"
  138.         }
  139.         succ_msg() {
  140.             echo " ...done."
  141.         }
  142.         begin_msg() {
  143.             echo -n "$1"
  144.         }
  145.     fi
  146. fi
  147.  
  148. if [ "$system" = "gentoo" ]; then
  149.     if [ -f /sbin/functions.sh ]; then
  150.         . /sbin/functions.sh
  151.     elif [ -f /etc/init.d/functions.sh ]; then
  152.         . /etc/init.d/functions.sh
  153.     fi
  154.     start_daemon() {
  155.         usr="$1"
  156.         shift
  157.         bin="$1"
  158.         shift
  159.         start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
  160.     }
  161.     killproc() {
  162.         start-stop-daemon --stop --exec $@
  163.     }
  164.     if [ -n "$NOLSB" ]; then
  165.         fail_msg() {
  166.             echo " ...fail!"
  167.         }
  168.         succ_msg() {
  169.             echo " ...done."
  170.         }
  171.         begin_msg() {
  172.             echo -n "$1"
  173.         }
  174.         if [ "`which $0`" = "/sbin/rc" ]; then
  175.             shift
  176.         fi
  177.     fi
  178. fi
  179.  
  180. if [ "$system" = "arch" ]; then
  181.     USECOLOR=yes
  182.     . /etc/rc.d/functions
  183.     start_daemon() {
  184.         usr="$1"
  185.         shift
  186.         su - $usr -c "$*"
  187.         test $? -eq 0 && add_daemon rc.`basename $2`
  188.     }
  189.     killproc() {
  190.         killall $@
  191.         rm_daemon `basename $@`
  192.     }
  193.     if [ -n "$NOLSB" ]; then
  194.         fail_msg() {
  195.             stat_fail
  196.         }
  197.         succ_msg() {
  198.             stat_done
  199.         }
  200.         begin_msg() {
  201.             stat_busy "$1"
  202.         }
  203.     fi
  204. fi
  205.  
  206. if [ "$system" = "slackware" ]; then
  207.     killproc() {
  208.         killall $1
  209.         rm -f $PIDFILE
  210.     }
  211.     if [ -n "$NOLSB" ]; then
  212.         fail_msg() {
  213.             echo " ...fail!"
  214.         }
  215.         succ_msg() {
  216.             echo " ...done."
  217.         }
  218.         begin_msg() {
  219.             echo -n "$1"
  220.         }
  221.     fi
  222.     start_daemon() {
  223.         usr="$1"
  224.         shift
  225.         su - $usr -c "$*"
  226.     }
  227. fi
  228.  
  229. if [ "$system" = "lfs" ]; then
  230.     . /etc/rc.d/init.d/functions
  231.     if [ -n "$NOLSB" ]; then
  232.         fail_msg() {
  233.             echo_failure
  234.         }
  235.         succ_msg() {
  236.             echo_ok
  237.         }
  238.         begin_msg() {
  239.             echo $1
  240.         }
  241.     fi
  242.     start_daemon() {
  243.         usr="$1"
  244.         shift
  245.         su - $usr -c "$*"
  246.     }
  247.     status() {
  248.         statusproc $1
  249.     }
  250. fi
  251.  
  252. if [ "$system" = "other" ]; then
  253.     if [ -n "$NOLSB" ]; then
  254.         fail_msg() {
  255.             echo " ...fail!"
  256.         }
  257.         succ_msg() {
  258.             echo " ...done."
  259.         }
  260.         begin_msg() {
  261.             echo -n "$1"
  262.         }
  263.     fi
  264. fi
  265.  
  266. vboxdrvrunning() {
  267.     lsmod | grep -q "vboxdrv[^_-]"
  268. }
  269.  
  270. start() {
  271.     [ -z "$VBOXAUTOSTART_DB" ] && exit 0
  272.     [ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
  273.     begin_msg "Starting VirtualBox VMs configured for autostart";
  274.     vboxdrvrunning || {
  275.         fail_msg "VirtualBox kernel module not loaded!"
  276.         exit 0
  277.     }
  278.     PARAMS="--background --start --config $VBOXAUTOSTART_CONFIG"
  279.  
  280.     # prevent inheriting this setting to VBoxSVC
  281.     unset VBOX_RELEASE_LOG_DEST
  282.  
  283.     for user in `ls $VBOXAUTOSTART_DB/*.start`
  284.     do
  285.         start_daemon `basename $user | sed -ne "s/\(.*\).start/\1/p"` $binary $PARAMS > /dev/null 2>&1
  286.     done
  287.  
  288.     return $RETVAL
  289. }
  290.  
  291. stop() {
  292.     [ -z "$VBOXAUTOSTART_DB" ] && exit 0
  293.     [ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
  294.  
  295.     exit 0
  296.  
  297.     #begin_msg "Stopping VirtualBox VMs configured for autostop";
  298.     #vboxdrvrunning || {
  299.     # fail_msg "VirtualBox kernel module not loaded!"
  300.     # exit 0
  301.     #}
  302.     #PARAMS="--stop"
  303.     #[ -n "$VBOXAUTOSTART_CONFIG" ] && PARAMS="$PARAMS -c $VBOXAUTOSTART_CONFIG"
  304.  
  305.     # prevent inheriting this setting to VBoxSVC
  306.     #unset VBOX_RELEASE_LOG_DEST
  307.  
  308.     #for user in `ls $VBOXAUTOSTART_DB/*.stop`
  309.     #do
  310.     # start_daemon `basename $user | sed -ne "s/\(.*\).stop/\1/p"` $binary $PARAMS > /dev/null 2>&1
  311.     #done
  312.  
  313.     #return $RETVAL
  314. }
  315.  
  316. case "$1" in
  317.     start)
  318.         start
  319.         ;;
  320.     stop)
  321.         stop
  322.         ;;
  323.     *)
  324.         echo "Usage: $0 {start|stop}"
  325.         exit 1
  326. esac
  327.  
  328. exit $RETVAL
Advertisement
Add Comment
Please, Sign In to add comment