Às vezes é preciso correr uma ou várias VM rapidamente sem ser preciso de abrir a interface do hypervisor (Virtualbox no meu caso). É o caso quando se trabalha em algum projecto específico ou se precisa de uma VM regularmente para cobrir funcionalidades não existentes no host.
Com o Windows e o Virtualbox há uma forma fácil de o fazer graças às opções do comando Vboxmanage.
Para correr uma VM sem utilizar o GUI (Graphical User Interface – Interface Gráfica), o objectivo é criar um ícone de atalho que execute um ficheiro com as opções para correr a VM desejada.
Vboxmanage é a interface de linha de comandos do Virtualbox. Com ele é possível fazer tudo o que se faz com o GUI e muito mais.
O executável vboxmanage.exe está na pasta de instalação do Virtualbox. No meu caso (e na maioria) é em “C:\Program Files\Oracle\VirtualBox”
Na lista enorme de opções e parâmetros deste comando existe a opção startvm.
Para o detalhe e síntaxe do comando e subcomandos pode consultar o guia do Virtualbox mas é muito melhor interagir directamente com o programa. Para tal, precisa de correr o Command Prompt do windows em modo privilegiado (Administrator).
------------------------------------------ Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\windows\system32> -----------------------------------------
Navegue para a pasta onde se encontra o comando.
------------------------------------------ C:\windows\system32> cd "\Program Files\Oracle\VirtualBox" C:\Program Files\Oracle\VirtualBox> ------------------------------------------
Execute o comando vboxmanage startvm
------------------------------------------
C:\Program Files\Oracle\VirtualBox>vboxmanage startvm
Usage:
VBoxManage startvm <uuid|vmname>...
[--type gui|sdl|headless|separate]
------------------------------------------
Para escolhar a máquina virtual a iniciar é possível identifica-la por 2 parâmetros: o nome da VM (vmname) ou o UUID (universal unique identifier). O nome é a forma mais fácil e rápida mas é um pouco arriscada porque o Virtualbox permite alterar o nome da VM e caso tal aconteça o atalho configurado deixa de funcionar.
A segunda opção, UUID, permite maior estabilidade pois este valor mantém-se inalterado desde que a máquina virtual é criada e mantém-se mesmo entre instalações e movendo a VM de um PC a outro.
Mas como saber o UUID da VM pretendida?
O comando vboxmanage tem mais uma vez a solução.
------------------------------------------
C:\Program Files\Oracle\VirtualBox>vboxmanage startvm
Usage:
VBoxManage startvm <uuid|vmname>...
[--type gui|sdl|headless|separate]
C:\Program Files\Oracle\VirtualBox>vboxmanage list vms
"Windows 7" {3e51782a-761d-44c6-b494-94bc9f936c69}
"Lubuntu X86" {fea1fdc2-f542-4aea-9509-0b4bc0245de2}
"Lubuntu ADM64bit" {7a7758dc-b333-4c7d-806d-936add2c4494}
"TinyCoreLinux Core Plus" {dffde65e-f974-470b-a0f6-4663e29945d7}
"TinyCoreLinux Core Plus Local" {a631a3ba-6b8c-401b-bc3f-35f97ea10842}
"Lubuntu ADM64bit LOCAL" {d9e83eb2-3b8e-4cc4-b14a-e5620a9a0c27}
"Lubuntu X86 AMPPS" {8533742a-3524-46bc-8599-863c6288cc18}
------------------------------------------
vboxmanage list vms apresenta a relação entre nomes das máquinas virtuais (tal como aparecem no GUI do Virtualbox) e os UUID das VM.
Supondo que o meu interesse seja correr a VM “Lubuntu X86”. O comando para correr:
------------------------------------------ C:\Program Files\Oracle\VirtualBox>vboxmanage startvm fea1fdc2-f542-4aea-9509-0b4bc0245de2 Waiting for VM "fea1fdc2-f542-4aea-9509-0b4bc0245de2" to power on... VM "fea1fdc2-f542-4aea-9509-0b4bc0245de2" has been successfully started. ------------------------------------------
Dê alguns segundos e verá a máquina virtual a iniciar.
Depois disto, já temos o comando certo a executar para correr a VM.
Se receber o erro abaixo é porque não correu o comando como administrador.
----------------------------------------------- VBoxManage.exe: error: Could not launch a process for the machine ... (VERR_UNRESOLVED_ERROR) VBoxManage.exe: error: Details: code VBOX_E_IPRT_ERROR (0x80bb0005), component MachineWrap, interface IMachine, callee IUnknown VBoxManage.exe: error: Context: "LaunchVMProcess(a->session, sessionType.raw(), env.raw(), progress.asOutParam())" at line 589 of file VBoxManageMisc.cpp -----------------------------------------------
Reinicie a Command Prompt como administrador e tente de novo.
A criação do atalho
Para veteranos do Windows esta parte não deve doer muito. O atalho pode ser criado na pasta que desejar, no desktop (ambiente de trabalho) ou mesmo nos itens do menu iniciar. A escolha é sua.
A forma mais rápida para mim é localizar o ficheiro vboxmanage.exe, arrastar com o botão direito do mouse para a pasta onde se vai criar o atalho e de seguida clicar em Create Shortcut Here/Criar Atalho Aqui (as restantes opções no seu computador serão diferentes)
O atalho é criado no destino e precisamos apenas de alterar algumas opções. Para tal, clique direito sobre o atalho criado e Propriedades
Na janela que aparece, aba Shortcut/Atalho aumentar na caixa de texto Target o subcomando startvm e o UUID encontrado anteriormente.
O comando precisa de ser executado como administrador. Para tal, clica-se em Run as administrator na janela Advanced…
Clique em OK nesta janela e vá à aba General/Geral. Aí, no topo poderá definir o nome do atalho. No meu caso chamei de Lubuntu. Dê aquele que melhor ajuda a identificar a VM.
Clique em OK e o trabalho está terminado. O atalho é criado e basta um executar o atalho para correr a VM sem ser preciso escolher pelo GUI do Virtualbox.
Fica muito difícil explicar este tipo de dicas escrevendo, acho que vou começar a fazer vídeos…
Potencial
Qual a vantagem de ter um atalho ao invés de correr uma VM a partir da interface Virtualbox? Agilidade. Como expliquei no princípio, se usa regularmente determinada máquina virtual para testes, ter um OS diferente ou correr aplicações num ambiente sandbox é muito mais fácil e rápido o duplo click em um atalho.
O atalho criado pode também ser utilizado para iniciar uma VM com qualquer evento do Windows Task Scheduler/Agendador de Tarefas. O melhor exemplo deste caso é correr uma VM ao logo depois de se fazer o login.
Mas o maior potencial está quando se pensa em automação para levantar ambientes completos de várias VMs com um único batch script e a integração com outras aplicações. É assim que o GNS3 integra com o Virtualbox, por exemplo
Referência vboxmanage
Para ter informação detalhada do comando vboxmanage e começar a ter ideias para automatizar o seu ambiente:
https://www.virtualbox.org/manual/ch08.html#vboxmanage-startvm
Parabéns pelo post Mário Pinho, muito esclarecedor!
Estou com uma dúvida e talvez você possa me ajudar.
Tenho uma máquina virtual rodando um sistema linux que estou iniciando automaticamente via linha de comando junto com o windows hospedeiro. Acontece que dessa forma não abre a interface gráfica para acessar o sistema hospede e se tendo abrir pela interface do vbox ele tenta inicia-la novamente e da erro.
saberia me informar alguma maneira de abrir a interface gráfica dessa máquina que já esta iniciada?
Grato!
Olá Alexandre.
Acredito que a VM está a iniciar no modo “headless”.
Se for o caso, abra o GUI do virtualbox, clic-direito sobre a VM que iniciou e clique em “Show” ou use o menu “Machine – Show”.
Não consegui encontrar o equivalente usando o vboxmanage