Find the answer to your Linux question:
Results 1 to 2 of 2
Hi there, I'm working to make guest OS run as no privileged user. I've found a script made by an Italian guy that should start the guest instance during boot. ...
  1. #1
    Just Joined!
    Join Date
    Feb 2010
    Posts
    1

    Lightbulb VirtualBox init script for no root user

    Hi there,
    I'm working to make guest OS run as no privileged user.
    I've found a script made by an Italian guy that should start the guest instance during boot. Unfortunately the script was made for Debian and as I'm not confident with bash, I'm having some difficulties in making it work under RedHat 5.3

    launched as root

    vbox-ithaca start
    vbox-ithaca: line 116: log_daemon_msg: command not found
    sudo: VBoxManage startvm ithaca --type vrdp: command not found
    vbox-ithaca: line 119: log_end_msg: command not found

    these errors to me basically say that those commands aren't in PATH, but I couldn't find them anywhere

    Code:
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides: VirtualBox - VM di Prova
    # Default-Start: 2 3 4 5
    # Default-Stop: S 0 1 6
    ### END INIT INFO
    
    # Author: Ferdinando Bassi per Debianizzati.org
    
    # Do NOT "set -e"
    
    # PATH should only include /usr/* if it runs after the mountnfs.sh script
    PATH=/usr/sbin:/usr/bin:/sbin:/bin
    
    #
    # DA CAMBIARE E DA ADATTARE
    #
    # Name given to the virtual machine
    VM_NAME="ithaca"
    
    # Name of this file, excluding /etc/init.d/
    THIS_FILE=vbox-ithaca
    
    # Username to run as
    RUNAS_USERNAME=vbox
    
    #
    # FINE SEZIONE DA MODIFICARE
    #
    
    DESC="VirtualBox - ${VM_NAME}"
    DAEMON=/usr/bin/VBoxVRDP
    DAEMON_ARGS="-startvm \"${VM_NAME}\""
    PIDFILE=/var/run/$THIS_FILE.pid
    SCRIPTNAME=/etc/init.d/$THIS_FILE
    
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
    
    # Read configuration variable file if it is present
    [ -r /etc/default/$THIS_FILE ] && . /etc/default/$THIS_FILE
    
    # Load the VERBOSE setting and other rcS variables
    [ -f /etc/default/rcS ] && . /etc/default/rcS
    
    # Define LSB log_* functions.
    # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
    . /lib/lsb/init-functions
    
    #
    # Function that starts the daemon/service
    #
    do_start()
    {
    # Return
    # 0 if daemon has been started
    # 1 if daemon was already running
    # 2 if daemon could not be started
    #start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
    #|| return 1
    #start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
    #$DAEMON_ARGS \
    #|| return 2
    # Add code here, if necessary, that waits for the process to be ready
    # to handle requests from services started subsequently which depend
    # on this one. As a last resort, sleep for some time.
    
    sudo -H -u $RUNAS_USERNAME "VBoxManage startvm ${VM_NAME} --type vrdp"
    }
    
    #
    # Function that stops the daemon/service
    #
    do_stop()
    {
    # Return
    # 0 if daemon has been stopped
    # 1 if daemon was already stopped
    # 2 if daemon could not be stopped
    # other if a failure occurred
    start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $THIS_FILE
    RETVAL="$?"
    [ "$RETVAL" = 2 ] && return 2
    # Wait for children to finish too if this is a daemon that forks
    # and if the daemon is only ever run from this initscript.
    # If the above conditions are not satisfied then add some other code
    # that waits for the process to drop all resources that could be
    # needed by services started subsequently. A last resort is to
    # sleep for some time.
    
    sudo -H -u $RUNAS_USERNAME "VBoxManage controlvm ${VM_NAME} savestate"
    
    start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
    [ "$?" = 2 ] && return 2
    # Many daemons don't delete their pidfiles when they exit.
    rm -f $PIDFILE
    return "$RETVAL"
    }
    
    #
    # Function that sends a SIGHUP to the daemon/service
    #
    do_reload() {
    #
    # If the daemon can reload its configuration without
    # restarting (for example, when it is sent a SIGHUP),
    # then implement that here.
    #
    # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
    echo "Reload not supported"
    return 0
    }
    
    case "$1" in
    start)
    [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$THIS_FILE"
    do_start
    case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
    stop)
    [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$THIS_FILE"
    do_stop
    case "$?" in
    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
    #reload|force-reload)
    #
    # If do_reload() is not implemented then leave this commented out
    # and leave 'force-reload' as an alias for 'restart'.
    #
    #log_daemon_msg "Reloading $DESC" "$NAME"
    #do_reload
    #log_end_msg $?
    #;;
    *)
    #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
    echo "Usage: $SCRIPTNAME {start|stop}" >&2
    exit 3
    ;;
    esac
    
    :

  2. #2
    Just Joined!
    Join Date
    Feb 2005
    Location
    Boulder, Colorado, USA
    Posts
    7
    First, the VirtualBoxManage command is installed when you install the VirtualBox-OSE package. If that command is not available, you need to install that package.

    Second, replace the log-daemon-msg command everywhere it occurs in the script by a simple echo.

    Third, the script, as written, assumes that you have an image file, called "ithaca" available and debugged.

    Fourth, good luck.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
...