summaryrefslogtreecommitdiff
blob: a5607133540d6469007423e8bfc106725d8940a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/bin/sh
#
# Sun xVM VirtualBox
#
# Copyright (C) 2006-2007 Sun Microsystems, Inc.
#
# This file is part of VirtualBox Open Source Edition (OSE), as
# available from http://www.virtualbox.org. This file is free software;
# you can redistribute it and/or modify it under the terms of the GNU
# General Public License (GPL) as published by the Free Software
# Foundation, in version 2 as it comes in the "COPYING" file of the
# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
#
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
# Clara, CA 95054 USA or visit http://www.sun.com if you need
# additional information or have any questions.
#

PATH="/usr/bin:/bin:/usr/sbin:/sbin"
CONFIG="/etc/vbox/vbox.cfg"

if [ ! -r "$CONFIG" ]; then
    echo "Could not find VirtualBox installation. Please reinstall."
    exit 1
fi

. "$CONFIG"

# Note: This script must not fail if the module was not successfully installed
#       because the user might not want to run a VM but only change VM params!

if [ "$1" = "shutdown" ]; then
    SHUTDOWN="true"
elif [ ! -e /lib/modules/`uname -r`/misc/vboxdrv.ko ]; then
	cat << EOF
WARNING: There is no module available for the current kernel (`uname -r`).
         Please recompile the kernel module and install it by:
	
	 sudo emerge -1 app-emulation/virtualbox-modules

	 You will not be able to start VMs until this problem is fixed.
EOF
elif ! lsmod|grep -q vboxdrv; then
    cat << EOF
WARNING: The vboxdrv kernel module is not loaded.
         Please load the kernel module by:

           sudo modprobe vboxdrv

         You will not be able to start VMs until this problem is fixed.
EOF
elif [ ! -c /dev/vboxdrv ]; then
    cat << EOF
WARNING: The character device /dev/vboxdrv does not exist.
	 Please try to reload the kernel module by:

           sudo rmmod vboxdrv; sleep 2; sudo modprobe vboxdrv

         and if that is not successful, try to re-install the package by:

	   sudo emerge -1 app-emulation/virtualbox-modules

	 You will not be able to start VMs until this problem is fixed.
EOF
elif [ ! -w /dev/vboxdrv ]; then
    if [ "`id | grep vboxusers`" = "" ]; then
        cat << EOF
WARNING: You are not a member of the "vboxusers" group.
	 Please add yourself to this group before starting VirtualBox.

	 You will not be able to start VMs until this problem is fixed.
EOF
    else
        cat << EOF
WARNING: /dev/vboxdrv not writable for some reason.
	 If you recently added the current user to the "vboxusers" group
	 then you have to logout and re-login to take the change effect.

	 You will not be able to start VMs until this problem is fixed.
EOF
    fi
elif [ ! -e /usr/lib/libhal.so ]; then
	cat << EOF
WARNING: libhal was not found on this system.
	 This can create several side effects thus problems,
	 when accessing host resources (eg: Cd/Dvd readers).

	 The use of "sys-apps/hal" is still recommended, please install it
	 to meet this requirement by:

	 	sudo emerge sys-apps/hal
EOF
fi

export LD_LIBRARY_PATH="$INSTALL_DIR${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"

SERVER_PID=`ps -U \`whoami\` | grep VBoxSVC | awk '{ print $1 }'`
if [ -z "$SERVER_PID" ]; then
    # Server not running yet/anymore, cleanup socket path.
    # See IPC_GetDefaultSocketPath()!
    if [ -n "$LOGNAME" ]; then
        rm -rf /tmp/.vbox-$LOGNAME-ipc > /dev/null 2>&1
    else
        rm -rf /tmp/.vbox-$USER-ipc > /dev/null 2>&1
    fi
fi

if [ "$SHUTDOWN" = "true" ]; then
    if [ -n "$SERVER_PID" ]; then
        kill -TERM $SERVER_PID
        sleep 2
    fi
    exit 0
fi

APP=`which $0`
APP=`basename $APP`
APP=${APP##/*/}
case "$APP" in
  VirtualBox)
    exec "$INSTALL_DIR/VirtualBox" "$@"
    ;;
  VBoxManage)
    exec "$INSTALL_DIR/VBoxManage" "$@"
    ;;
  VBoxSDL)
    exec "$INSTALL_DIR/VBoxSDL" "$@"
    ;;
  VBoxVRDP)
    exec "$INSTALL_DIR/VBoxHeadless" "$@"
    ;;
  VBoxHeadless)
    exec "$INSTALL_DIR/VBoxHeadless" "$@"
    ;;
  *)
    echo "Unknown application - $APP"
    ;;
esac