terça-feira, 10 de novembro de 2015

VirtualBox via linha de comando

 

Introdução

Embora no início o VirtualBox fosse visto por muitos apenas como um concorrente gratuito ao VMware, ele cresceu muito em recursos, acabando por se tornar a plataforma de virtualização mais usada em ambiente doméstico. Além de oferecer uma gama muito grande de recursos e opções de configuração, ele é bastante fácil de usar e é inteiramente multiplataforma, rodando sobre o Linux, Windows, Solaris e etc.


 Além de todas as opções visuais, o VirtualBox também oferece vários utilitários de linha de comando para controle e modificação das máquinas virtuais, que oferecem opções adicionais. O principal deles é o VBoxManage, que permite acionar as VMs diretamente via linha de comando (sem precisar primeiro abrir a janela principal do VirtualBox), permitindo até mesmo criar e deletar VMs diretamente, sem precisar passar pela interface principal. Para iniciar uma VM já configurada, use-o com o parâmetro "startvm", seguido pelo nome da VM entre aspas (caso ele contenha espaços), como em:

$ VBoxManage startvm "Windows XP"

Embora o processo seja complexo (útil apenas você esteja criando scripts ou uma interface própria) ele pode ser usado também para criar uma VM diretamente via linha de comando, como em:

$ VBoxManage createvm -name "Slack" -register
O problema nesse caso é que a VM será criada usando as configurações padrão (apenas 128 MB de RAM, sem disco virtual, etc.). Para criar o disco virtual, você usaria o comando a seguir, especificando o arquivo (para manter as coisas organizadas, crie um arquivo .vdi dentro da pasta da VM com o mesmo nome) e o tamanho máximo (em MB). O default é já criar um disco de tamanho variável:

$ VBoxManage createhd --filename /mnt/sda6/VMs/Slack/Slack.vdi --size 10000 -register
Este HD virtual precisa ser ainda ataxado à VM, um processo um pouco complicado devido ao grande número de parâmetros necessários:

$ VBoxManage storagectl "Slack" --name "SATA Controller" --add sata $ VBoxManage storageattach "Slack" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium /mnt/sda6/VMs/Slack/Slack.vdi
Para ataxar um arquivo ISO como drive óptico virtual, os comandos seriam:$ VBoxManage registerimage dvd /mnt/ISOs/Slackware.iso
$ VBoxManage storagectl "Slack" --name "IDE Controller" --add ide
$ VBoxManage storageattach "Slack" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium /mnt/ISOs/Slackware.iso
A quantidade de memória RAM, juntamente com outros parâmetros pode ser modificada usando a opção "modifyvm", como em:
$ VBoxManage modifyvm "Slack" --memory 512 --vram 32 --boot1 dvd


O VBoxManage suporta um volume assustadoramente grande de opções, incluindo até mesmo muitas que não estão disponíveis na interface gráfica (você pode até mesmo modificar a tela do BIOS virtual). Você pode ver uma descrição delas no "man  VBoxManage". Um bom exemplo de opção que está disponível apenas através dele é a "modifyhd", que permite redimensionar um disco virtual previamente criado, muito útil em situações em que você precisa de mais espaço disponível:

$ VBoxManage modifyhd /mnt/sda6/VMs/Slack/Slack.vdi --resize 20000
Neste exemplo, redimensionamos o disco virtual criado no exemplo anterior para 20.000 MB, que dentro do cálculo dos fabricantes equivale a 20 GB. Veja que neste comando especificamos diretamente o arquivo e não a VM. Para ver todas as informações sobre uma VM diretamente pelo terminal, use o parâmetro "showvminfo":

