20 de fevereiro de 2009

Compartilhando Diretórios entre Ubuntu e Leopard via VirtualBox

Virtualizar o Ubuntu dentro do Leopard não é uma tarefa difícil. Ajustar a resolução do sistema virtualizado também não é tarefa de outro mundo. Contudo, para que o usuário possa aproveitar os recursos dos dois sistemas, o guest e o host, por vezes torna-se necessária a troca de arquivos entre os dois. Apesar de haver diversas maneiras de se fazer isso, como CDs, Pendrives e Internet, a forma mais rápida é com o uso de diretórios compartilhados.


A ideia de um diretório compartilhado entre dois sistemas é que todas as operações que forem feitas neste diretório, através de um sistema operacional, serão automaticamente repercutidas no outro sistema operacional. Isso se dá porque um dos sistemas operacionais trabalha como servidor, alocando realmente o diretório e o outro sistema associa aquele diretório a um diretório local, o que significa que, apesar do usuário pensar que está alterando um diretório local, na verdade ele estará alterando um diretório em outro sistema.

O primeiro passo para realizar esta operação é instalar o Guest Additions, um software disponibilizado pelo time de desenvolvimento do VirtualBox, que estende as funções do software de virtualização. Como a instalação deste software está descrita na postagem Configurando a Resolução do Ubuntu no VirtualBox, sugiro que o leitor acesse aquele texto para ter acesso a um guia sobre o assunto.

Com o Guest Additions instalado, já temos um ambiente apto para realizar o compartilhamento. Como o compartilhamento se dá entre dois diretórios, onde um funciona como um diretório real e o outro funciona como uma ponte para o primeiro diretório, deve-se criar um diretório em cada sistema para esta finalidade. No caso, o diretório do Leopard servirá como um diretório real (servidor) e o diretório do Ubuntu terá o diretório do Leopard "montado" sobre ele. Como os dois sistemas (Leopard e Ubuntu) são Unix-like, o comando para a criação dos diretórios é igual nos dois. Para facilitar as coisas, sugiro que os diretórios tenham o mesmo nome nos dois sistemas (eu uso VBShared) e que eles sejam criados imediatamente no diretório raíz do usuário (e.g., /Users/zezim/VBShared no Leopard e /home/zezim/VBShared no Ubuntu). Execute o comando abaixo no terminal de cada um dos dois sistemas para realizar este trabalho.

$ mkdir ~/VBShared

Com os diretórios criados, nosso trabalho termina no Leopard (a.k.a., servidor e host). Agora deve-se configurar a máquina virtual onde o Ubuntu (a.k.a., cliente e guest) está instalado, para indicar a ela que há um diretório compartilhado no host. Para isso, estando o Ubuntu executando, execute os passos abaixo:

  1. Na janela de execução do Ubuntu, localize o ícone de uma pasta azul, na barra de status, no rodapé da janela e clique sobre ele.
  2. Será aberta a janela Pastas Partilhadas. Clique no ícone de uma pasta com um sinal de soma, à direita de quem vê a janela.
  3. Será aberta a janela Adicionar Partilha. No campo Localização da Pasta, digite o caminho completo do diretório compartilhado no Leopard (e.g., /Users/zezim/VBShared). No campo Nome da Pasta, digite VBShared. Há duas opções para se escolher: se o compartilhamento será feito em modo de somente leitura e se este será um compartilhamento permanente (normalmente os compartilhamentos se perdem ao fechar o VirtualBox).  No meu caso, eu quero um compartilhamento onde eu possa trocar livremente arquivos entre o Leopard e o Ubuntu, por isso a opção somente leitura está fora de questão. Já a opção para tornar o compartilhamento permanente é interessante, para eu não ter que refazer isso de novo. Com tudo configurado, basta clicar em OK para voltar à janela anterior.
  4. Repare que o compartilhamento recém criado já consta na listagem da janela Pastas Partilhadas. Basta dar OK, para voltar à janela do Ubuntu.

Com o VirtualBox configurado, resta configurar o Ubuntu para montar o compartilhamento no diretório esperado. Isso pode ser feito com o comando a seguir, onde VBShared é o nome definido no campo Nome da Pasta, na janela Adicionar Partilha, da etapa anterior e /home/zezim/VBShared é o caminho do diretório onde o compartilhamento será montado.

$ sudo mount -t vboxsf VBShared /home/zezim/VBShared

