diff --git a/VirtualBox/src/VBox/Additions/linux/installer/vboxadd-timesync.sh b/VirtualBox/src/VBox/Additions/linux/installer/vboxadd-timesync.sh index e0bdc9b..ec46afb 100644 --- a/VirtualBox/src/VBox/Additions/linux/installer/vboxadd-timesync.sh +++ b/VirtualBox/src/VBox/Additions/linux/installer/vboxadd-timesync.sh @@ -30,187 +30,17 @@ # Description: VirtualBox Additions timesync ### END INIT INFO -PATH=$PATH:/bin:/sbin:/usr/sbin +# Do not load RH compatibility interface. +WITHOUT_RC_COMPAT=1 -system=unknown -if [ -f /etc/redhat-release ]; then - system=redhat - PIDFILE="/var/lock/subsys/vboxadd-timesync" -elif [ -f /etc/SuSE-release ]; then - system=suse - PIDFILE="/var/lock/subsys/vboxadd-timesync" -elif [ -f /etc/debian_version ]; then - system=debian - PIDFILE="/var/run/vboxadd-timesync" -elif [ -f /etc/gentoo-release ]; then - system=gentoo - PIDFILE="/var/run/vboxadd-timesync" -elif [ -f /etc/arch-release ]; then - system=arch - PIDFILE="/var/run/vboxadd-timesync" -elif [ -f /etc/slackware-version ]; then - system=slackware - PIDFILE="/var/run/vboxadd-timesync" -else - system=other - if [ -d /var/run -a -w /var/run ]; then - PIDFILE="/var/run/vboxadd-timesync" - fi -fi - -if [ "$system" = "redhat" ]; then - . /etc/init.d/functions - fail_msg() { - echo_failure - echo - } - - succ_msg() { - echo_success - echo - } - - begin() { - echo -n "$1" - } -fi - -if [ "$system" = "suse" ]; then - . /etc/rc.status - daemon() { - startproc ${1+"$@"} - } - - fail_msg() { - rc_failed 1 - rc_status -v - } - - succ_msg() { - rc_reset - rc_status -v - } - - begin() { - echo -n "$1" - } -fi - -if [ "$system" = "debian" ]; then - daemon() { - start-stop-daemon --start --exec $1 -- $2 - } - - killproc() { - start-stop-daemon --stop --exec $@ - } +# Source function library. +. /etc/init.d/functions - fail_msg() { - echo " ...fail!" - } - - succ_msg() { - echo " ...done." - } - - begin() { - echo -n "$1" - } -fi - -if [ "$system" = "gentoo" ]; then - . /sbin/functions.sh - daemon() { - start-stop-daemon --start --exec $1 -- $2 - } - - killproc() { - start-stop-daemon --stop --exec $@ - } - - fail_msg() { - echo " ...fail!" - } - - succ_msg() { - echo " ...done." - } - - begin() { - echo -n "$1" - } - - if [ "`which $0`" = "/sbin/rc" ]; then - shift - fi -fi +LOCKFILE="/var/lock/subsys/vboxadd-timesync" +PIDFILE="/var/run/vboxadd-timesync" +RETVAL=0 -if [ "$system" = "arch" ]; then - USECOLOR=yes - . /etc/rc.d/functions - daemon() { - $@ - test $? -eq 0 && add_daemon `basename $1` - } - - killproc() { - killall $@ - rm_daemon `basename $@` - } - - fail_msg() { - stat_fail - } - - succ_msg() { - stat_done - } -fi - -if [ "$system" = "slackware" ]; then - daemon() { - $1 $2 - } - - killproc() { - killall $1 - rm -f $PIDFILE - } - - fail_msg() { - echo " ...fail!" - } - - succ_msg() { - echo " ...done." - } - - status() { - echo -n "Checking for vboxadd-timesync" - if [ -f /var/run/$1 ]; then - echo " ...running" - else - echo " ...not running" - fi - } - -fi - -if [ "$system" = "other" ]; then - fail_msg() { - echo " ...fail!" - } - - succ_msg() { - echo " ...done." - } - - begin() { - echo -n "$1" - } -fi - -binary=/usr/sbin/vboxadd-timesync +binary=vboxadd-timesync test -x "$binary" || { echo "Cannot run $binary" @@ -222,32 +52,20 @@ vboxaddrunning() { } start() { - if ! test -f $PIDFILE; then - begin "Starting VirtualBox host to guest time synchronization "; - vboxaddrunning || { - echo "VirtualBox Additions module not loaded!" - exit 1 - } - daemon $binary --daemonize + if vboxaddrunning; then + action "Starting VirtualBox host to guest time synchronization: " \ + start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" -- $binary --daemonize RETVAL=$? - test $RETVAL -eq 0 && touch $PIDFILE - succ_msg + else + echo "VirtualBox Additions module not loaded!" + RETVAL=2 fi return $RETVAL } stop() { - if test -f $PIDFILE; then - begin "Stopping VirtualBox host to guest time synchronisation "; - vboxaddrunning || { - echo "VirtualBox Additions module not loaded!" - exit 1 - } - killproc $binary - RETVAL=$? - test $RETVAL -eq 0 && rm -f $PIDFILE - succ_msg - fi + stop_daemon --lockfile "$LOCKFILE" -- $binary + RETVAL=$? return $RETVAL } @@ -255,10 +73,6 @@ restart() { stop && start } -dmnstatus() { - status vboxadd-timesync -} - case "$1" in start) start @@ -270,7 +84,7 @@ restart) restart ;; status) - dmnstatus + status vboxadd-timesync ;; *) echo "Usage: $0 {start|stop|restart|status}" diff --git a/VirtualBox/src/VBox/Additions/linux/installer/vboxadd.sh b/VirtualBox/src/VBox/Additions/linux/installer/vboxadd.sh index 6491117..6e0f579 100644 --- a/VirtualBox/src/VBox/Additions/linux/installer/vboxadd.sh +++ b/VirtualBox/src/VBox/Additions/linux/installer/vboxadd.sh @@ -30,115 +30,14 @@ # Description: VirtualBox Linux Additions kernel modules ### END INIT INFO -PATH=$PATH:/bin:/sbin:/usr/sbin -BUILDVBOXADD=`/bin/ls /usr/src/vboxadd*/build_in_tmp 2>/dev/null|cut -d' ' -f1` -BUILDVBOXVFS=`/bin/ls /usr/src/vboxvfs*/build_in_tmp 2>/dev/null|cut -d' ' -f1` -LOG="/var/log/vboxadd-install.log" +# Do not load RH compatibility interface. +WITHOUT_RC_COMPAT=1 -if [ -f /etc/arch-release ]; then - system=arch -elif [ -f /etc/redhat-release ]; then - system=redhat -elif [ -f /etc/SuSE-release ]; then - system=suse -elif [ -f /etc/gentoo-release ]; then - system=gentoo -else - system=other -fi +# Source function library. +. /etc/init.d/functions -if [ "$system" = "arch" ]; then - USECOLOR=yes - . /etc/rc.d/functions - fail_msg() { - stat_fail - } - - succ_msg() { - stat_done - } - - begin() { - stat_busy "$1" - } -fi - -if [ "$system" = "redhat" ]; then - . /etc/init.d/functions - fail_msg() { - echo_failure - echo - } - succ_msg() { - echo_success - echo - } - begin() { - echo -n "$1" - } -fi - -if [ "$system" = "suse" ]; then - . /etc/rc.status - fail_msg() { - rc_failed 1 - rc_status -v - } - succ_msg() { - rc_reset - rc_status -v - } - begin() { - echo -n "$1" - } -fi - -if [ "$system" = "gentoo" ]; then - if [ -f /sbin/functions.sh ]; then - . /sbin/functions.sh - elif [ -f /etc/init.d/functions.sh ]; then - . /etc/init.d/functions.sh - fi - fail_msg() { - eend 1 - } - succ_msg() { - eend $? - } - begin() { - ebegin $1 - } - if [ "`which $0`" = "/sbin/rc" ]; then - shift - fi -fi - -if [ "$system" = "other" ]; then - fail_msg() { - echo " ...fail!" - } - succ_msg() { - echo " ...done." - } - begin() { - echo -n $1 - } -fi - -dev=/dev/vboxadd -owner=vboxadd -group=1 - -fail() -{ - if [ "$system" = "gentoo" ]; then - eerror $1 - exit 1 - fi - fail_msg - echo "($1)" - exit 1 -} +LOCKFILE=/var/lock/subsys/virtualbox-addition +RETVAL=0 running_vboxadd() { @@ -152,149 +51,77 @@ running_vboxvfs() start() { - begin "Starting VirtualBox Additions "; - running_vboxadd || { - rm -f $dev || { - fail "Cannot remove $dev" - } - - modprobe vboxadd >/dev/null 2>&1 || { - fail "modprobe vboxadd failed" - } - sleep .5 - } - if [ ! -c $dev ]; then - maj=`sed -n 's;\([0-9]\+\) vboxadd;\1;p' /proc/devices` - if [ ! -z "$maj" ]; then - min=0 - else - min=`sed -n 's;\([0-9]\+\) vboxadd;\1;p' /proc/misc` - if [ ! -z "$min" ]; then - maj=10 - fi - fi - test -z "$maj" && { - rmmod vboxadd 2>/dev/null - fail "Cannot locate the VirtualBox device" - } - - mknod -m 0664 $dev c $maj $min || { - rmmod vboxadd 2>/dev/null - fail "Cannot create device $dev with major $maj and minor $min" - } - fi - chown $owner:$group $dev 2>/dev/null || { - rmmod vboxadd 2>/dev/null - fail "Cannot change owner $owner:$group for device $dev" - } - - if [ -n "$BUILDVBOXVFS" ]; then - running_vboxvfs || { - modprobe vboxvfs > /dev/null 2>&1 || { - if dmesg | grep "vboxConnect failed" > /dev/null 2>&1; then - fail_msg - echo "You may be trying to run Guest Additions from binary release of VirtualBox" - echo "in the Open Source Edition." - exit 1 - fi - fail "modprobe vboxvfs failed" - } - } + action "Loading VirtualBox module (vboxadd):" modprobe vboxadd + local RETVAL=$? + action "Loading VirtualBox module (vboxvfs):" modprobe vboxvfs + RETVAL2=$? + if [ $RETVAL2 = 0 ]; then + mount -a -t vboxsf + else + [ $RETVAL = 0 ] && RETVAL=$RETVAL2 fi - - # Mount all shared folders from /etc/fstab. Normally this is done by some - # other startup script but this requires the vboxdrv kernel module loaded. - mount -a -t vboxsf - - succ_msg - return 0 + [ $RETVAL = 0 ] && touch "$LOCKFILE" ||: + return $RETVAL } stop() { - begin "Stopping VirtualBox Additions "; - if !umount -a -t vboxsf 2>/dev/null; then - fail "Cannot unmount vboxsf folders" - fi - if [ -n "$BUILDVBOXVFS" ]; then - if running_vboxvfs; then - rmmod vboxvfs 2>/dev/null || fail "Cannot unload module vboxvfs" - fi + action "Unmount VirtualBox VFS folders: ": umount -a -t vboxsf 2>/dev/null && + if running_vboxvfs; then + action "Unloading VirtualBox module (vboxvfs):" modprobe -r vboxvfs fi + local RETVAL0=$? if running_vboxadd; then - rmmod vboxadd 2>/dev/null || fail "Cannot unload module vboxadd" - rm -f $dev || fail "Cannot unlink $dev" + action "Unloading VirtualBox module (vboxadd):" modprobe -r vboxadd fi - succ_msg - return 0 + RETVAL=$? + [ $RETVAL0 = 0 -a $RETVAL = 0 ] && rm -f "$LOCKFILE" ||: + return $RETVAL } restart() { stop && start - return 0 } -setup() +status() { - # don't stop the old modules here -- they might be in use - if find /lib/modules/`uname -r` -name "vboxvfs\.*" 2>/dev/null|grep -q vboxvfs; then - begin "Removing old VirtualBox vboxvfs kernel module" - find /lib/modules/`uname -r` -name "vboxvfs\.*" 2>/dev/null|xargs rm -f 2>/dev/null - succ_msg - fi - if find /lib/modules/`uname -r` -name "vboxadd\.*" 2>/dev/null|grep -q vboxadd; then - begin "Removing old VirtualBox vboxadd kernel module" - find /lib/modules/`uname -r` -name "vboxadd\.*" 2>/dev/null|xargs rm -f 2>/dev/null - succ_msg - fi - begin "Recompiling VirtualBox kernel modules" - if ! $BUILDVBOXADD \ - --save-module-symvers /tmp/vboxadd-Module.symvers \ - --no-print-directory install > $LOG 2>&1; then - fail "Look at $LOG to find out what went wrong" - fi - if [ -n "$BUILDVBOXVFS" ]; then - if ! $BUILDVBOXVFS \ - --use-module-symvers /tmp/vboxadd-Module.symvers \ - --no-print-directory install >> $LOG 2>&1; then - fail "Look at $LOG to find out what went wrong" - fi - fi - succ_msg start - echo - echo "You should reboot your guest to make sure the new modules are actually used" -} - -dmnstatus() -{ if running_vboxadd; then echo "The VirtualBox Additions are currently running." + elif [ -f "$LOCKFILE" ]; then + echo "The VirtualBox Additions module is not loaded, but subsystem is locked" + RETVAL=2 else - echo "The VirtualBox Additions are not currently running." + echo "The VirtualBox Additions are not currently running" fi } +# See how we were called. case "$1" in -start) - start - ;; -stop) - stop - ;; -restart) - restart - ;; -setup) - setup - ;; -status) - dmnstatus - ;; -*) - echo "Usage: $0 {start|stop|restart|status}" - exit 1 + start) + start + ;; + stop) + stop + ;; + restart) + restart + ;; + condstop) + if [ -e "$LOCKFILE" ]; then + stop + fi + ;; + condrestart) + # Do nothing on package upgrade + ;; + status) + status + ;; + *) + msg_usage "${0##*/} {start|stop|restart|condstop|condrestart|status}" + RETVAL=1 esac -exit +exit $RETVAL