A montagem da pasta compartilhada do Virtualbox do fstab falha; funciona quando a inicialização estiver concluída

41

Eu tenho o Ubuntu 13.10 instalado no Virtualbox 4.3. A máquina host é o Windows.

Eu tenho algumas pastas compartilhadas do Virtualbox sendo montadas pelo / etc / fstab. Até recentemente, essa configuração funcionava bem, mas após a atualização do Ubuntu 13.04 e do Virtualbox 4.2 (essencialmente ao mesmo tempo), a montagem fstab parou de funcionar. Eu recebo o seguinte erro durante a inicialização:

An error occurred while mounting /home/benme/Documents.
keys:Press S to skip mounting or M for manual recovery

Pressionar M para recuperação manual e depois tentar montar manualmente também falha:

root@benme-vb:~# cd /home/benme
root@benme-vb:/home/benme# mount Documents
/sbin/mount.vboxsf: mounting failed with the error: No such device

Mas se eu pular a montagem durante a inicialização, aguarde o Unity iniciar e depois monte manualmente em um shell, tudo funcionará bem:

benme-vb ~ % ls Documents
benme-vb ~ % sudo mount Documents
[sudo] password for benme: 
benme-vb ~ % ls Documents
    # actual file list omitted

Note que quando eu monto manualmente, estou deixando o mount pegar todas as opções do / etc / fstab, e ele funciona. Isso sugere para mim que é algum tipo de problema de tempo, em que o Virtualbox não está "pronto" para fornecer as montagens de arquivos compartilhados no momento em que as montagens / etc / fstab são executadas durante a inicialização.

Aqui está a linha fstab, apenas para completar:

Documents       /home/benme/Documents   vboxsf  uid=benme,gid=benme,dmode=774,fmode=664     0   0

Existe algo que eu possa fazer sobre isso do lado do Ubuntu? Ou alguém sabe mais sobre isso do ângulo do Virtualbox?

Encontrei um relatório antigo no rastreador de erros do Virtualbox com sintomas idênticos, mas nesse caso o usuário atualizou o Virtualbox sem atualizar suas adições de convidados e resolver o problema; isso não está acontecendo aqui, eu definitivamente tenho as adições de 4.3 convidados instaladas.

Ben
fonte

Respostas:

46

Também tive problemas com esse problema. Eu /var/wwwmontei usando a funcionalidade de pastas compartilhadas do VBox, então isso foi bastante irritante.

A solução que encontrei foi forçar o vboxsfcarregamento do módulo antes da montagem dos sistemas de arquivos. Basta adicionar vboxsfuma linha própria em /etc/modules.

Outra solução é configurar o noauto /etc/fstabe montar manualmente as unidades /etc/rc.local, mas essa não era uma solução tão boa para mim, porque naquele momento o Apache já havia iniciado e não conseguia encontrar nada /var/www.

Richard Turner
fonte
1
impressionante! adicionar ao / etc / modules funcionou perfeitamente. obrigado Richard!
ThePosey
@ThePosey Fico feliz em ter ajudado!
Richard Turner
Este foi um problema para mim no convidado Ubuntu Server 14.04. E esta resposta (a solução / etc / modules) resolveu isso para mim. Obrigado! PS Btw, se você por acaso, tentando descobrir / fix coisas, permitiu Auto-montagem em ambientes VirtualBox, desativá-lo novamente;)
Reinis
2
@qodeninja Como eu disse no meu segundo parágrafo: "Basta adicionar vboxsfuma linha própria em /etc/modules.
Richard Turner
1
Eu tive que adicionar vboxguest e vboxsf aos / etc / modules em um sistema convidado Ubuntu 14.04 para que isso funcionasse.
mattanja
21

Além da sugestão de Richard Turner de adicionar vboxsfuma linha própria a /etc/modules, sugiro adicionar a _netdevopção mount a /etc/fstab. Testei no Ubuntu 12.04 LTS e isso parece adicionar a quantidade certa de atraso para que a montagem seja bem-sucedida.

Minha /etc/fstabentrada:

dev /media/dev vboxsf defaults,_netdev 0 0

deoren
fonte
4
Isso funciona para mim, mesmo sem usar a solução de Turner. Também faz muito sentido, já que a página de Ajuda da Comunidade Ubuntu para opções de fstab diz: " _netdev- este é um dispositivo de rede, monte-o após abrir a rede". Eu fiz não tem que carregar vboxsfem /etc/modules, apenas adicionando _netdevfuncionou!
23616 Mark Mikofski
1
Isso funciona para mim também no Ubuntu 16.04, mesmo sem a solução de Turner.
Zhenya
5

A correção de Richard parou de funcionar para mim após a última atualização (VirtualBox 4.3.18, Ubuntu 14.04). Felizmente, eu consegui consertá-lo, carregando vboxsfdiretamente com o kernel:

# echo "vboxsf" >> /etc/initramfs-tools/modules
# update-initramfs -u

