Criar máquina virtual no VirtualBox pelo shell (linha de comando)

No pacote padrão do VirtualBox há um gerenciador de máquinas virtuais para a linha de comando, chamado VBoxManage, capaz de realizar todas as configurações necessárias para criar e gerenciar máquinas virtuais pelo shell.

Vamos ver como podemos criar uma nova máquina virtual, preparar para iniciar a instalação do sistema operacional Windows XP a partir de uma ISO do cdrom de instalação e executa-lá no VirtualBox utilizando apenas comandos direto na console do Linux.


A máquina virtual sugerida neste post tem o nome XP Desktop, siga os passos a seguir para criá-la:

  • Crie a máquina virtual com o comando createvm do VBoxManage:
  • VBoxManage createvm --name "XP Desktop" --ostype WindowsXP --register
  • Com o comando modifyvm podemos modificar a configuração da máquina virtual. O comando abaixo modifica a máquina virtual XP Desktop conforme a tabela seguinte:
    VBoxManage modifyvm "XP Desktop" --memory 512 --vram 64 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0 --vrde on --usb on --usbehci on
    Parâmetro Descrição Valor
    –memory Quantidade de memória para a máquina virtual. Para um melhor funcionamento do sistema, este valor não deve ultrapassar 50% do total da memória do computador 512 Mb
    –vram Quantidade de memória para o vídeo 64 Mb
    –acpi Habilita o gerenciamento de energia ACPI on
    –boot1 Configura a unidade de DVD como primeiro disco da ordem dos discos de boot dvd
    –nic1 Adiciona uma placa de rede no modo Bridged bridged
    –bridgeadapter1 Vincula a placa de rede criada a um adaptador real da máquina anfitriã. Atenção ao nome do dispositivo adaptador de rede, neste exemplo estamos apontando para o dispositivo eth0, o seu pode ser diferente. eth0
    –vrde Habilita a conexão a área de trabalho remota on
    –usb Habilita o suporte para USB on
    –usbehci Habilita o suporte para USB 2.0 . Importante lembrar que para habilitar este recurso é necessário ter o Oracle VM VirtualBox Extension Pack previamente instalado, caso necessário acesse o post Instalar Oracle VM VirtualBox Extension Pack no Linux que descreve como instalar o extension pack. on
  • Para criar o disco virtual, podemos usar o createhd:
  • VBoxManage createhd --filename ~/winxp-20gb.vdi -size 20000

    O comando acima cria o disco virtual na pasta home do usuário logado, entretanto é permitido usar qualquer local com espaço suficiente para o tamanho do arquivo de disco virtual.

  • Para adicionar controladoras de disco, há o comando storagectl, no exemplo abaixo será adicionada na máquina virtual uma controladora IDE.
  • VBoxManage storagectl "XP Desktop" --name "IDE Controller" --add ide
  • Para anexar um disco virtual previamente criado a uma controladora de disco da máquina virtual, podemos usar o storageattach. Acompanhe o exemplo abaixo e a tabela dos parâmetros a seguir:
  • VBoxManage storageattach "XP Desktop" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium ~/winxp-20gb.vdi

    Parâmetro Descrição Valor
    –storagectl Nome da controladora da máquina virtual IDE Controller
    –port Porta da controladora na qual será conectado o disco virtual. 0
    –device Numero de ordem do dispositivo nesta porta da controladora. 0
    –type Define o tipo de dispositivo que será adicionado. hdd
    –medium Caminho do arquivo de disco virtual a ser anexado. ~/winxp-20gb.vdi
  • O comando para anexar uma imagem ISO a uma controladora de disco da máquina virtual, é muito similar ao para adicionar um disco rígido. Observe o exemplo que segue, nele anexamos na máquina virtual o ISO xp.iso:
  • VBoxManage storageattach "XP Desktop" --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium ~/xp.iso
  • Um recurso bastante interessante é o compartilhamento de arquivos entre o sistema instalado na máquina virtual e o sistema anfitrião. Para compartilhar uma pasta devemos usar o comando sharedfolder. No exemplo, cria-se um compartilhamento de nome temp que aponta para a pasta /tmp:
  • VBoxManage sharedfolder add "XP Desktop" --name "temp" --hostpath /tmp/

    Após instalado o sistema operacional na máquina virtual é possível acessar este compartilhamento SMB. Para acessar, inicie o sistema operacional Windows XP convidado recém-instalado e vá para o endereço \\VBOXSVR\ no Windows Explorer.

  • Com estas configurações mostradas, já teremos uma máquina virtual pronta para ser executada. Para iniciar a máquina virtual em segundo plano com acesso por RDP (Remote Desktop Protocol, mesmo que o Microsoft Terminal Services), execute o comando VBoxHeadless como segue:
  • VBoxHeadless -s "XP Desktop" &

    Enquanto a máquina virtual estiver executando, é possível acessar a sua console usando qualquer cliente Microsoft Terminal Services (RDP) apontando para o endereço de IP do sistema anfitrião.

