quarta-feira, 20 de junho de 2012

A linha de comando do VirtualBox

O VirtualBox possui, além da sua interface gráfica, a opção de interface pela linha de comando para configuração e manutenção das máquinas virtuais. A ferramenta VBoxManage é capaz de criar, modificar e executar as VMs. Faz tudo que a interface gráfica faz e mais um pouco, pois existem comandos não possíveis de realizar graficamente. Por exemplo, a interface gráfica não possui o recurso para compactar o HD virtual.

Aqui não irei demonstrar cada um dos comandos, apenas ilustrar a interface de gerenciamento em linha de comando do VirtualBox.

Com uma sequência de comandos podemos criar uma máquina virtual, por exemplo:

$ VBoxManage createvm --name "CentOS 6.2" --register
$ VBoxManage modifyvm "CentOS 6.2" --memory 1024 --acpi on --boot1 dvd --nic1 bridged --bridgeadapter1 eth0
$ VBoxManage createhd --filename CentOS_6.2.vdi --size 40000
$ VBoxManage storagectl "CentOS 6.2" --name "IDE Controller" --add ide
$ VBoxManage storageattach "CentOS 6.2" --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium CentOS_6.2.vdi
$ VBoxManage storageattach "CentOS 6.2" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/CentOS-6.2-i386-bin-DVD1.iso

Todas as VMs criadas e registradas no VirtualBox são listadas com a execução do comando "list vms":

$ VBoxManage list vms

Caso queira executar uma VM, usa-se o comando startvm, seguido pelo nome da VM ou pelo UUID:

$ VBoxManage startvm "CentOS 6.2"

Pelo comando acima, a VM é aberta naturalmente em uma janela, que exibe o conteúdo do sistema virtualizado. Uma opção interessante é a "headless", pois inicia a VM em segundo plano sem abrir a janela da interface gráfica, além de ativar o protocolo de desktop remoto, o que possibilita visualizar a saída gráfica da VM remotamente por outra máquina. A linha de comando torna-se:

$ VBoxManage startvm "CentOS 6.2" --type headless

Desviando do assunto, o desktop remoto pode ser aberto por qualquer cliente RDP. A porta padrão é a 3389, porém se existirem mais de uma máquina virtual, cada uma deverá estar configurada para uma porta diferente. O endereço IP é o endereço do host, pois é onde o VirtualBox está sendo executado. Exemplo com o rdesktop do Linux:

$ rdesktop 192.168.1.10:3389

Todas as máquinas virtuais que estão rodando são listadas com a execução do comando "list runningvms":

$ VBoxManage list runningvms

Para desligar a máquina virtual de fora dela, ou seja, sem executar um comando interno no sistema convidado, existem alguns comandos que simulam o hardware de um computador. As funções dos botões "Power" e "Reset" até o suporte da ACPI, são simulados com, por exemplo:

$ VBoxManage controlvm "CentOS 6.2" acpipowerbutton

$ VBoxManage controlvm "CentOS 6.2" reset

$ VBoxManage controlvm "CentOS 6.2" poweroff

Sempre é possível identificar a máquina pelo nome da VM ou pelo UUID da VM. Caso o nome ou qualquer outra identificação tenha espaços, é necessário protegê-lo do interpretador de comandos. As aspas e os apóstrofos servem para isto.

$ su vboxuser -c '/usr/bin/VBoxManage startvm "CentOS 6.2" --type headless'

Desviando do assunto mais uma vez, para executar um comando interno no sistema convidado, por exemplo um comando para desligamento, estando fora da máquina virtual, podemos usar a ferramenta ssh, em algo como:

$ sshpass -p senha ssh root@192.168.1.15 "shutdown -h now"

A ferramenta VBoxManage possui dezenas e mais dezenas de comandos e opções, tornando esta interface textual bastante rica em recursos. Uma necessidade desta interface está, por exemplo, no gerenciamento de servidores remotos, quando o acesso é por um terminal remoto em modo texto. A opção "--help" exibe a lista de todos os comandos e opções existentes. É uma ajuda mas não é um manual:

$ VBoxManage --help

2 comentários:

  1. Muito obrigado pelas dicas! resolveu meu problema!

    ResponderExcluir
  2. sou iniciante e estou com dificuldade para configurar vm para pendrive, (pc 2.0 ) - (wind.10 home ) vbox e istenção 5.1.8-111374 .Gostei muito do tutorial mas não encontrei solução para meu problema , agradeço muito se for respondido . GRATO

    ResponderExcluir