O primeiro comando adiciona um parâmetro para carregar o módulo no kernel e o segundo atualiza o sistema de arquivos init. Após uma reinicialização, pude usar minhas fstab-mounts novamente :)

Aviso: O processo de inicialização pode congelar, se uma pasta compartilhada não puder ser montada. Portanto, teste sua configuração antes de adicionar o módulo ao initramfs. Se o seu sistema travar de qualquer maneira, você pode inicializar no modo de recuperação para corrigir o problema.

Torben
fonte
Eu tentei esta solução para carregar o vboxsfmódulo mais cedo ... Apenas congelou minha sequência de inicialização, então tive que removê-lo.
Rerito 27/11
Sim, incluindo o módulo que pode congelar antecipadamente o processo de inicialização, se a configuração da pasta compartilhada estiver quebrada. No entanto, eu nunca experimentou qualquer congelamento de inicialização com uma configuração correta ...
Torben
Adicionei um aviso à resposta para tornar as coisas mais claras.
Torben #
4

Eu só queria dizer que forçar o vboxsfcarregamento do módulo mais cedo me ajudou (como na resposta de Richard Turner), mas a linha fstab ainda não funcionou para mim.

O que acabei fazendo foi colocar o comando mount (que funcionou) /etc/rc.local. Um pouco de um hack, mas funcionou.

ezuk
fonte
1
Não entendo como a sugestão de Richard Turner "ajudou você", mas ao mesmo tempo, a linha fstab "ainda não funcionou para você" ...?
Jrandom_hacker 12/04/19
4

Com a pasta compartilhada listada no fstab, acho que a inicialização travará ao tentar montá-la usando o VirtualBox 5 e o Ubuntu 14.04. A solução parece atrasar a montagem até que o serviço GuestAddition esteja disponível (a /etc/modulessolução de Richard Turner não me pareceu suficiente).

Para fazer isso, verifique se você tem noautoas opções para a pasta compartilhada /etc/fstab. Por exemplo, para uma pasta compartilhada chamada vmshare:

vmshare    /home/user/share    vboxsf    defaults,noauto    0    0

Em seguida, adicione uma linha /etc/rc.localpara montar o compartilhamento após a inicialização:

mount vmshare
Kevin Sadler
fonte
Esta foi a única solução que funcionou para mim, usando VBox 5.0.16 e Ubuntu 14.04
TJ Compton
3

Parece que vboxsffalta o fs-vboxsfalias (que é como os módulos do kernel são carregados automaticamente ao montar esse tipo de sistema de arquivos pela primeira vez), portanto, a adição do alias em /etc/modprobe.ddeve fazer o truque:

$ echo "alias fs-vboxsf vboxsf" | sudo tee /etc/modprobe.d/vboxsf.conf
hyperair
fonte
Ainda não tentei isso, mas parece promissor.
Jrandom_hacker 12/04
2

Eu tinha o mesmo problema e estava trabalhando nas soluções sugeridas, mas sem sucesso. A solução de Torben congelou a bota, então foi necessário desfazê-la. Então eu pensei que deveria solucionar problemas /etc/fstabusando sudo mount -a. A sintaxe da minha entrada parecia perfeita, mas ainda falhou. Também pude montar manualmente o systys do arquivo usando o comando mount na janela do terminal.

O que descobri é que havia espaços entre os dois primeiros parâmetros (dispositivo e ponto de montagem). Substituí-los por uma guia e ele funciona. Sério?!!!!

svenyonson
fonte
Você tem certeza de que havia dois caracteres de espaço (código ASCII 32)? Porque um ou mais desses itens devem ser tão bons quanto um caractere de tabulação. Às vezes, digito acidentalmente caracteres de espaço sem quebra quando pressiono minha tecla Shift para cedo ou a libero tarde demais, pressionando a barra de espaço. Eles parecem iguais, mas confundem muitos aplicativos.
David Foerster
Tudo o que sei é que retrocedi por todo o espaço em branco e inseri uma única guia e funcionou.
Svenyonson
Trocar meus espaços por guias funcionou para mim. Meu / etc / fstab existente tinha espaços (até onde eu sabia) e eu os repliquei exatamente. As linhas existentes tinham um único espaço. Mas reescrever as minhas com guias fez tudo funcionar.
jcaruso
Isso não funcionou para mim, mas seguindo a recomendação de Kevin Sadler de usar noautopara atrasar a montagem e depois adicionar o mount <sharename>que rc.localfoi feito. Não tentei a solução de Turner.
23616 Mark Mikofski
1

Acredito que encontrei o caminho certo para lidar com isso no Arch Wiki . Use a comment=systemd.automountopção

A opção acima aparece no /etc/fstabarquivo com as outras opções. Por exemplo:

Fedora /var/ftp/pub/Fedora vboxsf uid=1001,gid=1001,comment=systemd.automount 0 0
ultracrepidário
fonte
Isso não funcionou para mim, mas a resposta de Keven Sadlier funcionou.
23616 Mark Mikofski