# Get service config - may override defaults
[ -f /etc/sysconfig/virtualbox ] && . /etc/sysconfig/virtualbox
+setup() {
+ modprobe -s $VBOX_MODULE
+ RETVAL=$?
+ if [ -d /dev/.udev ]; then
+ return $RETVAL
+ fi
+
+ # set proper $VBOX_DEVICE for systems with static dev
+ show "Setting $VBOX_DEVICE entry"; busy
+ rm -f $VBOX_DEVICE
+ VBOX_MAJOR=$(awk -vdevice="${VBOX_DEVICE#/dev/}" '$2 == device {print $1}' /proc/devices)
+ if [ -n "$VBOX_MAJOR" ]; then
+ VBOX_MINOR=0
+ else
+ VBOX_MINOR=$(awk -vdevice="${VBOX_DEVICE#/dev/}" '$2 == device {print $1}' /proc/misc)
+ if [ -n "$VBOX_MINOR" ]; then
+ VBOX_MAJOR=$(awk '$2 == "misc" {print $1}' /proc/devices)
+ fi
+ fi
+
+ if [ -z "$VBOX_MAJOR" ]; then
+ /sbin/rmmod $VBOX_MODULE
+ RETVAL=1
+ elif ! mknod -m 0660 $VBOX_DEVICE c $VBOX_MAJOR $VBOX_MINOR; then
+ RETVAL=$?
+ rmmod $VBOX_MODNAME
+ fail
+ elif ! chown root:vbox $VBOX_DEVICE; then
+ RETVAL=$?
+ fail
+ else
+ ok
+ fi
+ return $RETVAL
+}
+
start() {
- if [ -f /var/lock/subsys/vboxnetadp ]; then
+ if [ -f /var/lock/subsys/$VBOX_MODULE ]; then
return
fi
- modprobe -s $VBOX_MODULE
- touch /var/lock/subsys/vboxnetadp
+ setup || exit $?
+ touch /var/lock/subsys/$VBOX_MODULE
}
stop() {
# NOTE: rmmod will wait if device is in use, so automatic rmmod probably is not the best idea
/sbin/rmmod $VBOX_MODULE
- rm -f /var/lock/subsys/vboxnetadp
+ rm -f /var/lock/subsys/$VBOX_MODULE
}
condrestart() {
- if [ -f /var/lock/subsys/vboxnetadp ]; then
+ if [ -f /var/lock/subsys/$VBOX_MODULE ]; then
stop
start
else
force-reload)
condrestart 7
;;
+ setup)
+ setup
+ ;;
status)
if ! is_module $VBOX_MODULE; then
echo "$VBOX_MODULE module is loaded"
echo "$VBOX_MODULE module is not loaded"
RETVAL=3
fi
+ if [ ! -c $VBOX_DEVICE ]; then
+ echo "$VBOX_DEVICE does not exist"
+ RETVAL=3
+ else
+ echo "$VBOX_DEVICE exists with major/minor $(ls -l $VBOX_DEVICE | awk '{print $5 $6}')"
+ fi
;;
*)
- msg_usage "$0 {start|stop|restart|try-restart|force-reload|status}"
+ msg_usage "$0 {start|stop|restart|try-restart|force-reload|setup|status}"
exit 3
esac