Inicie o VirtualBox Headless VM On Boot

5

Estou executando duas VMs headless do VirtualBox em um host do Ubuntu 12.04. Eu gostaria que essas VMs iniciassem automaticamente quando o sistema for inicializado.

Eu tenho duas entradas crontab configuradas assim (sob o usuário que possui as VMs):

@reboot /usr/bin/vboxheadless -startvm io
@reboot /usr/bin/vboxheadless -startvm pbx

Mas parece que isso não funciona. Se eu executar o comando diretamente do terminal, as máquinas iniciam sem problemas, mas parece que não consigo iniciar o sistema assim que o sistema é iniciado. Eu estou pensando que talvez o crontab esteja rodando antes que o programa / biblioteca do VirtualBox seja carregado.

Como inicio essas VMs automaticamente?

    
por muncherelli 06.09.2012 / 18:30

3 respostas

6

Isso é o que eu uso. Inicia as VMs na inicialização e salva seu estado no desligamento / reinicialização

#!/bin/bash
### BEGIN INIT INFO
# Provides:       vmboot
# Required-Start: vboxdrv
# Required-Stop:
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description: Stop/Start VMs on System shutdown
### END INIT INFO

VBOXUSER=vboxuser
SU="sudo -H -u $VBOXUSER"
VBOXMANAGE=/usr/bin/VBoxManage
VBOXHEADLESS=/usr/bin/VBoxHeadless
RUNNINGVMS=$($SU $VBOXMANAGE --nologo list runningvms | sed -e 's/^".*".*{\(.*\)}//')
ALLVMS=$($SU $VBOXMANAGE --nologo list vms | sed -e 's/^".*".*{\(.*\)}//')

case $1 in
stop)
if [[ -n $RUNNINGVMS ]]; then
echo "Saving the state of all running VMs..."
for v in $RUNNINGVMS; do
    $SU $VBOXMANAGE --nologo controlvm $v savestate
done
fi
;;
start)
for v in $ALLVMS; do
if [[ -n $($SU $VBOXMANAGE --nologo showvminfo $v | grep saved) ]]; then
    echo "Restoring VMs..." && $SU $VBOXHEADLESS -s $v & > /dev/null
fi
done
;;
*)
echo "Usage: /etc/init.d/vmboot start | stop"; exit 1
;;
esac
exit 0

Basta salvá-lo em /etc/init.d. Eu nomeei o meu vbox. Execute update-rc.d <script name> defaults e você deve estar pronto.

    
por 06.01.2013 / 08:00
1

Eu suspeito que você esteja logado com uma conta diferente de root quando inicia as VMs manualmente, enquanto cron é executado como root e, portanto, não sabe sobre suas VMs. Você pode verificar isso executando o comando

sudo /usr/bin/vboxheadless -startvm io

Se você receber um erro

Invalid machine name or UUID!

a VM não está registrada na conta raiz. Nesse caso, crie um script de shell para executar os comandos na sua conta e agende esse script com cron :

#!/bin/sh

USERNAME=...

su -c "/usr/bin/vboxheadless -startvm io" - $USERNAME
su -c "/usr/bin/vboxheadless -startvm pbx" - $USERNAME
    
por 06.09.2012 / 18:58
0

Uma opção secundária também se a visualização de hardware de suporte ao seu MB / CPU for ProxMox. É uma instalação auto-contida de Linux, KVM e uma interface web. Ele tem um desempenho muito melhor sobre o VirtualBox enquanto ele é executado em um nível de kernel e em vez de unidades "virtuais" apenas como VirtualBox você pode conectar um convidado sob KVM a uma unidade física que usa muito menos disco Io.

Verifique rapidamente se o seu sistema suporta visualização de hardware:

egrep -c '(vmx|svm)' /proc/cpuinfo
    
por 06.01.2013 / 09:08