Dicas para o Virtual Box
Aqui estou listando os comandos para manipular e executar a grande maioria das operações do Oracle Virtual Box através da linha de comando.
Listar máquinas virtuais registradas
vboxmanage list vms
Listar máquinas virtuais que estão em execução
vboxmanage list runningvms
Parar uma máquina virtual que está em execução (é como puxar o fio da tomada)
vboxmanage controlvm <nome_registrado> poweroff
Reiniciar uma máquina virtual que está em execução (é como apertar o botão de reset)
vboxmanage controlvm <nome_registrado> reset
Mostrar as informações de uma máquina registrada
vboxmanage showvminfo <nome_registrado>
Inicializar uma máquina virtual registrada
vboxmanage startvm <nome_registrado>
Inicializar uma máquina virtual registrada sem o vídeo (roda a máquina virtual em background)
vboxmanage startvm --type headless <nome_registrado>
Opções mais avançadas
Permitindo que o virtualbox acesse um disco físico da máquina.
vboxmanage internalcommands createrawvmdk -filename "</path/to/file>.vmdk" -rawdisk /dev/sda
Anexando discos remotos através do protocolo ISCSI.
Na controladora SATA
vboxmanage storageattach <nome_registrado> --storagectl "SATA" --port 1 --type hdd --medium iscsi --server <ip_do_NAS> --target <iSCSI_target_name>
Na controladora IDE
vboxmanage storageattach <nome_registrado> --storagectl "IDE" --port 0 --device 1 --type hdd --medium iscsi --server <ip_do_NAS> --target <iSCSI_target_name>
Criando filtros para limitar a banda passante de uma placa de rede virtual
vboxmanage bandwidthctl <nome_registrado> add Limit --type network --limit 1024k vboxmanage modifyvm <nome_registrado> --nicbandwidthgroup<index> Limit
Impor um limite na banda passante da rede virtual sem a necessidade de reiniciar a máquina virtual (shape). Este só funciona depois do filtro Limit estar criado e assinalado a placa de rede virtual.
vboxmanage bandwidthctl <nome_registrado> set Limit --limit 768k
Retirar o limite na banda passante da rede virtual, ou seja, sem nenhum limite (shape). Este só funciona depois do filtro Limit estar criado e assinalado a placa de rede virtual.
vboxmanage bandwidthctl <nome_registrado> set Limit --limit 0
Como configurar as informações da BIOS virtual da máquina virtual criada, assim você pode praticamente simular o seu hardware real, copiando as informações da BIOS da sua máquina real.
VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor" "HP Inc." VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion" "1.2.3" VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseDate" "02/28/2005" VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMajor" 3 VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMinor" 2 VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMajor" 2 VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMinor" 3 VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "HP Inc." VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiSystemProduct" "EliteBook 254" VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVersion" "<EMPTY>" VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "C120X9DH1ND" VBoxManage setextradata <nome_registrado> "VBoxInternal/Devices/pcbios/0/Config/DmiSystemFamily" "X86-based PC"
Criar uma máquina virtual VirtualBox através da linha de comando
Aqui tenho uma receita para sair do zero com o virtualizador VirtualBox criando uma máquina virtual através da linha de comando. Então vamos ao passo-à-passo:
Vou usar como exemplo um cliente Windows Server 2008 64bit, mas você pode modificar conforme a sua necessidade.
$ VM='Server-2008-64bit'
Criando um disco virtual de 32GB
$ VBoxManage createhd --filename $VM.vdi --size 32768 --variant fixed
Se por um acaso você quiser criar um disco dinâmico, ou seja, que cresce conforme você vai usando até o máximo especificado, aí o comando seria o seguinte:
$ VBoxManage createhd --filename $VM.vdi --size 32768
Agora vamos descobrir quais os sistemas cliente que o seu VirtualBox é capaz de reconhecer. Use o comando a seguir:
$ VBoxManage list ostypes
Escolha a melhor opção da lista obtida acima e coloque-a no comando abaixo:
$ VBoxManage createvm --name $VM --ostype "Windows2008_64" --register
Agora, vamos acrescentar a controladora de discos e atachar o disco virtual criado anteriormente, no caso vou optar pela emulação SATA, que é mais eficiente:
$ VBoxManage storagectl $VM --name "SATA Controller" --add sata --controller IntelAHCI $ VBoxManage storageattach $VM --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium $VM.vdi
Vamos também anexar uma controladora IDE padrão para atachar o arquivo ISO do DVD do Windows Server 2008.
$ VBoxManage storagectl $VM --name "IDE Controller" --add ide $ VBoxManage storageattach $VM --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium /path/to/windows_server_2008.iso
Algumas configurações adicionais para finalizar a descrição da máquina virtual:
$ VBoxManage modifyvm $VM --memory 1024 --vram 128 $ VBoxManage modifyvm $VM --boot1 dvd --boot2 disk --boot3 none --boot4 none $ VBoxManage modifyvm $VM --ioapic on $ VBoxManage modifyvm $VM --nic1 bridged --bridgeadapter1 e1000g0
Pronto !!! Tudo pronto para iniciarmos a máquina virtual. Se estiver usando uma máquina remota, teremos que iniciar o virtualizador em modo headless e atachar o console via desktop remoto usando o endereço da máquina remota na porta padrão, vboxhost:3389.
$ VBoxHeadless -s $VM
Após a finalização da instalação do sistema operacional cliente, vamos remover o DVD virtual da máquina:
$ VBoxManage storageattach $VM --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium none
Pronto agora já temos uma máquina virtual rodando como cliente o Windows Server 2008.
Se você quiser, ainda, pode pensar em fazer algum snapshot com certa regularidade, para que sempre que for necessário, voltar a um estado conhecido e não precisar re-instalar tudo do zero. Para isso basta usar os comandos abaixo:
Criando um snapshot:
$ VBoxManage snapshot $VM take <nome_do_snapshot>
Restaurando um snapshot em particular para voltar a um estado conhecido:
$ VBoxManage snapshot $VM restore <nome_do_snapshot>