VirtualBox

source: vbox/trunk/src/VBox/Installer/darwin/VBoxKEXTs/VirtualBoxStartup.sh@ 79804

Last change on this file since 79804 was 76553, checked in by vboxsync, 6 years ago

scm --update-copyright-year

  • Property svn:eol-style set to LF
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 6.9 KB
Line 
1#!/bin/sh
2# $Id: VirtualBoxStartup.sh 76553 2019-01-01 01:45:53Z vboxsync $
3## @file
4# Startup service for loading the kernel extensions and select the set of VBox
5# binaries that matches the kernel architecture.
6#
7
8#
9# Copyright (C) 2007-2019 Oracle Corporation
10#
11# This file is part of VirtualBox Open Source Edition (OSE), as
12# available from http://www.virtualbox.org. This file is free software;
13# you can redistribute it and/or modify it under the terms of the GNU
14# General Public License (GPL) as published by the Free Software
15# Foundation, in version 2 as it comes in the "COPYING" file of the
16# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18#
19
20if false; then
21 . /etc/rc.common
22else
23 # Fake the startup item functions we're using.
24
25 ConsoleMessage()
26 {
27 if [ "$1" != "-f" ]; then
28 echo "$@"
29 else
30 shift
31 echo "Fatal error: $@"
32 exit 1;
33 fi
34 }
35
36 RunService()
37 {
38 case "$1" in
39 "start")
40 StartService
41 exit $?;
42 ;;
43 "stop")
44 StopService
45 exit $?;
46 ;;
47 "restart")
48 RestartService
49 exit $?;
50 ;;
51 "launchd")
52 if RestartService; then
53 while true;
54 do
55 sleep 3600
56 done
57 fi
58 exit $?;
59 ;;
60 **)
61 echo "Error: Unknown action '$1'"
62 exit 1;
63 esac
64 }
65fi
66
67
68StartService()
69{
70 VBOX_RC=0
71 VBOXDRV="VBoxDrv"
72 VBOXUSB="VBoxUSB"
73
74 #
75 # Check that all the directories exist first.
76 #
77 if [ ! -d "/Library/Application Support/VirtualBox/${VBOXDRV}.kext" ]; then
78 ConsoleMessage "Error: /Library/Application Support/VirtualBox/${VBOXDRV}.kext is missing"
79 VBOX_RC=1
80 fi
81 if [ ! -d "/Library/Application Support/VirtualBox/${VBOXUSB}.kext" ]; then
82 ConsoleMessage "Error: /Library/Application Support/VirtualBox/${VBOXUSB}.kext is missing"
83 VBOX_RC=1
84 fi
85 if [ ! -d "/Library/Application Support/VirtualBox/VBoxNetFlt.kext" ]; then
86 ConsoleMessage "Error: /Library/Application Support/VirtualBox/VBoxNetFlt.kext is missing"
87 VBOX_RC=1
88 fi
89 if [ ! -d "/Library/Application Support/VirtualBox/VBoxNetAdp.kext" ]; then
90 ConsoleMessage "Error: /Library/Application Support/VirtualBox/VBoxNetAdp.kext is missing"
91 VBOX_RC=1
92 fi
93
94 #
95 # Check that no drivers are currently running.
96 # (Try stop the service if this is the case.)
97 #
98 if [ $VBOX_RC -eq 0 ]; then
99 if kextstat -lb org.virtualbox.kext.VBoxDrv 2>&1 | grep -q org.virtualbox.kext.VBoxDrv; then
100 ConsoleMessage "Error: ${VBOXDRV}.kext is already loaded"
101 VBOX_RC=1
102 fi
103 if kextstat -lb org.virtualbox.kext.VBoxUSB 2>&1 | grep -q org.virtualbox.kext.VBoxUSB; then
104 ConsoleMessage "Error: ${VBOXUSB}.kext is already loaded"
105 VBOX_RC=1
106 fi
107 if kextstat -lb org.virtualbox.kext.VBoxNetFlt 2>&1 | grep -q org.virtualbox.kext.VBoxNetFlt; then
108 ConsoleMessage "Error: VBoxNetFlt.kext is already loaded"
109 VBOX_RC=1
110 fi
111 if kextstat -lb org.virtualbox.kext.VBoxNetAdp 2>&1 | grep -q org.virtualbox.kext.VBoxNetAdp; then
112 ConsoleMessage "Error: VBoxNetAdp.kext is already loaded"
113 VBOX_RC=1
114 fi
115 fi
116
117 #
118 # Load the drivers.
119 #
120 if [ $VBOX_RC -eq 0 ]; then
121 ConsoleMessage "Loading ${VBOXDRV}.kext"
122 if ! kextload "/Library/Application Support/VirtualBox/${VBOXDRV}.kext"; then
123 ConsoleMessage "Error: Failed to load /Library/Application Support/VirtualBox/${VBOXDRV}.kext"
124 VBOX_RC=1
125 fi
126
127 ConsoleMessage "Loading ${VBOXUSB}.kext"
128 if ! kextload -d "/Library/Application Support/VirtualBox/${VBOXDRV}.kext" "/Library/Application Support/VirtualBox/${VBOXUSB}.kext"; then
129 ConsoleMessage "Error: Failed to load /Library/Application Support/VirtualBox/${VBOXUSB}.kext"
130 VBOX_RC=1
131 fi
132
133 ConsoleMessage "Loading VBoxNetFlt.kext"
134 if ! kextload -d "/Library/Application Support/VirtualBox/${VBOXDRV}.kext" "/Library/Application Support/VirtualBox/VBoxNetFlt.kext"; then
135 ConsoleMessage "Error: Failed to load /Library/Application Support/VirtualBox/VBoxNetFlt.kext"
136 VBOX_RC=1
137 fi
138
139 ConsoleMessage "Loading VBoxNetAdp.kext"
140 if ! kextload -d "/Library/Application Support/VirtualBox/${VBOXDRV}.kext" "/Library/Application Support/VirtualBox/VBoxNetAdp.kext"; then
141 ConsoleMessage "Error: Failed to load /Library/Application Support/VirtualBox/VBoxNetAdp.kext"
142 VBOX_RC=1
143 fi
144
145 if [ $VBOX_RC -ne 0 ]; then
146 # unload the drivers (ignoring failures)
147 kextunload -b org.virtualbox.kext.VBoxNetAdp
148 kextunload -b org.virtualbox.kext.VBoxNetFlt
149 kextunload -b org.virtualbox.kext.VBoxUSB
150 kextunload -b org.virtualbox.kext.VBoxDrv
151 fi
152 fi
153
154 #
155 # Set the error on failure.
156 #
157 if [ "$VBOX_RC" -ne "0" ]; then
158 ConsoleMessage -f VirtualBox
159 exit $VBOX_RC
160 fi
161}
162
163
164StopService()
165{
166 VBOX_RC=0
167 VBOXDRV="VBoxDrv"
168 VBOXUSB="VBoxUSB"
169
170 if kextstat -lb org.virtualbox.kext.VBoxUSB 2>&1 | grep -q org.virtualbox.kext.VBoxUSB; then
171 ConsoleMessage "Unloading ${VBOXUSB}.kext"
172 if ! kextunload -m org.virtualbox.kext.VBoxUSB; then
173 ConsoleMessage "Error: Failed to unload VBoxUSB.kext"
174 VBOX_RC=1
175 fi
176 fi
177
178 if kextstat -lb org.virtualbox.kext.VBoxNetFlt 2>&1 | grep -q org.virtualbox.kext.VBoxNetFlt; then
179 ConsoleMessage "Unloading VBoxNetFlt.kext"
180 if ! kextunload -m org.virtualbox.kext.VBoxNetFlt; then
181 ConsoleMessage "Error: Failed to unload VBoxNetFlt.kext"
182 VBOX_RC=1
183 fi
184 fi
185
186 if kextstat -lb org.virtualbox.kext.VBoxNetAdp 2>&1 | grep -q org.virtualbox.kext.VBoxNetAdp; then
187 ConsoleMessage "Unloading VBoxNetAdp.kext"
188 if ! kextunload -m org.virtualbox.kext.VBoxNetAdp; then
189 ConsoleMessage "Error: Failed to unload VBoxNetAdp.kext"
190 VBOX_RC=1
191 fi
192 fi
193
194 # This must come last because of dependencies.
195 if kextstat -lb org.virtualbox.kext.VBoxDrv 2>&1 | grep -q org.virtualbox.kext.VBoxDrv; then
196 ConsoleMessage "Unloading ${VBOXDRV}.kext"
197 if ! kextunload -m org.virtualbox.kext.VBoxDrv; then
198 ConsoleMessage "Error: Failed to unload VBoxDrv.kext"
199 VBOX_RC=1
200 fi
201 fi
202
203 # Set the error on failure.
204 if [ "$VBOX_RC" -ne "0" ]; then
205 ConsoleMessage -f VirtualBox
206 exit $VBOX_RC
207 fi
208}
209
210
211RestartService()
212{
213 StopService
214 StartService
215}
216
217
218RunService "$1"
219
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