vboxvfs.sh revision c98fb3e16fcd571a790eab772c0c66173d225205
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#! /bin/sh
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# innotek VirtualBox
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# Linux Additions VFS kernel module init script
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# Copyright (C) 2006-2007 innotek GmbH
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# available from http://www.virtualbox.org. This file is free software;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# you can redistribute it and/or modify it under the terms of the GNU
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# General Public License as published by the Free Software Foundation,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# distribution. VirtualBox OSE is distributed in the hope that it will
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# be useful, but WITHOUT ANY WARRANTY of any kind.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# chkconfig: 35 30 60
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# description: VirtualBox Linux Additions VFS kernel module
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync### BEGIN INIT INFO
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# Provides: vboxvfs
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# Required-Start: vboxadd
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# Required-Stop:
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# Default-Start: 3 5
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# Default-Stop:
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync# Description: VirtualBox Linux Additions VFS kernel module
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync### END INIT INFO
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncPATH=$PATH:/bin:/sbin:/usr/sbin
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncif [ -f /etc/redhat-release ]; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync system=redhat
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncelif [ -f /etc/SuSE-release ]; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync system=suse
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncelif [ -f /etc/gentoo-release ]; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync system=gentoo
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncelse
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync system=other
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncfi
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncif [ "$system" = "redhat" ]; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync . /etc/init.d/functions
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fail_msg() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo_failure
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync succ_msg() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo_success
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync begin() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo -n "$1"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncfi
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncif [ "$system" = "suse" ]; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync . /etc/rc.status
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fail_msg() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync rc_failed 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync rc_status -v
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync succ_msg() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync rc_reset
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync rc_status -v
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync begin() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo -n "$1"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncfi
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncif [ "$system" = "gentoo" ]; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync . /sbin/functions.sh
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fail_msg() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync eend 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync succ_msg() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync eend $?
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync begin() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ebegin $1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if [ "`which $0`" = "/sbin/rc" ]; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync shift
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fi
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncfi
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncif [ "$system" = "other" ]; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fail_msg() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo " ...fail!"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync succ_msg() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo " ...done."
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync begin() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo -n $1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncfi
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynckdir=/lib/modules/`uname -r`/misc
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncmodname=vboxvfs
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncmodule="$kdir/$modname"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncfile=""
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctest -f $module.o && file=$module.o
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctest -f $module.ko && file=$module.ko
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncfail() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if [ "$system" = "gentoo" ]; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync eerror $1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync exit 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fi
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fail_msg
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo "($1)"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync exit 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctest -z "$file" && {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fail "Kernel module not found"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncrunning() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync lsmod | grep -q $modname[^_-]
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncstart() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync begin "Starting VirtualBox Additions shared folder support ";
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync running || {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync modprobe $modname > /dev/null 2>&1 || {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if dmesg | grep "vboxConnect failed" > /dev/null 2>&1; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fail_msg
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo "You may be trying to run Guest Additions from binary release of VirtualBox"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo "in the Open Source Edition."
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync exit 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fi
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fail "modprobe $modname failed"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync }
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync succ_msg
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync return 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncstop() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync begin "Stopping VirtualBox Additions shared folder support ";
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if running; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync rmmod $modname || fail "Cannot unload module $modname"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fi
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync succ_msg
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync return 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncrestart() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync stop && start
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync return 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncdmnstatus() {
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync if running; then
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo "VirtualBox Additions shared folder support is currently running."
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync else
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo "VirtualBox Additions shared folder support is not currently running."
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync fi
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync}
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynccase "$1" in
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncstart)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync start
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ;;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncstop)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync stop
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ;;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncrestart)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync restart
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ;;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncstatus)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync dmnstatus
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ;;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync*)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync echo "Usage: $0 {start|stop|restart|status}"
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync exit 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncesac
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsyncexit
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync