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. ...
- 02-09-2010 #1Just Joined!
- Join Date
- Feb 2010
- Posts
- 1
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 :
- 02-10-2010 #2Just 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.


Reply With Quote