20 comentários sobre “Criar máquina virtual no VirtualBox pelo shell (linha de comando)”

  1. Ola Gabriel, primeiramente gostaria de parabeniza-lo pelo belo tutorial, e dizer que acompanhei varios tutoriais pela internet e nao obtive exito, gracas ao seu agora tenho minha VM no linux via linha de comando. Obrigado pela ajuda.

  2. vou tentar essas paradas ai, mesmo que não funcione valew pelo tuto gabriel, eu nun tinha noção de como criar maquina virtual por linha de comando, tem pouca gente que sabe e muito pouca gente disposta a ensinar.. Valew Gabriel.

  3. nada.. Até desabilitei o fw mais nada, ele ainda fica vadiando quando inicio a vm e ainda mostra a mensagem de erro quando uso rdesktop, macabro isso.. Tava pensando em partir pro kvm, voce ja tento instalar alguma maquina virtual com o kvm?

    1. Que estranho bicho, tem que funcionar.

      Verifique no log Vbox.log se não há alguma mensagem de erro, algo como: “VRDE: VirtualBox Remote Desktop Extension is not available.”. O arquivo de log fica na pasta Logs na raiz da pasta onde está o arquivo vbox referente a máquina.

      Outras duas tentativas são:

      – Reinstalar o Extension Pack, sem ele, não funciona o VRDE, eu tenho um post que mostra como fazer, só clicar aqui e tentar.

      – Forçar subir com VRDE ligado, algo como: “VBoxHeadless –startvm “nome_da_maquina” –vrde on”

      * Com o KVM ainda não tive a oportunidade de trabalhar.

      Valeu

  4. tentei pelo rdesktop mais ele aponta um erro ao abrir o display, mais precisamente: ERROR: Failed to open Display .se for o que eu to pensando nao tem jeito mesmo, porque na maquina anfitria roda ubuntu server, ou seja, não tem interface grafica, é só comando, mais não sei se entendi certo, mais é o unico erro que ta aparecendo..

    1. Não há problema quanto ao anfitrião não ter ambiente gráfico, eu mesmo tenho várias instalações assim, pois o que você vai ver pelo terminal server é o equivalente ao monitor da máquina virtual, como um monitor de verdade, você vai poder acompanhar as mensagens de boot e tals, antes mesmo de entrar em qualquer ambiente gráfico.

      Veja se o firewall no teu Ubuntu Server não está bloqueando as conexões pelo 3389.

      Valeu!

  5. então Gabriel, como eu posso descobrir o ip dessa vm para acessar com o rdesktop?

    queria salientar algumas imformações: a maquina host roda ubuntu server e a virtual tambem deveria dar boot num UbuntuServer.iso

    1. O IP é o mesmo da máquina anfitriã, pois o RDP sobe no servidor da máquina virtual, não na maquina virtual em si, funciona como se você estivesse na console da máquina, numa máquina real equivale ao monitor físico dela, ou seja, você vê inclusive as mensagens de boot e afins, como num monitor de uma máquina real, assim não importa o IP da VM.

      Valeu!

  6. fala gabriel..

    Seguinte, minha vm inicia, mais nao da boot, coloquei uma iso pra dar boot na pasta root mais quando a vm inicia ela nao mostra nada, nao fais nada, só mostra isso:

    Oracle VM VirtualBox Headless Interface 4.2.16_Ubuntu
    (C) 2008-2013 Oracle Corporation
    All rights reserved.

    14/04/2014 14:26:36 Listening for VNC connections on TCP port 3389
    14/04/2014 14:26:36 Listening for VNC connections on TCP6 port 5900
    VRDE server is listening on port 3389.

    e mais nada….
    que cagada eu to fazendo gabriel…

    1. Laurence,

      A principio está tudo certo, o que acontece se você tentar acessar a máquina usando um remote desktop client (rdesktop e afins)? Consegue conectar?
      Pois aparentemente tua máquina está subindo normalmente.

      Valeu!

  7. amigo segui suas dicas no VOL e nao tive sucesso muito menos aqui segue abaixo os erros que aparecem no meu terminal

    Tue Nov 13 21:12:50
    bugtraq@linux bash::~ $ su
    Password:
    Tue Nov 13 21:12:56
    root@linux bash::/home/bugtraq # VBoxManage createvm –name WinXP –ostype WindowsXP –register –basefolder /media/vm/maquinas/
    WARNING: The vboxdrv kernel module is not loaded. Either there is no module
    available for the current kernel (3.4.0-030400-generic) or it failed to
    load. Please recompile the kernel module and install it by

    sudo /etc/init.d/vboxdrv setup

    You will not be able to start VMs until this problem is fixed.
    Virtual machine ‘WinXP’ is created and registered.
    UUID: f8be8b3a-91a3-460b-b6ba-ef791302d4bc
    Settings file: ‘/media/vm/maquinas/WinXP/WinXP.vbox’
    Tue Nov 13 21:13:01
    root@linux bash::/home/bugtraq # sudo /etc/init.d/vboxdrv setup
    sudo: /etc/init.d/vboxdrv: command not found
    Tue Nov 13 21:13:47
    root@linux bash::/home/bugtraq # VBoxManage createvm –name “XP Desktop” –ostype WindowsXP –register
    WARNING: The vboxdrv kernel module is not loaded. Either there is no module
    available for the current kernel (3.4.0-030400-generic) or it failed to
    load. Please recompile the kernel module and install it by

    sudo /etc/init.d/vboxdrv setup

    You will not be able to start VMs until this problem is fixed.
    Virtual machine ‘XP Desktop’ is created and registered.
    UUID: 64ac5f3c-57b2-43be-8907-464ec28e32a9
    Settings file: ‘/root/VirtualBox VMs/XP Desktop/XP Desktop.vbox’
    Tue Nov 13 21:29:16
    root@linux bash::/home/bugtraq #

    1. Paulo,

      Acredito que você já tenha resolvido o problema, mas vou responder aqui para ficar o registro:

      Aparentemente está faltando compilar o modulo do kernel para o VBox, siga as instruções deste meu outro post abaixo, que deve resolver seu problema:

      http://www.gabrielfernandes.org/2011/07/18/erro-ao-executar-etcinit-dvboxdrv-setup-no-oracle-virtualbox/

      OFF Topic: Desculpe na demora pelo retorno, meus comentários estavam indo para o spam automaticamente!

  8. amigo e o seguinte vi seu post la na VOL e seguir seus passos logo de cara aparece esses erros.. vi aqui no seu site e no primeiro comando dessa pagina ja deu outro erro veja ae o pq disso

    Tue Nov 13 21:12:50
    bugtraq@linux bash::~ $ su
    Password:
    Tue Nov 13 21:12:56
    root@linux bash::/home/bugtraq # VBoxManage createvm –name WinXP –ostype WindowsXP –register –basefolder /media/vm/maquinas/
    WARNING: The vboxdrv kernel module is not loaded. Either there is no module
    available for the current kernel (3.4.0-030400-generic) or it failed to
    load. Please recompile the kernel module and install it by

    sudo /etc/init.d/vboxdrv setup

    You will not be able to start VMs until this problem is fixed.
    Virtual machine ‘WinXP’ is created and registered.
    UUID: f8be8b3a-91a3-460b-b6ba-ef791302d4bc
    Settings file: ‘/media/vm/maquinas/WinXP/WinXP.vbox’
    Tue Nov 13 21:13:01
    root@linux bash::/home/bugtraq # sudo /etc/init.d/vboxdrv setup
    sudo: /etc/init.d/vboxdrv: command not found
    Tue Nov 13 21:13:47
    root@linux bash::/home/bugtraq # VBoxManage createvm –name “XP Desktop” –ostype WindowsXP –register
    WARNING: The vboxdrv kernel module is not loaded. Either there is no module
    available for the current kernel (3.4.0-030400-generic) or it failed to
    load. Please recompile the kernel module and install it by

    sudo /etc/init.d/vboxdrv setup

    You will not be able to start VMs until this problem is fixed.
    Virtual machine ‘XP Desktop’ is created and registered.
    UUID: 64ac5f3c-57b2-43be-8907-464ec28e32a9
    Settings file: ‘/root/VirtualBox VMs/XP Desktop/XP Desktop.vbox’
    Tue Nov 13 21:29:16
    root@linux bash::/home/bugtraq #

  9. Comentário enviado por mauriciocorvello em 18/04/2012 – 14:51h:

    Ok… grato… segui os passos do tuto mas, ao startar a máquina o seguinte mensagem erro ocorre:

    Failed to open/create the internal network ‘HostInterfaceNetworking-eth0’ (VERR_INTNET_FLT_IF_NOT_FOUND).
    Failed to attach the network LUN (VER_INTNET_FLT_IF_NOT_FOUND)

    Segui alguns tutos do virtualbox mesmo… mas nada, o erro ainda insiste.
    Possui um adaptador em modo bridged, eth0.

    Se alguém puder me auxiliar… desde já agradeço!

    1. Olá Mauricio, legal vê-lo por aqui.

      Respondi teu questionamento no Viva o Linux – pelo jeito, não deu certo ou você não viu a resposta ainda – 🙂

      Mas como falei lá no VOL, sugiro experimentar rodar o VBoxManage na linha de comando, com a “modifyvm” para reconfigurar a interface da máquina virtual, exemplo:

      VBoxManage modifyvm “WinXP” –nic1 bridged and –bridgeadapter eth0

      Se não conseguir da um toque novamente.
      Valeu.

      1. hduadhauadhdua… vi sim e não deu certo mesmo!!
        resolvi repostar mas, aqui… até funcionou… reconfigurei novamente, depois de postar, a interface como nat… e deu certo até então… grato pelas dicas e pelo tudo… qualquer problema, entro em contato novamente 😛

Deixe uma resposta