VirtualBox демон
mordezmoi 4 октября, 2013 - 19:48
Халло! Нашел на просторах инета стартовый скрипт для ВБокса, и немного подправил его под нынешнюю версию. Выкладываю здесь, вдруг кому понадобится.
/etc/conf.d/virtualbox.example - например: virtualbox.VM1 , virtualbox.VM2 и т.д.
# Username to start vbox as, must be part of vboxusers group. VM_USER="nobody" # Virtual Machine Name VM_NAME="" # Shutdown Method: pause|resume|reset|poweroff|savestate|acpipowerbutton|acpisleepbutton VM_SHUTDOWN="acpipowerbutton" # Remote VRDE Server VM_VRDE="off"
/etc/init.d/virtualbox - ln -s /etc/init.d/virtualbox virtualbox.VM1 и т.д.
#!/sbin/runscript # Not sure why but gentoo forgot to add /opt/bin to the path. VBOXPATH="/usr/bin:/opt/bin" VBOXNAME="${SVCNAME#*.}" depend() { need net if [ "${SVCNAME}" != "virtualbox" ] ; then need virtualbox fi } checkconfig() { if [ ! -r /etc/conf.d/$SVCNAME ] ; then eerror "Please create /etc/conf.d/$SVCNAME" eerror "Sample conf: /etc/conf.d/virtualbox.example" return 1 fi return 0 } checkpath() { local r=0 if ! su $VM_USER -c "PATH=$VBOXPATH command -v VBoxHeadless &>/dev/null" ; then eerror "Could not locate VBoxHeadless" r=1 fi if ! su $VM_USER -c "PATH=$VBOXPATH command -v VBoxManage &>/dev/null" ; then eerror "Could not locate VBoxManage" r=1 fi if [ $r -gt 0 ] ; then eerror "Please verify the vm users path." fi return $r } isloaded() { lsmod | grep -q "$1[^_-]" } isvm() { [ $SVCNAME != "virtualbox" ] } loadmodules() { if ! isloaded vboxdrv ; then if ! modprobe vboxdrv > /dev/null 2>&1 ; then eerror "modprobe vboxdrv failed." return 1 fi fi if ! isloaded vboxnetadp ; then if ! modprobe vboxnetadp > /dev/null 2>&1 ; then eerror "modprobe vboxnetadp failed." return 1 fi fi if ! isloaded vboxnetflt ; then if ! modprobe vboxnetflt > /dev/null 2>&1 ; then eerror "modprobe vboxnetflt failed." return 1 fi fi if ! isloaded vboxpci ; then if ! modprobe vboxpci > /dev/null 2>&1 ; then eerror "modprobe vboxpci failed." return 1 fi fi return 0 } unloadmodules() { if isloaded vboxpci ; then if ! rmmod vboxpci > /dev/null 2>&1 ; then eerror "rmmod vboxpci failed." return 1 fi fi if isloaded vboxnetflt ; then if ! rmmod vboxnetflt > /dev/null 2>&1 ; then eerror "rmmod vboxnetflt failed." return 1 fi fi if isloaded vboxnetadp ; then if ! rmmod vboxnetadp > /dev/null 2>&1 ; then eerror "rmmod vboxnetadp failed." return 1 fi fi if isloaded vboxdrv ; then if ! rmmod vboxdrv > /dev/null 2>&1 ; then eerror "rmmod vboxdrv failed." return 1 fi fi return 0 } start() { # If we are the original virtualbox script [ $SVCNAME = "virtualbox" ] if ! isvm ; then ebegin "Starting Virtualbox" loadmodules eend $? else checkconfig || return $? checkpath || return $? ebegin "Starting Virtualbox: $VBOXNAME" su $VM_USER \ -c "PATH=$VBOXPATH VBoxHeadless --vrde $VM_VRDE -startvm \"$VM_NAME\" &>/dev/null" & pid=$! sleep 1 kill -CHLD $pid &>/dev/null eend $? fi } stop() { # If we are the original virtualbox script [ $SVCNAME = "virtualbox" ] if ! isvm ; then ebegin "Stopping Virtualbox" unloadmodules eend $? else checkconfig || return $? checkpath || return $? ebegin "Stopping Virtualbox: $VBOXNAME" su ${VM_USER} \ -c "PATH=$VBOXPATH \ VBoxManage controlvm \"$VM_NAME\" $VM_SHUTDOWN &>/dev/null" while [ \ "$(su ${VM_USER} \ -c "PATH=$VBOXPATH \ VBoxManage showvminfo \"$VM_NAME\" | grep State | grep runn")" != "" \ ] do echo -n "." sleep 5 done sleep 5 echo eend $? fi }
»
- Для комментирования войдите или зарегистрируйтесь