vboxvfs.sh revision 743e930caaabf7460c3f885ad4ebd54cea85c731
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#! /bin/sh
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# Sun xVM VirtualBox
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# Linux Additions VFS kernel module init script
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# Copyright (C) 2006-2007 Sun Microsystems, Inc.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# available from http://www.virtualbox.org. This file is free software;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# you can redistribute it and/or modify it under the terms of the GNU
7c465e80d0699fab71706c8a013a3327ec7034dcvboxsync# General Public License (GPL) as published by the Free Software
4e9f070a55a9ab37758f11adff5ca15d0498bcffvboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
7c465e80d0699fab71706c8a013a3327ec7034dcvboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
7c465e80d0699fab71706c8a013a3327ec7034dcvboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
4e9f070a55a9ab37758f11adff5ca15d0498bcffvboxsync#
7c465e80d0699fab71706c8a013a3327ec7034dcvboxsync# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
4e9f070a55a9ab37758f11adff5ca15d0498bcffvboxsync# Clara, CA 95054 USA or visit http://www.sun.com if you need
7c465e80d0699fab71706c8a013a3327ec7034dcvboxsync# additional information or have any questions.
e2f182ec6538ad3eec9aab9c682296e044063200vboxsync#
e2f182ec6538ad3eec9aab9c682296e044063200vboxsync
e2f182ec6538ad3eec9aab9c682296e044063200vboxsync
e2f182ec6538ad3eec9aab9c682296e044063200vboxsync# chkconfig: 35 30 60
e85b92d4df013df97a72864a412eb94eb3f70acevboxsync# description: VirtualBox Linux Additions VFS kernel module
7c465e80d0699fab71706c8a013a3327ec7034dcvboxsync#
7c465e80d0699fab71706c8a013a3327ec7034dcvboxsync### BEGIN INIT INFO
7c465e80d0699fab71706c8a013a3327ec7034dcvboxsync# Provides: vboxvfs
7c465e80d0699fab71706c8a013a3327ec7034dcvboxsync# Required-Start: vboxadd
7c465e80d0699fab71706c8a013a3327ec7034dcvboxsync# Required-Stop:
b9c7eaa5e444d11199b5fceda5662dc5e7452f70vboxsync# Default-Start: 2 3 4 5
b9c7eaa5e444d11199b5fceda5662dc5e7452f70vboxsync# Default-Stop: 0 1 6
b9c7eaa5e444d11199b5fceda5662dc5e7452f70vboxsync# Description: VirtualBox Linux Additions VFS kernel module
b9c7eaa5e444d11199b5fceda5662dc5e7452f70vboxsync### END INIT INFO
8a1c8030e7ec543d637b7c206c99044ded25d1f7vboxsync
9d60c2d3e53e65bb430517a9b7335061bc508b09vboxsyncPATH=$PATH:/bin:/sbin:/usr/sbin
9d60c2d3e53e65bb430517a9b7335061bc508b09vboxsync
9d60c2d3e53e65bb430517a9b7335061bc508b09vboxsync[ -f /lib/lsb/init-functions ] || NOLSB=yes
9d60c2d3e53e65bb430517a9b7335061bc508b09vboxsync
6034392134865ffc1f0d2453a8ddd11b84d03db2vboxsyncif [ -n "$NOLSB" ]; then
6034392134865ffc1f0d2453a8ddd11b84d03db2vboxsync if [ -f /etc/redhat-release ]; then
3ea1dbf096240fc221aea99352a74c17a367a9b6vboxsync system=redhat
bff361262f6f9bda1094fc5f754259b8e0404718vboxsync elif [ -f /etc/SuSE-release ]; then
01df41f7a4e5f7de195a059541d1c89676da9673vboxsync system=suse
4252e037570a3c8d943552edb7858c9889aaca1dvboxsync elif [ -f /etc/gentoo-release ]; then
4252e037570a3c8d943552edb7858c9889aaca1dvboxsync system=gentoo
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncfi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncif [ -z "$NOLSB" ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync . /lib/lsb/init-functions
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fail_msg() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo ""
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync log_failure_msg "$1"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync succ_msg() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync log_end_msg 0
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync begin_msg() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync log_daemon_msg "$@"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncelse
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if [ "$system" = "redhat" ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync . /etc/init.d/functions
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fail_msg() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo -n " "
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo_failure
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo
7e032664d31552364e83b411950d6e7c96b0b880vboxsync echo " ($1)"
49ad08ab15f3b96d2d5ba5134a0506dd7b27fdf1vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync succ_msg() {
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync echo -n " "
49ad08ab15f3b96d2d5ba5134a0506dd7b27fdf1vboxsync echo_success
49ad08ab15f3b96d2d5ba5134a0506dd7b27fdf1vboxsync echo
49ad08ab15f3b96d2d5ba5134a0506dd7b27fdf1vboxsync }
f22cba796fd7499bf85058671a1af7cbe491c622vboxsync elif [ "$system" = "suse" ]; then
f22cba796fd7499bf85058671a1af7cbe491c622vboxsync . /etc/rc.status
f22cba796fd7499bf85058671a1af7cbe491c622vboxsync fail_msg() {
f22cba796fd7499bf85058671a1af7cbe491c622vboxsync rc_failed 1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync rc_status -v
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo " ($1)"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync succ_msg() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync rc_reset
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync rc_status -v
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync elif [ "$system" = "gentoo" ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync . /sbin/functions.sh
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fail_msg() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync eerror "$1"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync succ_msg() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync eend "$?"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync begin_msg() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync ebegin "$1"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if [ "`which $0`" = "/sbin/rc" ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync shift
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync else
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fail_msg() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo " ...failed!"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo " ($1)"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync succ_msg() {
7dfba437bd13a51c7e3ff98ca483289fbdbf8df1vboxsync echo " ...done."
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if [ "$system" != "gentoo" ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync begin_msg() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync [ -z "${1:-}" ] && return 1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if [ -z "${2:-}" ]; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo -n "$1"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync else
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo -n "$1: $2"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncfi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynckdir=/lib/modules/`uname -r`/misc
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncmodname=vboxvfs
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncmodule="$kdir/$modname"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncfailure()
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fail_msg "$1"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync exit 1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncrunning() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync lsmod | grep -q $modname[^_-]
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstart() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync begin_msg "Starting VirtualBox Additions shared folder support";
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync running || {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync modprobe $modname > /dev/null 2>&1 || {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if dmesg | grep "vboxConnect failed" > /dev/null 2>&1; then
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fail_msg "modprobe $modname failed"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo "You may be trying to run Guest Additions from binary release of VirtualBox"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo "in the Open Source Edition."
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync exit 1
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync fi
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync failure "modprobe $modname failed"
a82a728a5cd1d52145a3ca7406d8e84ba6e5b2d2vboxsync }
a82a728a5cd1d52145a3ca7406d8e84ba6e5b2d2vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync # Mount all vboxsf filesystems from /etc/fstab
a82a728a5cd1d52145a3ca7406d8e84ba6e5b2d2vboxsync mount -a -t vboxsf
a82a728a5cd1d52145a3ca7406d8e84ba6e5b2d2vboxsync succ_msg
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return 0
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync}
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncstop() {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync begin_msg "Stopping VirtualBox Additions shared folder support";
bf5c9a8b30aeef751e52cfe8a66250caab2fd6a2vboxsync # At first, unmount all vboxsf filesystems
71c944130c141978d2c36c720ff831a2105a63d0vboxsync if umount -a -t vboxsf 2>/dev/null; then
71c944130c141978d2c36c720ff831a2105a63d0vboxsync if running; then
bf5c9a8b30aeef751e52cfe8a66250caab2fd6a2vboxsync rmmod $modname || failure "Cannot unload module $modname"
7e032664d31552364e83b411950d6e7c96b0b880vboxsync fi
f22cba796fd7499bf85058671a1af7cbe491c622vboxsync succ_msg
f22cba796fd7499bf85058671a1af7cbe491c622vboxsync else
71c944130c141978d2c36c720ff831a2105a63d0vboxsync failure "Cannot unmount vboxvsf filesystems"
f22cba796fd7499bf85058671a1af7cbe491c622vboxsync fi
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync return 0
10183353efa12aa94e0f3dc78e0f1c47f7928e8dvboxsync}
ca551aca153d6df494985b5281c573ba2e3eb474vboxsync
af8d59d05d72f134aeea62712f1286b369807d52vboxsyncrestart() {
49ad08ab15f3b96d2d5ba5134a0506dd7b27fdf1vboxsync stop && start
af8d59d05d72f134aeea62712f1286b369807d52vboxsync return 0
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync}
c12885bf3de22fa504a7b9ddc41473b485d9ab25vboxsync
c12885bf3de22fa504a7b9ddc41473b485d9ab25vboxsyncdmnstatus() {
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync if running; then
28471851c9621fb51b7968142cce9791928d65d1vboxsync echo "VirtualBox Additions shared folder support is currently running."
28471851c9621fb51b7968142cce9791928d65d1vboxsync else
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync echo "VirtualBox Additions shared folder support is not currently running."
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
dmnstatus
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit