vboxdrv.sh.in revision b723b174d7132ab6bbff3abcd83c92530065f7da
0887a65d2e1f7d938381bed11e859caed56cb47evboxsync# Oracle VM VirtualBox
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Linux kernel module init script
0887a65d2e1f7d938381bed11e859caed56cb47evboxsync# Copyright (C) 2006-2010 Oracle Corporation
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# available from http://www.virtualbox.org. This file is free software;
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# you can redistribute it and/or modify it under the terms of the GNU
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# General Public License (GPL) as published by the Free Software
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
41a5daa2596de76f4977055944c7ff54a0afdc3avboxsync# chkconfig: 35 30 70
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# description: VirtualBox Linux kernel module
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync### BEGIN INIT INFO
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Provides: vboxdrv
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Required-Start: $syslog
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Required-Stop:
dcd68204fbfce8a2703fde4a6decb9ccb2054b39vboxsync# Default-Start: 2 3 4 5
31620f279590f4ccc82e9e8ca1d81961095e9404vboxsync# Default-Stop: 1
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Short-Description: VirtualBox Linux kernel module
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync### END INIT INFO
c705e4282ea0c4e6b1f4a9b9c9183ebf2955ebe5vboxsyncif $MODPROBE -c | grep -q '^allow_unsupported_modules *0'; then
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncif [ -n "$INSTALL_DIR" ]; then
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync BUILDVBOXDRV="$INSTALL_DIR/src/vboxhost/vboxdrv/build_in_tmp"
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync BUILDVBOXNETFLT="$INSTALL_DIR/src/vboxhost/vboxnetflt/build_in_tmp"
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync BUILDVBOXNETADP="$INSTALL_DIR/src/vboxhost/vboxnetadp/build_in_tmp"
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync BUILDVBOXDRV="/usr/share/%PACKAGE%/src/vboxhost/vboxdrv/build_in_tmp"
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync BUILDVBOXNETFLT="/usr/share/%PACKAGE%/src/vboxhost/vboxnetflt/build_in_tmp"
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync BUILDVBOXNETADP="/usr/share/%PACKAGE%/src/vboxhost/vboxnetadp/build_in_tmp"
ed5e4f6195dae44fd45ec21052b1931eb8c5d313vboxsync# silently exit if the package was uninstalled but not purged,
ed5e4f6195dae44fd45ec21052b1931eb8c5d313vboxsync# applies to Debian packages only
3f6ec43ead6f462c8c747c3f6671842aa8ad672avboxsync[ -z "$DEBIAN" -o -x $VBOXMANAGE -a -x $BUILDVBOXDRV ] || exit 0
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncif [ -n "$NOLSB" ]; then
5b802b5e11fed6e163afca32e9118d2599d312fbvboxsync[ -r /etc/default/%PACKAGE% ] && . /etc/default/%PACKAGE%
a996fbbf1ca46be54ed995ceddf1e6b035b6ef6cvboxsyncif [ -z "$NOLSB" ]; then
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync if ! rm -f $DEVICE; then
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync failure "modprobe vboxdrv failed. Please use 'dmesg' to find out why"
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync if [ ! -c $DEVICE ]; then
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync MAJOR=`sed -n 's;\([0-9]\+\) vboxdrv;\1;p' /proc/devices`
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync MINOR=`sed -n 's;\([0-9]\+\) vboxdrv;\1;p' /proc/misc`
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync if ! mknod -m 0660 $DEVICE c $MAJOR $MINOR 2>/dev/null; then
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync failure "Cannot create device $DEVICE with major $MAJOR and minor $MINOR"
b723b174d7132ab6bbff3abcd83c92530065f7davboxsync failure "Cannot change group %GROUP% for device $DEVICE"
c705e4282ea0c4e6b1f4a9b9c9183ebf2955ebe5vboxsync if ! $MODPROBE vboxnetflt > /dev/null 2>&1; then
a0a9f39e8864357c2e1e61106958411240f5bf6bvboxsync failure "modprobe vboxnetflt failed. Please use 'dmesg' to find out why"
c705e4282ea0c4e6b1f4a9b9c9183ebf2955ebe5vboxsync if ! $MODPROBE vboxnetadp > /dev/null 2>&1; then
25798ffda5d17be278d15c265ade35ac15b2146bvboxsync failure "modprobe vboxnetadp failed. Please use 'dmesg' to find out why"
25798ffda5d17be278d15c265ade35ac15b2146bvboxsync if ! rmmod vboxnetadp 2>/dev/null; then
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync if ! rmmod vboxnetflt 2>/dev/null; then
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync if ! rm -f $DEVICE; then
5b802b5e11fed6e163afca32e9118d2599d312fbvboxsync# enter the following variables in /etc/default/%PACKAGE%:
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# SHUTDOWN_USERS="foo bar"
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# check for running VMs of user foo and user bar
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# SHUTDOWN=poweroff
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# SHUTDOWN=acpibutton
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# SHUTDOWN=savestate
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# select one of these shutdown methods for running VMs
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync # don't create the ipcd directory with wrong permissions!
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync if [ -d /tmp/.vbox-$i-ipc ]; then
2ca14cdabd16f1875ec36b3ac814f704779eef7avboxsync VMS=`$VBOXMANAGE --nologo list runningvms | sed -e 's/^".*".*{\(.*\)}/\1/' 2>/dev/null`
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync begin_msg "Sending ACPI power button event to remaining VMs"
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync begin_msg "Waiting for $wait seconds for VM shutdown"
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync# setup_script
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync begin_msg "Uninstalling old VirtualBox DKMS kernel modules"
25798ffda5d17be278d15c265ade35ac15b2146bvboxsync if find /lib/modules/`uname -r` -name "vboxnetadp\.*" 2>/dev/null|grep -q vboxnetadp; then
25798ffda5d17be278d15c265ade35ac15b2146bvboxsync begin_msg "Removing old VirtualBox netadp kernel module"
25798ffda5d17be278d15c265ade35ac15b2146bvboxsync find /lib/modules/`uname -r` -name "vboxnetadp\.*" 2>/dev/null|xargs rm -f 2>/dev/null
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync if find /lib/modules/`uname -r` -name "vboxnetflt\.*" 2>/dev/null|grep -q vboxnetflt; then
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync begin_msg "Removing old VirtualBox netflt kernel module"
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync find /lib/modules/`uname -r` -name "vboxnetflt\.*" 2>/dev/null|xargs rm -f 2>/dev/null
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync if find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|grep -q vboxdrv; then
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|xargs rm -f 2>/dev/null
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync begin_msg "Trying to register the VirtualBox kernel modules using DKMS"
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync if ! $DODKMS install >> $LOG; then
7eaaa8a4480370b82ef3735994f986f338fb4df2vboxsync --save-module-symvers /tmp/vboxdrv-Module.symvers \
25798ffda5d17be278d15c265ade35ac15b2146bvboxsync echo "VirtualBox kernel modules (vboxdrv, vboxnetflt and vboxnetadp) are loaded."
25798ffda5d17be278d15c265ade35ac15b2146bvboxsync echo "VirtualBox kernel modules (vboxdrv and vboxnetflt) are loaded."
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync # don't create the ipcd directory with wrong permissions!
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync if [ -d /tmp/.vbox-$i-ipc ]; then
15d50b518d1362724dc104162d5ec2de6a0becaavboxsync VMS=`$VBOXMANAGE --nologo list runningvms | sed -e 's/^".*".*{\(.*\)}/\1/' 2>/dev/null`
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync echo "Usage: $0 {start|stop|stop_vms|restart|force-reload|status|setup}"