Rodando uma VM em background no VirtualBox

Ha pouco tempo resolvi abandonar o Hyper-V e voltar a utilizar o VirtualBox. Para o que preciso ele é mais simples e prático, mas não tem uma funcionalidade que é essencial: A capacidade de manter as VMs ligadas em background. Bom, não tem a funcionalidade, mas não quer dizer que ele não consiga deixar uma VM rodando em background. Neste post vou mostrar como fazer isso e dar uma sugestão de como ligar/desligar a vm automaticamente.

A primeira coisa que você tem que fazer é: localizar o arquivo VBoxManage.exe. Geralmente ele está no diretório “c:\Program Files\Oracle\VirtualBox”. Então, para o post, vou utilizar este caminho, mas você deve altera-lo, caso o seu seja diferente.

O comando para iniciar a maquina virtual sem a parte visual, fazendo com que ela fique rodando no background é um tipo de execução chamado ‘headless’.

 

Ligar a maquina virtual

Para ligar uma VM assim, basta utilizar o comando:

"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "nome da sua vm" –type headless

 

 

Listar maquinas virtuais instaladas

O nome da VM é, literalmente, aquele que você colocou quando a criou. Caso não lembre, existe um comando para listar as maquinas virtuais disponíveis:

"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list vms

O comando acima vai listar as maquinas disponíveis, mostrando o nome e o id de cada uma.

 

Desligar a maquina virtual

Desligar a VM utilizando linha de comando também é algo fácil, basta utilizar o comando:

"c:\Program Files\Oracle\VirtualBox\VBoxManage.exe" controlvm "nome da sua vm" poweroff soft

 

O comando acima faz com que a VM em questão seja desligada e o argumento “soft” faz com que o VirtualBox não desligue a maquina ‘puxando o cabo da tomada’. Todavia, vale lembrar que isso faz com que o processo demore um pouco mais (porém é mais seguro).

 

Inicialização automática da VM

Para fazer com que a maquina seja inicializada automaticamente quando o computador (físico) ligar, você pode:

 

1. Pasta Inicializar do Windows

  1. Aperte Windows + R, digite: shell:startup e aperte enter;
  2. Na pasta que vai abrir, crie um arquivo e insira o comando de iniciar a maquina (veja acima);
  3. Salve este arquivo como iniciar_vm.bat (pode mudar o nome, se preferir. desde que a extensão seja .bat)

Pronto. Sua VM irá iniciar automaticamente e ficará rodando em background!

 

 

2. Agendando tarefas

A segunda maneira seria agendando uma tarefa no Windows. O Agendador de tarefas é uma ferramenta muito útil e muito grande para ser totalmente explicada neste post. Então vou focar apenas na criação da tarefa específica.

  1. Aperte Windows + R, digite: taskschd.msc e aperte enter;
  2. Clique no menu actions (ações) e escolha a opção “create basic task” (criar tarefa básica);
  3. Na janela que abrir, você deve informar o nome da tarefa, que pode ser qualquer coisa. Este nome é para te ajudar a manter as coisas organizadas. Sugiro algo como “Inicia VM xpto automaticamente”. Também existe um campo de descrição, mas ele é opcional;
  4. Quando preencher os campos, clique em Next (Próximo)
  5. Será exibida uma lista de tipos de agendamento. Escolha a opção “When the computer starts” (Quando o computador iniciar) e clique em Next (Próximo);
  6. Na lista de ações, selecioneStart a program” (Iniciar um programa) e clique em Next (Próximo);
  7. Esta é a tela mais importante para o que estamos fazendo. No campo “Program/script” (Programa/Script), informe o endereço: “c:\Program Files\Oracle\VirtualBox\VBoxManage.exe“. Inclua as aspas, pois os diretórios possuem espaços no nome. (Lembre-se de adaptar o caminho para o arquivo, se ele ficar em um local diferente na sua maquina);
  8. No campo “Add arguments (optional)” (Argumentos (opcionais)), informe a outra parte da linha de comando: startvm “nome da sua vm” –type headless;
  9. Quando terminar, clique em próximo e depois em Finish (Concluir).

 

Pronto! Quando você ligar seu computador, esta tarefa será executada automaticamente e a sua VM começará a rodar em background.

Extra!
Se você optar por este método, pode criar também uma tarefa que será executada no momento em que o computador for desligado.
Para isso, repita o passo a passo acima, mas no passo 5 escolha a opção: “When a specific event is logged” (Quando um evento específico ocorrer) e clique em Next (Próximo) e preencha os campos da próxima tela com os dados abaixo:

  • Log: System
  • Source: USER32
  • Event ID: 1074

Clique em Next (Proximo).

Agora basta terminar de seguir o passo a passo anterior até o passo 8. Neste ponto, ao invés de colocar os argumentos para iniciar a maquina, você vai colar os argumentos necessários para o comando de desligar a VM (controlvm “nome da sua vm” poweroff soft).

Conclua a operação e pronto:  Agora você tem duas tarefas sendo executadas automaticamente: a de fazer a maquina virtual rodar em background e a de desliga-la!

(Dependendo da VM que você criar, pode ser que ela segure o processo de shutdown. Vale testar.)

 

Existe uma terceira forma, que é utilizando as politicas de grupo do Windows, mas vou deixar este método para um momento futuro.

 

 

Espero ter ajudado!

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Conhecimento Técnico, Dev, Software, Suporte and tagged , , , .