Skip to content

Instantly share code, notes, and snippets.

@wertercatt
Created June 22, 2019 06:47
Show Gist options
  • Save wertercatt/a84e728ef0d87e6478f2ce072f36d715 to your computer and use it in GitHub Desktop.
Save wertercatt/a84e728ef0d87e6478f2ce072f36d715 to your computer and use it in GitHub Desktop.
Oracle VM VirtualBox startup script, Linux hosts.
#!/bin/sh
## @file
# Oracle VM VirtualBox startup script, Linux hosts.
#
#
# Copyright (C) 2006-2019 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"
# The below is GNU-specific. See slightly further down for a version which
# works on Solaris and OS X.
TARGET=`readlink -e -- "${0}"` || exit 1
MY_DIR="${TARGET%/[!/]*}"
# (
# path="${0}"
# while test -n "${path}"; do
# # Make sure we have at least one slash and no leading dash.
# expr "${path}" : / > /dev/null || path="./${path}"
# # Filter out bad characters in the path name.
# expr "${path}" : ".*[*?<>\\]" > /dev/null && exit 1
# # Catch embedded new-lines and non-existing (or path-relative) files.
# # $0 should always be absolute when scripts are invoked through "#!".
# test "`ls -l -d "${path}" 2> /dev/null | wc -l`" -eq 1 || exit 1
# # Change to the folder containing the file to resolve relative links.
# folder=`expr "${path}" : "\(.*/\)[^/][^/]*/*$"` || exit 1
# path=`expr "x\`ls -l -d "${path}"\`" : "[^>]* -> \(.*\)"`
# cd "${folder}"
# # If the last path was not a link then we are in the target folder.
# test -n "${path}" || pwd
# done
# )
if test -f /usr/lib/virtualbox/VirtualBox &&
test -x /usr/lib/virtualbox/VirtualBox; then
INSTALL_DIR=/usr/lib/virtualbox
elif test -f "${MY_DIR}/VirtualBox" && test -x "${MY_DIR}/VirtualBox"; then
INSTALL_DIR="${MY_DIR}"
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
sudo /sbin/vboxconfig
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. Try
sudo /sbin/vboxconfig
and if that is not successful, try to re-install the package.
You will not be able to start VMs until this problem is fixed.
EOF
fi
if [ -f /etc/vbox/module_not_compiled ]; then
cat << EOF
WARNING: The compilation of the vboxdrv.ko kernel module failed during the
installation for some reason. Starting a VM will not be possible.
Please consult the User Manual for build instructions.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment