VirtualBox

source: vbox/trunk/src/VBox/Installer/linux/vboxautostart-service.sh@ 45733

Last change on this file since 45733 was 43656, checked in by vboxsync, 12 years ago

Autostart/stop: Further work on the stop part

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.6 KB
Line 
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
28PATH=$PATH:/bin:/sbin:/usr/sbin
29
30[ -f /etc/debian_release -a -f /lib/lsb/init-functions ] || NOLSB=yes
31[ -f /etc/vbox/vbox.cfg ] && . /etc/vbox/vbox.cfg
32
33if [ -n "$INSTALL_DIR" ]; then
34 binary="$INSTALL_DIR/VBoxAutostart"
35else
36 binary="/usr/lib/virtualbox/VBoxAutostart"
37fi
38
39# silently exit if the package was uninstalled but not purged,
40# applies to Debian packages only (but shouldn't hurt elsewhere)
41[ ! -f /etc/debian_release -o -x $binary ] || exit 0
42
43[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
44
45system=unknown
46if [ -f /etc/redhat-release ]; then
47 system=redhat
48elif [ -f /etc/SuSE-release ]; then
49 system=suse
50elif [ -f /etc/debian_version ]; then
51 system=debian
52elif [ -f /etc/gentoo-release ]; then
53 system=gentoo
54elif [ -f /etc/arch-release ]; then
55 system=arch
56elif [ -f /etc/slackware-version ]; then
57 system=slackware
58elif [ -f /etc/lfs-release ]; then
59 system=lfs
60else
61 system=other
62fi
63
64if [ -z "$NOLSB" ]; then
65 . /lib/lsb/init-functions
66 fail_msg() {
67 echo ""
68 log_failure_msg "$1"
69 }
70 succ_msg() {
71 log_success_msg " done."
72 }
73 begin_msg() {
74 log_daemon_msg "$@"
75 }
76fi
77
78if [ "$system" = "redhat" ]; then
79 . /etc/init.d/functions
80 if [ -n "$NOLSB" ]; then
81 start_daemon() {
82 usr="$1"
83 shift
84 daemon --user $usr $@
85 }
86 fail_msg() {
87 echo_failure
88 echo
89 }
90 succ_msg() {
91 echo_success
92 echo
93 }
94 begin_msg() {
95 echo -n "$1"
96 }
97 fi
98fi
99
100if [ "$system" = "suse" ]; then
101 . /etc/rc.status
102 start_daemon() {
103 usr="$1"
104 shift
105 su - $usr -c "$*"
106 }
107 if [ -n "$NOLSB" ]; then
108 fail_msg() {
109 rc_failed 1
110 rc_status -v
111 }
112 succ_msg() {
113 rc_reset
114 rc_status -v
115 }
116 begin_msg() {
117 echo -n "$1"
118 }
119 fi
120fi
121
122if [ "$system" = "debian" ]; then
123 start_daemon() {
124 usr="$1"
125 shift
126 bin="$1"
127 shift
128 start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
129 }
130 killproc() {
131 start-stop-daemon --stop --exec $@
132 }
133 if [ -n "$NOLSB" ]; then
134 fail_msg() {
135 echo " ...fail!"
136 }
137 succ_msg() {
138 echo " ...done."
139 }
140 begin_msg() {
141 echo -n "$1"
142 }
143 fi
144fi
145
146if [ "$system" = "gentoo" ]; then
147 if [ -f /sbin/functions.sh ]; then
148 . /sbin/functions.sh
149 elif [ -f /etc/init.d/functions.sh ]; then
150 . /etc/init.d/functions.sh
151 fi
152 start_daemon() {
153 usr="$1"
154 shift
155 bin="$1"
156 shift
157 start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
158 }
159 killproc() {
160 start-stop-daemon --stop --exec $@
161 }
162 if [ -n "$NOLSB" ]; then
163 fail_msg() {
164 echo " ...fail!"
165 }
166 succ_msg() {
167 echo " ...done."
168 }
169 begin_msg() {
170 echo -n "$1"
171 }
172 if [ "`which $0`" = "/sbin/rc" ]; then
173 shift
174 fi
175 fi
176fi
177
178if [ "$system" = "arch" ]; then
179 USECOLOR=yes
180 . /etc/rc.d/functions
181 start_daemon() {
182 usr="$1"
183 shift
184 su - $usr -c "$*"
185 test $? -eq 0 && add_daemon rc.`basename $2`
186 }
187 killproc() {
188 killall $@
189 rm_daemon `basename $@`
190 }
191 if [ -n "$NOLSB" ]; then
192 fail_msg() {
193 stat_fail
194 }
195 succ_msg() {
196 stat_done
197 }
198 begin_msg() {
199 stat_busy "$1"
200 }
201 fi
202fi
203
204if [ "$system" = "slackware" ]; then
205 killproc() {
206 killall $1
207 rm -f $PIDFILE
208 }
209 if [ -n "$NOLSB" ]; then
210 fail_msg() {
211 echo " ...fail!"
212 }
213 succ_msg() {
214 echo " ...done."
215 }
216 begin_msg() {
217 echo -n "$1"
218 }
219 fi
220 start_daemon() {
221 usr="$1"
222 shift
223 su - $usr -c "$*"
224 }
225fi
226
227if [ "$system" = "lfs" ]; then
228 . /etc/rc.d/init.d/functions
229 if [ -n "$NOLSB" ]; then
230 fail_msg() {
231 echo_failure
232 }
233 succ_msg() {
234 echo_ok
235 }
236 begin_msg() {
237 echo $1
238 }
239 fi
240 start_daemon() {
241 usr="$1"
242 shift
243 su - $usr -c "$*"
244 }
245 status() {
246 statusproc $1
247 }
248fi
249
250if [ "$system" = "other" ]; then
251 if [ -n "$NOLSB" ]; then
252 fail_msg() {
253 echo " ...fail!"
254 }
255 succ_msg() {
256 echo " ...done."
257 }
258 begin_msg() {
259 echo -n "$1"
260 }
261 fi
262fi
263
264vboxdrvrunning() {
265 lsmod | grep -q "vboxdrv[^_-]"
266}
267
268start() {
269 [ -z "$VBOXAUTOSTART_DB" ] && exit 0
270 [ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
271 begin_msg "Starting VirtualBox VMs configured for autostart";
272 vboxdrvrunning || {
273 fail_msg "VirtualBox kernel module not loaded!"
274 exit 0
275 }
276 PARAMS="--background --start --config $VBOXAUTOSTART_CONFIG"
277
278 # prevent inheriting this setting to VBoxSVC
279 unset VBOX_RELEASE_LOG_DEST
280
281 for user in `ls $VBOXAUTOSTART_DB/*.start`
282 do
283 start_daemon `basename $user | sed -ne "s/\(.*\).start/\1/p"` $binary $PARAMS > /dev/null 2>&1
284 done
285
286 return $RETVAL
287}
288
289stop() {
290 [ -z "$VBOXAUTOSTART_DB" ] && exit 0
291 [ -z "$VBOXAUTOSTART_CONFIG" ] && exit 0
292
293 PARAMS="--stop --config $VBOXAUTOSTART_CONFIG"
294
295 # prevent inheriting this setting to VBoxSVC
296 unset VBOX_RELEASE_LOG_DEST
297
298 for user in `ls $VBOXAUTOSTART_DB/*.stop`
299 do
300 start_daemon `basename $user | sed -ne "s/\(.*\).stop/\1/p"` $binary $PARAMS > /dev/null 2>&1
301 done
302
303 return $RETVAL
304}
305
306case "$1" in
307start)
308 start
309 ;;
310stop)
311 stop
312 ;;
313*)
314 echo "Usage: $0 {start|stop}"
315 exit 1
316esac
317
318exit $RETVAL
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette