#! /bin/sh # # VirtualBox guest modules init script for Slackware. # Check architecture cpu=`uname -m`; case "$cpu" in i[3456789]86|x86) cpu="x86" lib_path="/usr/lib" ;; x86_64|amd64) cpu="amd64" if test -d "/usr/lib64"; then lib_path="/usr/lib64" else lib_path="/usr/lib" fi ;; esac dev=/dev/vboxguest userdev=/dev/vboxuser owner=vboxguest group=vboxguest vboxaddrunning() { lsmod | grep -q "vboxguest[^_-]" } running_vboxguest() { lsmod | grep -q "vboxguest[^_-]" } running_vboxadd() { lsmod | grep -q "vboxadd[^_-]" } running_vboxsf() { lsmod | grep -q "vboxsf[^_-]" } start() { # Modules loading echo -n "Starting the VirtualBox Guest Modules "; running_vboxguest || { rm -f $dev || { echo "Cannot remove $dev" } rm -f $userdev || { echo "Cannot remove $userdev" } /sbin/modprobe vboxguest >/dev/null 2>&1 || { echo "modprobe vboxguest failed" } sleep .5 } if [ ! -c $dev ]; then maj=`sed -n 's;\([0-9]\+\) vboxguest;\1;p' /proc/devices` if [ ! -z "$maj" ]; then min=0 else min=`sed -n 's;\([0-9]\+\) vboxguest;\1;p' /proc/misc` if [ ! -z "$min" ]; then maj=10 fi fi test -z "$maj" && { rmmod vboxguest 2>/dev/null echo "Cannot locate the VirtualBox device" } mknod -m 0664 $dev c $maj $min || { rmmod vboxguest 2>/dev/null echo "Cannot create device $dev with major $maj and minor $min" } fi chown $owner:$group $dev 2>/dev/null || { rm -f $dev 2>/dev/null rm -f $userdev 2>/dev/null rmmod vboxguest 2>/dev/null echo "Cannot change owner $owner:$group for device $dev" } if [ ! -c $userdev ]; then maj=10 min=`sed -n 's;\([0-9]\+\) vboxuser;\1;p' /proc/misc` if [ ! -z "$min" ]; then mknod -m 0666 $userdev c $maj $min || { rm -f $dev 2>/dev/null rmmod vboxguest 2>/dev/null echo "Cannot create device $userdev with major $maj and minor $min" } chown $owner:$group $userdev 2>/dev/null || { rm -f $dev 2>/dev/null rm -f $userdev 2>/dev/null rmmod vboxguest 2>/dev/null echo "Cannot change owner $owner:$group for device $userdev" } fi fi running_vboxsf || { /sbin/modprobe vboxsf > /dev/null 2>&1 || { if dmesg | grep "vboxConnect failed" > /dev/null 2>&1; then echo "Unable to start shared folders support. Make sure that your VirtualBox build" echo "supports this feature." exit 1 fi echo "modprobe vboxsf failed" } } # Mount all shared folders from /etc/fstab. Normally this is done by some # other startup script but this requires the vboxdrv kernel module loaded. # This isn't necessary anymore as the vboxsf module is autoloaded. # mount -a -t vboxsf echo " done" # End of modules loading return $RETVAL } stop() { RETVAL=0 echo -n "Stopping VirtualBox Guest Modules "; if grep -q "vboxsf" /proc/mounts ; then if ! umount -a -t vboxsf 2>/dev/null; then echo "Cannot unmount vboxsf folders" fi fi if running_vboxsf; then rmmod vboxsf 2>/dev/null || echo "Cannot unload module vboxsf" sleep 0.5 fi if running_vboxguest; then rmmod vboxguest 2>/dev/null || echo "Cannot unload module vboxguest" rm -f $userdev || echo "Cannot unlink $userdev" rm -f $dev || echo "Cannot unlink $dev" fi echo " done" return $RETVAL } restart() { stop start return 0 } dmnstatus() { if running_vboxguest; then echo "The VirtualBox Additions are currently loaded." else echo "The VirtualBox Additions are not currently loaded." fi } case "$1" in start) start ;; stop) stop ;; restart) restart ;; status) dmnstatus ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 esac exit