$ VBoxManage showvminfo Slackware
Continuando, temos também a opção de inicializar VMs em modo headless, onde a VM inicia normalmente e fica acessível via rede como de costume, mas a janela gráfica com o desktop não é aberta. Este modo oferece a vantagem de economizar recursos em situações onde você está configurando uma VM como servidor ou como algum tipo de appliance para a qual a janela gráfica seria simplesmente uma distração ou em casos em que esteja rodando o VirtualBox em um servidor remoto. O comando em si é simples:
$ VBoxHeadless -s "Slack" &
Em qualquer um destes casos, você começaria criando a VM e instalando o sistema operacional da forma usual, configurando a rede e ativando o SSH, RDP ou outro sistema de acesso remoto. Uma vez que a VM estiver configurada, aí sim você pode passar a usá-la em modo headless. No caso de um servidor remoto, você poderia copiar a pasta com uma VM já configurada. Para desligar uma VM aberta desse modo, recorremos novamente ao VBoxManage, usando o parâmetro "controlvm":

$ VBoxManage controlvm "Windows XP" poweroff


Além do "poweroff", que como esperado desliga a máquina, ele suporta também os parâmetros "reset", "pause", "resume" e "savestate". Outro comando interessante é o VBoxSDL, que é a minha "interface" preferida para o VirtualBox. Ele oferece como diferencial o fato de rodar a VM em uma janela "limpa", sem todos os menus e indicadores que seriam exibidos normalmente. Além de permitir ganhar tempo (você pode inclusive colocar os comandos em ícones no desktop para acesso rápido às VMs) isso libera mais espaço útil na tela, ajudando a quem usa um notebook ou monitor de resolução mais baixa. Basta usar o comando "VBoxSDL -vm", seguido do nome da VM, como em:

$ VBoxSDL -vm "Windows XP"


O VBoxSDL é muito prático para quem já está habituado com os atalhos usando as teclas Host que mostrei no início (Host+F, Host+H, Host+C, etc.) que permitem controlar o status da máquina virtual com poucos cliques, iniciando e parando-as com muita agilidade.

Uma pequena dificuldade nesse caso é que o VBoxSDL não lê a configuração da tecla de host definida na interface (já que ele é completamente independente dela) usando sempre a tecla Ctrl direita, que é o default. Caso você queira usar outra tecla, comece usando o "VBoxSDL --detecthostkey " que vai exibir uma janela onde você pode pressionar a nova tecla para obter o identificador dela, te devolvendo algo como "--hostkey 306 64" (para a tecla Ctrl esquerda). Basta adicionar este parâmetro no comando para iniciar a VM, como em:

$ VBoxSDL -vm "Windows XP" --hostkey 306 64


Para não precisar ficar especificando o parâmetro todas as vezes, adicione um alias para o comando no final do arquivo ".bashrc" dentro do seu diretório home, como emalias VBoxSDL='VBoxSDL --hostkey 306 64'. Dessa forma, sempre que executar o comando "VBoxSDL" os parâmetros serão incluídos automaticamente pelo interpretador. Você pode também adicionar outros parâmetros que você use sempre. Voltando às opções, para iniciar a VM em tela cheia, adicione o parâmetro "--fullscreen". Para iniciar a VM com uma quantidade diferente de memória RAM que a configurada, use o parâmetro "--memory", especificando a memória desejada (em MB) como em:

$ VBoxSDL -vm "Mageia" --memory 512


A opção "--cdrom" permite especificar manualmente uma imagem ISO, enquanto a "--boot" permite especificar manualmente a ordem de boot ("a" para disquete, "c" para o primeiro HD, "d" para o drive óptico e "n" para rede). Você pode usar as duas para fazer a VM iniciar diretamente pelo CD quando precisar reinstalar ou modificar o sistema, como em:

$ VBoxSDL -vm "Ubuntu LTS" --cdrom /mnt/sda6/ISOs/linuxmint.iso --boot d

O problema nesse caso é que a VM será criada usando as configurações padrão (apenas 128 MB de RAM, sem disco virtual, etc.). Para criar o disco virtual, você usaria o comando a seguir, especificando o arquivo (para manter as coisas organizadas, crie um arquivo .vdi dentro da pasta da VM com o mesmo nome) e o tamanho máximo (em MB). O default é já criar um disco de tamanho variável:

O VBoxSDL suporta vários outros parâmetros, que você pode checar usando o "man VBoxSDL".


Fonte:
Carlos Morimoto


Nenhum comentário:

Postar um comentário