#!/bin/sh ## @file # Oracle VM VirtualBox startup script, Linux hosts. # # # Copyright (C) 2006-2017 Oracle Corporation # # 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. # PATH="/usr/bin:/bin:/usr/sbin:/sbin" CONFIG="/etc/vbox/vbox.cfg" test -r "${CONFIG}" && . "${CONFIG}" test -z "${INSTALL_DIR}" && if test -f /usr/lib/virtualbox/VirtualBox && test -x /usr/lib/virtualbox/VirtualBox; then INSTALL_DIR=/usr/lib/virtualbox else echo "Could not find VirtualBox installation. Please reinstall." exit 1 fi # 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 ! lsmod|grep -q vboxdrv; then cat << EOF WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (`uname -r`) or it failed to load. Please recompile the kernel module and install it by for m in vbox{drv,netadp,netflt}; do modprobe \$m; done 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 all the needed kernel modules by: for m in vbox{netflt,netadp,drv}; do rmmod \$m; done for m in vbox{drv,netadp,netflt}; do modprobe \$m; done and if that is not successful, try to re-install the package by: emerge -1av app-emulation/virtualbox-modules You will not be able to start VMs until this problem is fixed. EOF fi 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=`basename $0` case "$APP" in VirtualBox|virtualbox) exec "$INSTALL_DIR/VirtualBox" "$@" ;; VirtualBoxVM|virtualboxvm) exec "$INSTALL_DIR/VirtualBoxVM" "$@" ;; VBoxManage|vboxmanage) exec "$INSTALL_DIR/VBoxManage" "$@" ;; VBoxSDL|vboxsdl) exec "$INSTALL_DIR/VBoxSDL" "$@" ;; VBoxVRDP|VBoxHeadless|vboxheadless) exec "$INSTALL_DIR/VBoxHeadless" "$@" ;; VBoxAutostart|vboxautostart) exec "$INSTALL_DIR/VBoxAutostart" "$@" ;; VBoxBalloonCtrl|vboxballoonctrl) exec "$INSTALL_DIR/VBoxBalloonCtrl" "$@" ;; VBoxBugReport|vboxbugreport) exec "$INSTALL_DIR/VBoxBugReport" "$@" ;; VBoxDTrace|vboxdtrace) exec "$INSTALL_DIR/VBoxDTrace" "$@" ;; vboxwebsrv) exec "$INSTALL_DIR/vboxwebsrv" "$@" ;; *) echo "Unknown application - $APP" exit 1 ;; esac exit 0