Compartilhe todo o diretório inicial entre host e convidado com o Virtual Box

Compartilhe todo o diretório inicial entre host e convidado com o Virtual Box

Por alguns motivos, o local onde trabalho está preso ao Ubuntu 12.04. Como preciso de muitos softwares recentes, queria usar uma VM com Ubuntu 14.04. Configurei tudo com sucesso com virtual box 4.3(o Oracle Edition).

Depois disso, tentei criar um compartilhamento do diretório inicial do meu host e usá-lo como o diretório inicial do usuário no convidado. Um dos motivos é que não quero perder tudo se a caixa virtual falhar, então ter todos os arquivos no HD real parece importante.

Atualmente o diretório está montado no convidado com AutoFS. O usuário guest e host tem o mesmo login, uid e gid principal.

Parece funcionar quando uso o ssh para fazer login de convidado para convidado, mas não funciona com login gráfico: o usuário é desconectado imediatamente. Acho que é porque o login gráfico no host cria alguns arquivos; o login gráfico tenta criar esses arquivos no convidado e falha.

Qualquer ideia?

Responder1

Concordo com @Dan Cornilescu. Esta não é uma boa ideia, especialmente considerando o quão temperamental o Linux pode ser quando arquivos/pastas estão sendo manipulados com privilégios Sudo, ou a falta deles.

Embora eu tenha certeza de que o que você está sugerindo (apesar do fato de você nunca ter feito uma pergunta) seja possível, não acho que seja a melhor solução para o problema inicial que você mencionou. "Um dos motivos é que não quero perder tudo se a caixa virtual falhar..."

Eu entendo esse problema completamente. Por um lado você tem um incrível (livre) serviço fornecido pela Oracle, mas você não quer depender totalmente de algo que não é a "norma". No entanto, existem várias maneiras de neutralizar esse problema que oferecem mais tranquilidade do que “ter todos os arquivos no HD real”. Aqui estão alguns recursos integrados ao VirtualBox que eu uso acima de todos os outros.

~"Instantâneos." Eles fazem exatamente isso. Crie um instantâneo da VM antes/depois de qualquer tipo de instalação ou agende um instantâneo com o CronTab. Dessa forma, você sempre terá uma maneira rápida e fácil de carregar/inicializar uma versão anterior antes de uma falha.

~ Um simplesexportar importarda VM (ou .VHD) conforme necessário. Prefiro esse método porque é mais estático (para minhas necessidades) do que Snapshots. Ter uma exportação VHD/VM como backup é essencialmente um computador portátil e/ou um backup interativo. Em vez de uma imagem padrão (inativa) criada por um método proprietário.

~ Crie o seu próprio ou use um Vagrant Box. Mais informaçõesAquieAqui. Você pode encontrar um .boxque atenda às suas necessidades e usá-lo como backup oumelhor aindause um script básico .boxem conjunto com um .SHscript personalizado (BASH). Atualize este script à medida que você instala programas e altera as configurações para que, em caso de falha, você apenas execute um script simples e violä! Você está pronto para começar, logo após uma nova instalação.

Responder2

Em geral, acho que não é uma boa ideia compartilhar seu homedir entre máquinas com diferentes (versões de) servidor X, gerenciador de janelas e/ou aplicativos X porque alguns deles geralmente usam os mesmos arquivos de configuração do diretório inicial e versões diferentes podem ser usadas uns aos outros. Especialmente se diferentes versões de software forem usadas ao mesmo tempo.

Muitas vezes, depois que uma versão mais recente de algum software atualiza os arquivos, as versões mais antigas não conseguem mais usá-los.

Isso também pode acontecer na outra direção, normalmente ao tentar reutilizar um homedir como está de um sistema operacional mais antigo em um sistema operacional mais recente (enquanto um usuário com um homedir recém-criado no sistema operacional mais recente funciona perfeitamente) - sua incapacidade fazer login na GUI pode ser esse o caso.

Uma abordagem possível para manter o homedir da VM no HD do host de maneira não conflitante (estou usando algo nesse sentido quando estou atualizando meu sistema operacional):

  • exporte o host homedir via NFS e monte-o na VM, digamos em /mnt/host_userid.
  • criar diga umvm_homedirdir dentro dele, que você usará como homedir na VM, vinculando-o à VM/lardiretório:

    /home/userid -> /mnt/host_userid/vm_homedir

  • diretórios/arquivos de link simbólicoalém de diretórios/arquivos de configuração de aplicativospara acessá-los convenientemente de ambas as máquinas no mesmo lugar, assim:

/mnt/host_userid/vm_homedir/documents -> ../documents

Dessa forma você mantém tudo no HD host (acessível mesmo que a VM esteja inativa), mas cada máquina funciona com sua própria cópia dos arquivos de configuração.

Responder3

Seguindo as sugestões (e comentários) de @Dan Cornilescu, resolvi esse problema assim:

  1. Criou um compartilhamento de caixa virtual para o diretório inicial do host, digamoshost_home
  2. Opcionalmente (mas muito importante no meu caso) permitiu ao convidado criar links simbólicos em pastas compartilhadas (vejaaquipor exemplo)
  3. Monte este compartilhamento no convidado no momento da inicialização com o usuário convidado uid e gid em say /mnt/host_home(vejaresposta aceita aquipor exemplo)
  4. Na casa de hóspedes, crie links simbólicos para as pastas que desejo compartilhar (funciona para Desktop, Downloads, etc.)

Por enquanto tudo funciona como esperado. Pode haver uma queda no desempenho ao ler ou gravar arquivos, mas tudo bem.

informação relacionada