vboxdrv.sh.in revision ceac9502f79429220abff899f1cd07e7aba68cb9
e6b62bbfe72b2586784167aaa552426303ef444fvboxsync# Sun xVM VirtualBox
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Linux kernel module init script
e6b62bbfe72b2586784167aaa552426303ef444fvboxsync# Copyright (C) 2006-2007 Sun Microsystems, Inc.
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.
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# chkconfig: 35 30 60
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
dcd68204fbfce8a2703fde4a6decb9ccb2054b39vboxsync# Default-Stop: 0 1 6
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync# Short-Description: VirtualBox Linux kernel module
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync### END INIT INFO
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncif [ -n "$INSTALL_DIR" ]; then
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync BUILDVBOXDRV="$INSTALL_DIR/src/vboxdrv/build_in_tmp"
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync BUILDVBOXNETFLT="$INSTALL_DIR/src/vboxnetflt/build_in_tmp"
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync BUILDVBOXDRV="/usr/share/%PACKAGE%/src/vboxdrv/build_in_tmp"
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync BUILDVBOXNETFLT="/usr/share/%PACKAGE%/src/vboxnetflt/build_in_tmp"
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsyncif [ -n "$NOLSB" ]; then
5b802b5e11fed6e163afca32e9118d2599d312fbvboxsync[ -r /etc/default/%PACKAGE% ] && . /etc/default/%PACKAGE%
a996fbbf1ca46be54ed995ceddf1e6b035b6ef6cvboxsyncif [ -z "$NOLSB" ]; then
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync if ! find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|grep -q vboxdrv; then
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync failure "No suitable module for running kernel found"
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"
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync if ! chown :$GROUPNAME $DEVICE 2>/dev/null; then
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync failure "Cannot change owner $GROUPNAME for device $DEVICE"
a0a9f39e8864357c2e1e61106958411240f5bf6bvboxsync if ! modprobe vboxnetflt > /dev/null 2>&1; then
a0a9f39e8864357c2e1e61106958411240f5bf6bvboxsync failure "modprobe vboxnetflt failed. Please use 'dmesg' to find out why"
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
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync VMS=`$VBOXMANAGE -nologo list runningvms 2>/dev/null`
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync begin_msg "Sending ACPI power button event to remaining VMs"
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync begin_msg "Waiting for $wait seconds for VM shutdown"
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
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync --save-module-symvers /tmp/vboxdrv-Module.symvers \
d766e56621531afa7cc104d93a53697d293f4bfbvboxsync 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
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync VMS=`$VBOXMANAGE -nologo list runningvms 2>/dev/null`
dd770e74b6654ce0e5584dbd4ec72e90fd4cc58fvboxsync echo "Usage: $0 {start|stop|stop_vms|restart|force-reload|status|setup}"