Note que o comando acima montará o diretório /Users/zezim/VBShared em /home/zezim/VBShared, mas o usuário estará incapaz de gravar dados nele. Isso se dá por falta de permissões. Para corrigir isso, pode-se indicar ao sistema, no momento da montagem, que o dono do compartilhamento é o usuário em questão (e.g., zezim). Para isso, é necessário o identificador do usuário (uid) e o identificador do grupo do usuário (gid) dentro do Ubuntu. Estes números podem ser obtidos com o comando id seguido do nome de usuário a se saber os dados. Para o usuário zezim, o comando seria:

$ id zezim

Com os identificadores em mãos, pode-se refazer a montagem, indicando-os (tome uid = gid = 1000):

$ sudo umount VBShared  # Use este comando somente se o compartilhamento já estiver montado.
$ sudo mount -t vboxsf -o uid=1000,gid=1000 VBShared /home/zezim/VBShared

O comando de montagem acima deve permitir a escrita no diretório no Ubuntu. Infelizmente este procedimento será desfeito ao desligar ou reiniciar o sistema. Caso o usuário queira que esta montagem seja feita sempre que o Ubuntu for iniciado, ele pode adicionar uma nova entrada no fstab. Veja os passos abaixo.

  1. Abra um terminal e digite:
    $ sudo gedit /etc/fstab

  2. Adicione a linha de configuração abaixo no final deste aquivo, onde a primeira coluna deve ser igual ao Nome da Pasta, definido na janela Adicionar Partilha, durante a configuração do VirtualBox:

VBShared    /home/zezim/VBShared    vboxsf    uid=1000,gid=1000    0    0

Com as configurações feitas, o usuário será capaz de trocar facilmente arquivos entre os dois sistemas. Após toda esta configuração, o compartilhamento de arquivos torna-se transparente para o usuário: basta colocar um arquivo no diretório ~/VBShared de qualquer sistema, para que ele possa ser encontrado no diretório ~/VBShared do outro sistema. Apesar de não ser uma configuração simples de se fazer, com boas doses de atenção e paciência, pode-se ter o compartilhamento configurado em poucos minutos, gerando um resultado bastante satisfatório e que provê uma grande facilidade para o usuário.




Leia Também

6 comentários:

  1. Granze zezim!

    Novamente um excelente post, funcionou quase da mesma forma no Vista Business, o diferencial foi o comando "cd ~" antes do comando de criação do compartilhamento. Isto deve-se ao fato do comando não poder ser executado no mesmo diretório que a pasta a ser compartilhada (custei para descobrir isto).
    Agora tive um problema, no Ubuntu eu não consigo gravar nada na pasta, só no Vista. Se tiver alguma sugestão do que possa ser.

    Abraço!

    ResponderExcluir
  2. Olá!!! adorei o post, apesar de não entender muito - meu cérebro já naum é o mesmo!

    Sabe, obrigada pelo comentário! Não havia visto a figura por esse lado. Tinha apenas levado no ponto do engraçado, em que temos a figura de Michael que era negro e depois de uma doença, e várias cirurgias ficou branco. Apenas tinha visto por esse ângulo, mas o seu ângulo de visão foi bem mais crítico que o meu, e agradeço, pois depois de ler sua mensagem, fiquei imaginando e meditando sobre o fato, e creio que está correto. E isso me levou a pensar em várias outras coisas, que posteriormente vou colocar no bloguito, mas a primeira foi o quanto que só agora a raça negra passou a ser considerada realmente. Sendo que eles foram e são fundamentais para praticamente todas as outras culturas!
    Obrigada e tenha um ótimo carnaval!

    ResponderExcluir
  3. @Fabrício Obrigado pelo elogio! Para quê serve o comando cd ~ no Windows Vista? Você digitou corretamente o uid e o gid? Certifique-se disso. Vale tentar adicionar a opção rw (-o uid=1000,gid=1000,rw).

    @Two Ways Isso é facim de entender, sô! (mineiramente falando) Sobre a questão do seu post, como eu disse lá, é uma questão de ponto de vista. Eu acho que a pessoa que resolveu diferenciar os outros pela cor deve ter sido muito burra, pois o valor verdadeiro de cada um de nós está naquilo que somos por dentro, transcende a barreira das cores, etnias, religiões etc. :-)

    ResponderExcluir
  4. Até que enfim alguem explicando isso de forma pratica, agora consigo resolver meu problema.

    ResponderExcluir
  5. Parabéns pelo post, bastante didático.

    ResponderExcluir
  6. @Luciano
    @Waelson
    Obrigado pelos elogios! Fico feliz em ter ajudado.

    ResponderExcluir