Antes de começar…
Creio que muitos aqui já conheçam o excelente software de virtualização VirtualBox.
O que muitos desconhecem é o poder que ele tem. Poder que vai muito além do que vemos em sua interface gráfica.
Este software contém poderosos utilitários que podem ser utilizados via linha-de-comando, ou até nos seus programas em shell-script.
Neste artigo serão abordados os dois principais:
– VBoxManage, que tem por função o gerenciamento das máquinas virtuais, bem como discos e imagens virtuais.
– VBoxSDL, que é uma interface simples para a execução das máquinas Virtuais, mas que não necessita da biblioteca Qt.
Antes de começar, tenha a certeza de já ter o VirtualBox devidamente instalado. Não vou abordar aqui este processo, mas você certamente encontrará vários tutoriais na Internet.
E, antes de começar, dou uma mini-dica para você não ficar com dor-de-cabeça quando atualizar o kernel e perceber que o VirtualBox não funciona mais.
Isto acontece porque para funcionar, o VirtualBox necessita que um módulo especial, chamado vboxdrv. Mas normalmente este módulo não é automaticamente atualizado quando instalamos um novo kernel. Isto não é necessariamente um problema, já que é muito fácil compilar e instalar este módulo. Para isso, tenha a certeza de ter os programas de desenvolvimento (compiladores, etc) corretamente instalados, além do código-fonte da versão do kernel Linux que você utiliza também instalados.
Estando satisfeitos estes requerimentos, execute:
# /etc/rc.d/rc.vboxdrv setupEspere uns instantes até que o módulo seja instalado, e corra pro abraço:
# /etc/rc.d/rc.vboxdrv startLembrando que “/etc/rc.d/rc.vboxdrv” é o script de inicialização VirtualBox no Slackware. Em outras distros, como Debian e Fedora, este script normalmente se chama “/etc/init.d/vboxdrv”. A sintaxe é a mesma.
Também faremos algumas convenções:
Quando um comando inicia com um cifrão ($), significa que o comando pode ser executado como usuário comum. Quando iniciar com um jogo-da-velha (#) – eu chamo de jogo-da-velha, e daí? ;-) -, significa que deve ser executado como root.
Também digo desde já que, para que os comandos sejam executados é necessário que você esteja no diretório onde está instalado o VirtualBox. No meu caso, o diretório em questão é o /usr/lib/virtualbox. É perfeitamente possível contornar isto (alguns links simbólicos aqui e acolá), mas isto foge do escopo deste tutorial.
Além disso, você deve incluir este diretório na variável de ambiente LD_LIBRARY_PATH:
Outro dia eu explico para que serve esta variável e como utilizá-la.
Feito isto, vamos começar logo o tutorial:
Criando, modificando e Iniciando
Para criar uma Máquina Virtual com o nome Ubuntu 7.10 Gusty, tecle:
$ ./VBoxManage createvm -name “Ubuntu 7.10 Gusty” -registerE serão ecoados na tela algumas informações sobre a máquina criada.
VirtualBox Command Line Management Interface Version 1.5.4_OSE
(C) 2005-2007 innotek GmbH
All rights reserved.
Virtual machine ‘Ubuntu 7.10 Gusty’ is created and registered.
UUID: 35362bb9-19ef-4ee5-8daf-256cff87146a
Settings file: ‘/home/tenchi/.VirtualBox/Machines/Ubuntu 7.10 Gusty/Ubuntu 7.10 Gusty.xml’
As informações úteis aqui serão o nome da máquina virtual, uma identificação única, por meio de uma sentença composta por números e letras, além do arquivo de configuração da máquina virtual. Sendo um arquivo XML, pode ser modificado manualmente pelo usuário.
A sintaxe deste comando é simples. O parâmetro ‘-name’ serve para você especificar o nome da máquina virtual e o parâmetro ‘-register’ para registrar a máquina virtual nas configurações do VirtualBox.
Mas esta máquina é muito “crua”. Não dizemos para o VirtualBox qual sistema operacional será hospedado na máquina virtual, nem a quantidade de memória ou discos utilizados.
Por isso vamos criar um disco que será utilizado pela máquina:
$ ./VBoxManage createvdi -filename “Disco do Ubuntu” -size 5000 -registerCom este comando, criamos um disco com o nome (-filename) Disco do Ubuntu, tamanho (-size) de 5000MB (~5GB) e o registramos (-register) nas configurações do VirtualBox.
Vamos também registrar uma imagem ISO de CDROM/DVDROM para iniciarmos a máquina virtual.
$ ./VBoxManage registerimage dvd /imagens/Imagem-do-Ubuntu.isoCom este comando estamos dizendo que estamos registrando uma imagem de DVD (dvd) e, e indicamos o caminho do arquivo da imagem.
Como já temos uma imagem de CDROM e um disco virtual, vamos configurar a máquina virtual.
Precisaremos definir alguns recursos que serão utilizados pelo hospedeiro:
Memória que iremos utilizar: 300MB.
Memória de vídeo: 8MB
Utilizar dispositivos USB nos hospedeiro: Sim
Ativar o dispositivo de som no hospedeiro: Sim
Precisaremos também da identificação dos discos. Para isso, utilizaremos o comando ‘VBoxManage list’:
$ ./VBoxManage list dvdsVirtualBox Command Line Management Interface Version 1.5.4_OSE
(C) 2005-2007 innotek GmbH
All rights reserved.
UUID: a8279467-0fa2-4bb8-d6ab-f51706e0c5d4
Path: /imagens/Imagem-do-Ubuntu.iso
Accessible: yes
VirtualBox Command Line Management Interface Version 1.5.4_OSE
(C) 2005-2007 innotek GmbH
All rights reserved.
UUID: ca9a8150-8971-4526-deaf-fd84db389fe8
Storage type: Virtual Disk Image
Path: /home/tenchi/.VirtualBox/VDI/Disco do Ubuntu
Accessible: yes
Com isso, teremos a identificação da imagem do Ubuntu e do disco.
Assim, finalmente executamos:
$ ./VBoxManage modifyvm “Ubuntu 7.10 Gusty” -memory 300 -vram 8 -hda ca9a8150-8971-4526-deaf-fd84db389fe8 -dvd a8279467-0fa2-4bb8-d6ab-f51706e0c5d4 -boot1 dvd -usb on -audio alsa -ostype linux26Agora vamos destrinchar cada “palavrinha” deste comando:
* modifyvm é o comando para que indica que queremos modificar a máquina virtual. Seguido dele vem o nome ou o UUID da máquina virtual que está sendo modificada.
* -memory define a quantidade de memória dedicada à máquina. A unidade utilizada é o megabyte.
* -vram define a quantidade de memória de vídeo dedicada à máquina. A unidade utilizada é o megabyte.
* -hda define qual vai ser o disco utilizado como HD principal. Você pode utilizar como argumento o UUID do dispositivo ou o nome do arquivo. No exemplo foi utilizado o UUID. O mesmo vale para ‘-hdb’, se desejar utilizar uma imagem como disco secundário.
* -dvd define qual imagem será utilizada como HD principal
* -usb define se utilizaremos (on) ou não (off) dispositivos usb no sistema hospedado
* -audio define qual será o método utilizado para executarmos áudio no sistema hospedado. As possíveis opções são alsa, null, oss ou none.
* -ostype define qual sistema operacional irá rodar na máquina virtual. Para saber as possíveis opções, execute “./VBoxManage list ostypes”. No exemplo foi utilizado linux26, que significa linux-2.6.
* -boot1 diz qual será o primeiro dispositivo na ordem de boot. O mesmo vale para o segundo, que seria -boot2, e assim sucessivamente. As possíveis opções são: none floppy dvd disk net.
Com a máquina virtual configurada, podemos utiliza-la sem problema. Vamos inicialmente iniciá-la:
$ ./VBoxManage startvm “35362bb9-19ef-4ee5-8daf-256cff87146a” -type guiVamos esmiuçar de novo o comando:
* startvm é o comando para iniciar uma máquina virtual. Ele vem seguido do nome ou UUID da máquina em questão
* -type define como será executada a máquina. As possíveis opções são: gui e vrdp. Com a opção gui, a máquina visualmente será executada numa janela, como a que estamos acostumados no VirtualBox, com menus e necessitando da biblioteca Qt3. Já com a opção vrdp, ela será executada “em plano-de-fundo”, não sendo exibida nenhuma janela. Desta forma a máquina pode ser acessada remotamente numa rede. Deixo claro que eu ainda não testei este método, portanto não posso dizer ao certo qual é o comportamento do sistema nesta condição.
Estes não são todos os recursos do VirtualBox, mas somente o suficiente para colocar uma máquina virtual para funcionar. Ainda pretendo abordar, quem sabe num outro texto, neste mesmo batpost, neste mesmo batblog, mais alguns recursos, como configurar a rede e controlar a máquina virtual.
Mas isto não significa que este texto pare por aqui. Não senhor (ou senhora ;-)).
Compartilhando arquivos
É perfeitamente possível acessar, da máquina virtual, arquivos do hospedeiro. Este processo não é lá muito simples – utilizei dois bonequinhos de vudu e meio -, mas no final do processo ninguém chega a sair ferido ;-)
A única coisa que precisaremos é instalar um módulo especial na máquina virtual, para que ela enxergue uma ou mais pastas configuradas no hospedeiro como compartilháveis.
Vamos começar neste ponto: definir as pastas compartilháveis.
Para isso, vamos ao comando:
$ ./VBoxManage sharedfolder add “Ubuntu 7.10 Gusty” -name “Pasta HTDOCS” -hostpath /var/www/htdocs/* sharedfolder indica a configuração de pastas compartilhadas
* add indica que estamos adicionando uma pasta
* Ubuntu 7.10 Gusty é o nome da máquina virtual
* -name é como a pasta em questão será reconhecido na máquina virtual, como um volume próprio
* -hostpath define a pasta que será compartilhada, na máquina real
Para remover uma pasta compartilhada,
$ ./VBoxManage sharedfolder remove “Ubuntu 7.10 Gusty” -name “Pasta HTDOCS”Acho que não é preciso explicar como funciona o comando ;-)
Feito isto, inicializaremos a máquina virtual. Mas vou fazer algo diferente aqui. É que para que o módulo poder ser instalado no sistema da máquina virtual, é necessário que você tenha o código-fonte do kernel (linux) instalado no sistema virtual. Como atualmente eu estou com uma relativa preguiça para instalá-lo no Ubuntu, utilizarei uma máquina virtual com o Slackware 12.0 já pronto para o processo.
Também precisaremos da imagem ISO com os utilitários do VirtualBox para a máquina Virtual, que normalmente faz parte do pacote do VirtualBox, mas pode ser obtido separadamente no link:
http://www.virtualbox.org/download/1.5.4/VBoxGuestAdditions_1.5.4.iso
No meu caso, ele está no arquivo /usr/lib/virtualbox/VBoxGuestAdditions.iso. Verifique na sua distro onde está este arquivo. Feito isto, iremos registrar esta imagem nas configurações do VirtualBox:
$ ./VBoxManage registerimage dvd /usr/lib/virtualbox/VBoxGuestAdditions.isoÉ possível que você receba uma mensagem de erros justamente pela imagem já estar registrada no VirtualBox. Ignore.
Modificaremos a máquina Virtual para utilizar a imagem acima como CDROM:
$ ./VBoxManage modifyvm Slackware-Test -dvd 58e8fa4f-b93a-4a85-f2b5-c199ec035f3e -memory 64Onde 58e8fa4f-b93a-4a85-f2b5-c199ec035f3e é a UUID da imagem, e Slackware-Test é a máquina onde o Slackware já está instalado, e ‘-m 64’ é para eu utilizar somente 64MB de memória na máquina Virtual, o que é o suficiente para o Slackware rodar bem.
Iniciando…
$ ./VBoxManage startvm Slackware-Test -type guiJá dentro da máquina Virtual, monte a imagem:
# mount /dev/cdrom /mnt/cdrom -t iso9660Em seguida, execute o arquivo /mnt/cdrom/VBoxLinuxAdditions.run:
# /mnt/cdrom/VBoxLinuxAdditions.runSe tudo ocorrer bem, reinicie a máquina virtual:
# rebootNesta máquina eu coloquei a pasta /home/ do hospedeiro correspondente ao volume ‘masaki‘ da máquina virtual. Vamos agora montar esta imagem:
Na máquina virtual, execute…
# modprobe vboxsf… para carregar o módulo.
Para montar a pasta compatilhada:
# mount masaki /mnt/masaki -t vboxsfA partir deste ponto, todos os arquivos da pasta compartilhada estarão em /mnt/masaki
Mas todos sabemos que é bem chato ficar montando manualmente o volume a cada inicialização. Para contornar isto, podemos agir de duas formas: colocar os comandos acima num arquivo de inicialização, ou fazer do método tradicional, pelo arquivo /etc/fstab.
Confesso que a primeira maneira é meio “porca”, por isso utilizaremos a segunda.
Mas vejam que, se simplesmente adicionarmos uma linha no arquivo fstab, o volume não será montado, basicamente porque ele necessita de um módulo especial, que é carregado somente depois que o kernel monta os volumes definidos no arquivo fstab.
Para consertar isto, execute:
# echo /sbin/modprobe vboxvfs >> /etc/rc.d/rc.modulesDepois abra para edição o arquivo /etc/rc.d/rc.S, e localize a linha (padrão no Slackware 12: 299)
/sbin/mount -a -v -t nonfs,nosmbfs,nocifs,noproc,nosysfs,nodevptsE deixe-a da seguinte forma:
/sbin/mount -a -t nonfs,nosmbfs,nocifs,noproc,nosysfs,nodevptsFeito isto, vamos editar o arquivo /etc/fstab. Adicione a seguinte linha no arquivo:
masaki /mnt/masaki vboxsf rw,auto 0 0Onde masaki é o nome do volume e /mnt/masaki é onde eu quero que ele seja montado; vboxsf é um sistema de arquivos próprio do virtualbox. Nas opções de montagem eu coloquei rw,auto, para que a partição funcione em modo leitura-escrita e seja montada durante o boot. Personalize estas opções a seu gosto.
Salve e feche o arquivo.
Pronto, agora reinicie a máquina virtual rezando para que o volume seja montado durante o boot ;-)
Neste modo, as mudanças feitas na pasta compartilhada são aplicadas na pasta real. Num próximo texto explico como fazer para que tais mudanças sejam “esquecidas” depois que a máquina virtual for desligada (modo transiente). Também explicarei como utilizar um disco ou partição real numa máquina virtual.
E eu fiz o teste de compartilhamento somente utilizando Linux como hospedeiro e sistema virtualizado. Mais informações sobre como proceder em outros sistemas operacionais são encontrados na documentação do Virtualbox.
Utilizando uma interface mais simples: VBoxSDL
Como disse lá no início, a Interface em Qt não é obrigatória. Existe uma interface bem mais simples para o VirtualBox, chamada VBoxSDL. Você verá que ela lembra muito o QEMU, tanto no seu uso quanto na aparência.
Aqui serei breve.
Para iniciar uma máquina Virtual, utilize o comando:
$ ./VBoxSDL -vm Slackware-TestCito aqui os parâmetros mais comuns para este comando:
-vm <Nome ou UUID da Máquina>, define qual máquina virtual inicializaremos
-fullscreen, para iniciar em modo tela-cheia
-m define a quantidade de memória a ser utilizada. Esta quantidade será utilizada somente durante esta execução da máquina virtual
-boot, define o dispositivo inicialização. As possíveis opções são: ‘a‘, para disquete; ‘c‘, para HD; e ‘d‘, para CD-ROM/DVD-ROM.
Para mais informações, utilize o parâmetro –help
Conclusão
Acredito que, depois do exposto, o VirtualBox passe a ser visto como uma solução profissional – e livre – para quem necessitar deste maravilhoso recurso chamado virtualização.
O que este artigo abordou foi somente uma gota perto de todos os recursos que esta ferramenta nos apresenta. Mas deixo para um outro dia um maior aprofundamento destes recursos, em parte por este texto já ter ficado demasiado grande :-)
Observações: este texto demorou mais de uma semana para ser escrito. Aconselho vocês a não terem irmã(o)(s) chatos que te interrompam toda hora ;-)
Ele também foi feito à base de muita bolacha de água e sal com geléia de acerola (receita da minha mãe, outro dia posto) e ao som de Legião Urbana, Radiohead e Os Seminovos!
Referência
Documentação do VirtualBox: http://www.virtualbox.org/wiki/Documentation
E aqui também vai um link interessante sobre redes no VirtualBox:
http://www.ubuntero.com.br/?p=450
Até próxima!
8 Comments
Artigo linkado o Ubuntero.
Tutorial bem completo e com ótimas informações!!!
Parabéns!
Muito bom, parabéns.
Valeu pela dica. ;)
formas de contato servslack@yahoo.com.br ou msn wisckey_24anos@hotmail.com
Muito bom tutorial leandro… Parabéns pela insistência e teimosia ao ficar horas e horas ao computador pra descobrir o conteúdo do seu post. Estou com uma dúvida que ao menos pra mim que não tenho tanto tempo quanto gostaria de ficar fuçando que é o seguinte: inicializo o linux e dai tenho no rc.local uma linha que puxa um pequeno executável as linhas são estas abaixo:
modprobe tun
tunctl -t tap1 -u root
ifconfig eth0 0.0.0.0
ip link set up dev tap1
brctl addbr br0
brctl addif br0 tap1
brctl addif br0 eth0
ip link set up dev br0
ip addr add 192.168.254.10/24 dev br0
ip route add 192.168.254.0/24 dev br0
route add -net default gw 192.168.254.3
Então abro o VIRTUALBOX e mando o “START”, antes é claro já havia configurado a interface TAP1 que já está gerada.
O problema é que quando eu reinicializo a máquina virtual ela simplesmnete perde a conexão criada e mesmo que eu rode novamente o script está não é retomada.
Pra que eu volte a ter acesso a maquina virtual tenho que reinializar o slack pra que seja então rodado o maldito script e somente depois como já dito inicializar a máquina virtual com o virtualbox.
Se puder me dê uma ajuda… Já estou maluco com isso.
Um Abraço e espero que continue com tempo… rsrsrsr.
Um detalhe importante é que somente utilizando o VBoxSDL é que consegui acentuar corretamente na máquina virtual com o Windows XP.
Parabéns pelo post!
Show de bola , sem palavras , material muito bom , parabéns .
epa eu preciso do melhor antivirus possivel
4 Trackbacks
[…] por Leandro Santiago (leandrosansilvaΘgmail·com) – referência […]
[…] Querendo conhecer mais um pouco sobre o VirtualBox, temos um bom tutorial no blog do Leandro Santiago. […]
[…] https://leandrosan.wordpress.com/2008/02/09/utilizando-a-caixa-virtual-a-seu-favor/#comment-412 […]
[…] https://leandrosan.wordpress.com/2008/02/09/utilizando-a-caixa-virtual-a-seu-favor/#comment-412 […]