VirtualBox: mount.vboxsf: falha na montagem com o erro: Nenhum dispositivo deste tipo [fechado]

160

Estou usando o VirtualBox com o OS X como host e o CentOS na VM convidada.

Na pasta criada no OS XI myfolder, adicione-a como pasta compartilhada à VM, ligue-a na pasta criada no CentOS /home/user/myfoldere digite:

sudo mount -t vboxsf myfolder /home/user/myfolder

e tem saída:

/sbin/mount.vboxsf: mounting failed with the error: No such device

O que estou fazendo de errado?

ATUALIZADA:

Guest Additions instalado.

cnaize
fonte
Verifique se o Guest Additions está instalado corretamente, você pode ter que sudo apt-get upgrade, sudo apt-get install build-essential module-assistant; sudo ma preparar; Você precisa ver o módulo Guest Aditions sendo criado ...
ntg
9
Para o internauta aleatório que está com esse problema: faça um favor a si mesmo e veja a segunda resposta.
Jrharshath
4
uma dica - sudo mount -t vboxsf sf_folder /home/user/folder, aqui o sf_foldere folder DEVE ser diferentes nomes
cnaize
5
@jrharshath Qual é a "segunda resposta"? A classificação pode mudar. Clique sharena resposta para obter o link permanente.
23616 wisbucky

Respostas:

167

Minha pasta / área de transferência compartilhada parou de funcionar por algum motivo (provavelmente devido a uma instalação de patch na minha máquina virtual).

sudo mount -t vboxsf Shared_Folder ~/SF/

Deu o seguinte resultado:

VirtualBox: mount.vboxsf: mounting failed with the error: No such device

A solução para mim foi parar o vboxadd e fazer uma configuração depois disso:

cd /opt/VBoxGuestAdditions-*/init  
sudo ./vboxadd setup
Mats
fonte
1
Depois de atualizar meu Ubuntu 12.04 vm para o Ubuntu 14.04, minhas pastas compartilhadas estavam vazias no vm e ao tentar montar manualmente, recebi o erro /sbin/mount.vboxsf: mounting failed with the error: No such device. Depois de executar o procedimento acima e reiniciar o sistema, minhas pastas compartilhadas apareceram como antes da atualização .. obrigado!
Angelo4/
O problema persiste no VirtualBox 5.0.18 com um convidado Ubuntu 16.04, e esta solução funcionou para mim.
Ivan Perez
7
como você para o vboxadd?
Aristofun
1
Obrigado! Eu também tive que instalar o vagabundo-vbguest plugin - stackoverflow.com/a/23752848/2043134
thomas_inckx
1
@aristofun @ brainmurphy1: no mesmo diretório, antes sudo ./vboxadd setup, você pode fazer sudo ./vboxadd stop. Não tenho certeza se ainda é necessário, mas acho que é o que essa frase significa.
precisa saber é
76

Você está usando pastas de compartilhamento, portanto, é necessário instalar o VirtualBox Guest Additions na sua máquina virtual para oferecer suporte a esse recurso.

Vagabundo

Se você estiver usando o Vagrant (OS X :)brew cask install vagrant , execute:

vagrant plugin install vagrant-vbguest
vagrant vbguest

Caso falhe, verifique os logs, por exemplo

vagrant ssh -c "cat /var/log/vboxadd-install.log"

Talvez você esteja perdendo os arquivos de cabeçalho do kernel.

VM

Dentro da VM, você deve instalar o Guest Additions, os cabeçalhos do kernel, iniciar o serviço e verificar se a extensão do kernel está em execução.

Isso depende do sistema operacional convidado, portanto, aqui estão breves etapas:

  1. Instale os cabeçalhos de inclusão do kernel (exigidos pelo VBoxLinuxAdditions).

    • RHEL: sudo apt-get update && sudo apt-get install kernel-devel
    • CentOS: sudo yum update && sudo yum -y install kernel-headers kernel-devel
  2. Instale as adições de convidados (isso depende do sistema operacional).

    • Ubuntu: sudo apt-get -y install dkms build-essential linux-headers-$(uname -r) virtualbox-guest-additions-iso

      Se você não encontrar, verifique aptitude search virtualbox.

    • Debian :sudo apt-get -y install build-essential module-assistant virtualbox-ose-guest-utils

      Se você não encontrar, verifique dpkg -l | grep virtualbox.

    • manualmente baixando o arquivo iso dentro da VM (por exemplo wget) e instalando-o, por exemplo

      1. wget http://download.virtualbox.org/virtualbox/5.0.16/VBoxGuestAdditions_5.0.16.iso -P /tmp
      2. sudo mount -o loop /tmp/VBoxGuestAdditions_5.0.16.iso /mnt
      3. sudo sh -x /mnt/VBoxLinuxAdditions.run # --keep

        Depuração extra: cd ~/install && sh -x ./install.sh /mnt/VBoxLinuxAdditions.run

  3. Verifique novamente se as extensões do kernel estão em funcionamento:

    • sudo modprobe vboxsf
  4. Inicie / reinicie o serviço:

    • manualmente: sudo /opt/VBoxGuestAdditions*/init/vboxadd setup(adicione sudo sh -xà depuração)
    • Debian: sudo /etc/init.d/vboxadd-service start
    • Fedora: sudo /etc/init.d/vboxdrv setup
    • CentOS: sudo service VBoxService start

Construindo o módulo principal de adições de convidados

Se o procedimento acima não funcionou, veja as etapas mais sofisticadas para corrigi-lo. Isso pressupõe que você já tenha o VBoxGuestAdditions instalado (como mostrado acima).

O motivo mais comum pelo qual a montagem da pasta compartilhada não funciona pode estar relacionado à criação do módulo Guest Additions que falhou. Se /var/log/vboxadd-install.logvocê tiver o seguinte erro:

Os cabeçalhos do kernel atual em execução não foram encontrados.

isso significa que você não instalou fontes do kernel ou elas não podem ser encontradas.

Se você os instalou já conforme as instruções acima, execute este comando:

$ sudo sh -x /opt/VBoxGuestAdditions-5.0.16/init/vboxadd setup 2>&1 | grep KERN
+ KERN_VER=2.6.32-573.18.1.el6.x86_64
+ KERN_DIR=/lib/modules/2.6.32-573.18.1.el6.x86_64/build

Então, basicamente, o vboxaddscript espera que as fontes do kernel estejam disponíveis no seguinte diretório:

ls -la /lib/modules/$(uname -r)/build

Verifique se o diretório do kernel existe (o link simbólico aponta para a pasta existente). Caso contrário, instale-os na pasta correta (por exemplo, em /usr/src/kernels).

Portanto, o vboxaddscript pode entrar no diretório de origem do kernel e executar make kernelrelease, obter o valor e comparar com a versão atual do kernel.

Aqui está a lógica:

KERN_VER=`uname -r`
KERN_DIR="/lib/modules/$KERN_VER/build"
if [ -d "$KERN_DIR" ]; then
    KERN_REL=`make -sC $KERN_DIR --no-print-directory kernelrelease 2>/dev/null || true`
    if [ -z "$KERN_REL" -o "x$KERN_REL" = "x$KERN_VER" ]; then
        return 0
    fi
fi

Se a versão do kernel não coincidir com as fontes, talvez você precise atualizar o kernel do Linux (caso as fontes sejam mais recentes que o kernel).

CentOS

Experimentar:

vagrant plugin install vagrant-vbguest vagrant vbgues

Se não funcionar, tente as seguintes etapas manuais do CentOS:

$ sudo yum update
$ sudo yum install kernel-$(uname -r) kernel-devel kernel-headers # or: reinstall
$ rpm -qf /lib/modules/$(uname -r)/build
kernel-2.6.32-573.18.1.el6.x86_64
$ ls -la /lib/modules/$(uname -r)/build
$ sudo reboot # and re-login
$ sudo ln -sv /usr/src/kernels/$(uname -r) /lib/modules/$(uname -r)/build
$ sudo /opt/VBoxGuestAdditions-*/init/vboxadd setup
kenorb
fonte
1
RE a correção do CentOS, resolveu o meu problema, mas verifique se o gcc está instalado.
Ggdx
1
Usando Chef Test Kitchen (Vagrant), vagabundo plugin install vagrant-vbguest funcionou para mim
pfernandom
No meu caso, foi porque os GuestAdditions não eram os mesmos declarados entre o Vagrant e o Guest.
precisa saber é o seguinte
1
vagrant plugin install vagrant-vbguest vagrant vbguestfunciona também no centos 7 e resolveu o problema. Obrigado
Med Ali Difallah 13/03/19
55

Eu sou capaz de resolver isso executando abaixo do comando

modprobe -a vboxguest vboxsf vboxvideo

Atul N
fonte
O mesmo problema ocorreu no meu vbox5.0.6 e no Centos 7 guest. O problema é que precisarei executar isso todas as vezes após a (re) inicialização.
Webbertiger
14
Isso funciona porque esses são os módulos do kernel que você precisa executar em um convidado para que o VirtualBox execute corretamente todas as suas funções. Especificamente, vboxsf(Pastas compartilhadas do VirtualBox) é o necessário aqui. Você pode listar esses 3 arquivos, um por linha, em um arquivo /etc/modules-load.d/(talvez chame virtualbox.conf) para fazer com que essa alteração persista durante as reinicializações.
Alquimista de dois bits
1
No Debian 8 guest, executar este comando arruinou a saída de vídeo.
CodingWithSpike
23

Além da resposta do @Mats , estou adicionando mais algumas informações (isso me ajudou no Debian 8).

Minha pasta / área de transferência compartilhada parou de funcionar por algum motivo (provavelmente devido a uma instalação de patch na minha máquina virtual).

sudo mount -t vboxsf Shared_Folder ~/SF/

Deu-me o seguinte resultado:

VirtualBox: mount.vboxsf: mounting failed with the error: No such device

A solução para mim foi parar o vboxadd e fazer uma configuração depois disso:

cd /opt/VBoxGuestAdditions-*/init 
sudo ./vboxadd setup

Neste ponto, se você ainda receber o seguinte erro:

Não existe esse dispositivo. A instalação do Guest Additions pode ter falhado. O erro foi registrado/var/log/vboxadd-install.log

Você precisa instalar os cabeçalhos linux:

apt-get install linux-headers-$(uname -r)

então você pode instalar o Guest Additions:

sh /media/cdrom/VBoxLinuxAdditions.run --nox11

e reinicie seu Linux:

reboot

então você poderá montar sua pasta compartilhada!

mount -t vboxsf Shared_Folder ~/SF/

Mais informações (em francês), consulte esta página .

Froggiz
fonte
3
apt-get install linux-headers-virtualajudou com o Lubuntu 15.04 no VirtualBox
fider
/ media / cdrom ois está vazio no meu caso
CCC
Você clicou em Instalar acréscimos de convidados no menu Dispositivos?
Froggiz 26/01/19
9

Isso foi resolvido por:

yum install gcc kernel-devel make

a solução alternativa está aqui: https://gist.github.com/larsar/1687725

cnaize
fonte
Fiz todas as atualizações sem sorte alguma. Desculpe, a resposta com 13 up-votos fez um trabalho melhor
Andrew Shatnyy
Estou usando um host do Windows 7 com o RHEL 7 e isso resolveu o problema para mim (incluindo as informações do link principal) - Obrigado!
Chris Townsend
No Ubuntu, isso funcionou: sudo apt-get install linux-headers-dkms essenciais para uname -rcompilação
cstroe
4
@AndrewShatnyy "resposta com 13 votos positivos" é ambíguo. Por favor, poste o link permanente para a resposta que você está se referindo a (clique sharesob a resposta)
wisbucky
1
@wisbucky você está arrependido. stackoverflow.com/a/29456128/849187 trabalhou duas vezes já
Andrew Shatnyy
6

A pasta compartilhada funcionava anteriormente para mim, mas de repente parou de funcionar (Virualbox - o host era o Windows 7, o convidado era o OpenSuSe)

modprobe -a vboxguest vboxsf vboxvideo

então mount -t vboxsf testsf /opt/tsf ( testsfera a pasta na unidade Windows C que foi adicionada na pasta compartilhada do Virtualbox --- e /opt/tsfé a pasta no OpenSuse

MAlam
fonte
5

Meu host é Windows10, meu convidado da VM é o ubuntu build by vagrant. Isso funcionou para mim:

vagrant plugin install vagrant-winnfsd
Kaiacode
fonte
3

Eu também tive um sistema em funcionamento que de repente parou de funcionar com o erro descrito.

Depois de usar meus / lib / modules, parece que o vboxvfsmódulo não existe mais. Em vez disso, modprobe vboxsfera o encantamento necessário para reiniciar as coisas.

Não tenho certeza quando essa mudança ocorreu, mas me pegou de surpresa.

Tim N
fonte
1
Ele funcionou para mim depois de executar o `sudo modprobe vboxsf` #
Viorel Mirea 13/11/2015
3

Estou executando o VirtualBox 5.1.20 e tive um problema semelhante. Aqui está um URL para onde eu encontrei a correção e a correção que implementei:

# https://dsin.wordpress.com/2016/08/17/ubuntu-wrong-fs-type-bad-option-bad-superblock/
if [ "5.1.20" == "${VBOXVER}" ]; then
  rm /sbin/mount.vboxsf
  ln -s /usr/lib/VBoxGuestAdditions/mount.vboxsf /sbin/mount.vboxsf
fi

O link tinha algo semelhante a /usr/lib/VBoxGuestAdditions/other/mount.vboxsf, e não o que eu tenho no trecho do script.

Para um script de construção, eu uso no vagrant para as adições:

https://github.com/rburkholder/vagrant/blob/master/scripts/additions.sh

Parece ser uma correção em https://www.virtualbox.org/ticket/16670

Raymond Burkholder
fonte
3

A solução para mim foi atualizar as adições de convidados

(clique em Dispositivos -> imagem do CD Inserir adições de convidados)

Arch Linux Tux
fonte
2

    Pode haver erros / abordagem incorreta em dois cenários. Verifique os dois e descubra o

CENÁRIO 1:

      Depois de executar o VBoxLinuxAdditions.run ou o VBoxSolarisAdditions.pkg ou o VBoxWindowsAdditions.exe, verifique se todos os módulos estão sendo instalados corretamente.

1.1.a. No caso de VBoxLinuxAdditions , se a criação dos
módulos do kernel do VirtualBox Guest Additions falhar,
verifique o arquivo de log em /var/log/vboxadd-install.log . Se o erro ocorrer devido à versão do kernel, atualize o kernel e reinicie o vm. No caso do fedora ,
1.1.b. yum update kernel *
1.1.c.reinicie
1.2. Se nada falhar, tudo está bem. Você já está tendo a versão esperada do kernel

CENÁRIO 2:

     Se o VBoxGuestAdditions estiver instalado (verifique se há uma pasta / opt / VBoxGuestAdditions- * está presente .... * representa a versão), é necessário iniciá-lo antes da montagem.

2.1 cd / opt / VBoxGuestAdditions - * / init && ./vboxadd start

      Você precisa especificar o ID do usuário e o ID do grupo do seu usuário vm como opções para o comando mount.

2.2.a. Obtendo uid e gid de um usuário:
      id -u <'usuário'>
      id -g <'usuário'>
2.2.b. Configurando uid e gid nas opções do comando mount:
      mount -t vboxsf -o uid = x, gid = x shared_folder_name guest_folder

yottabytt
fonte
2

Para mim, em um Mac, eu tinha uma imagem antiga do VirtualBox armazenada em minha máquina que não tinha metadados, por isso não estava sendo atualizada para a versão mais recente.

Essa imagem antiga tinha uma versão mais antiga do plug-in vbguest instalada, com a qual o plug-in vbguest mais recente na minha máquina não funcionava.

Então, para corrigi-lo, apenas removi a imagem em que meu Vagrant se baseava e, em seguida, o Vagrant baixou a versão mais recente e funcionou bem.

# Remove an old version of the virtual box image that my vagrant was using    
$ vagrant box remove centos/7 

Você pode descobrir quais caixas armazenaram em cache na sua máquina executando:

$ vagrant box list

Também atualizei meu plug-in vbguest em minhas tentativas anteriores de fazê-lo funcionar, usando o processo a seguir, mas não acho que isso tenha ajudado. PARA SUA INFORMAÇÃO !

# Get rid of old plugins
vagrant plugin expunge 

# Globally install the latest version of the vbguest plugin`
vagrant plugin install vagrant-vbguest 

Se você encontrar o recurso trazer a caixa falhar nas adições de convidados, tente fazer o seguinte para garantir que os plug-ins sejam instalados corretamente. Isso baixa a imagem com base mais recente no seu sistema (para mim, CentOS) e pode resolver o problema (foi o que aconteceu comigo).

$ vagrant box update
Brad Parks
fonte
1

No Ubuntu, isso funcionou:

sudo apt-get install build-essential linux-headers-`uname -r` dkms
cstroe
fonte
1

Teve o mesmo problema com o VirtualBox 5.0.16 / rXXX

Instalado o VirtualBox 5.0.18 mais recente e o Vagrant 1.9.3, o problema foi resolvido.

AKS
fonte
1

Eu adicionei como usuário root

/etc/rc.d/rc.local 
/root/mount-vboxsf.sh

então

chmod +x /etc/rc.d/rc.local

e o script de amostra /root/mount-vboxsf.sh(defina suas próprias opções uid e gid)

modprobe -a vboxguest vboxsf vboxvideo
mount -t vboxsf NAME_SHARED_DIRECTORY /media/sf_NAME_SHARED_DIRECTORY -o rw,uid=0,gid=0

você precisa adicionar

chmod + /root/mount-vboxsf.sh
Diego piccinini
fonte
0

Tenho um problema semelhante, verifique o cabeçalho se não for o mesmo e execute o comando abaixo

CentOS: atualização do sudo yum && sudo yum -y install kernel-headers kernel-devel

Jayen Chondigara
fonte
0

Se você estiver no Debian:

1) remova todo o pacote instalado pelo arquivo ISO do Virtualbox Guest Additions:

sh /media/cdrom/VBoxLinuxAdditions.run uninstall

2) instale pacotes do Virtualbox:

apt-get install build-essential module-assistant virtualbox-guest-dkms virtualbox-guest-utils

Observe que, mesmo sem modprobe vboxsfretornar nada (para que o módulo seja carregado corretamente), o vboxsf.socomando chamará um executável nomeado mount.vboxsf, fornecido por virtualbox-guest-utils. Ignorar esta opção impedirá que você entenda a causa real do erro.

strace mount /your-directoryfoi uma grande ajuda (não existe um arquivo ou diretório assim /sbin/mount.vboxsf).

Yvan
fonte
0

Uma atualização fez o truque para mim!

$ vagrant box update
$ vagrant plugin install vagrant-vbguest 
Shankar ARUL - jupyterdata.com
fonte
-1

Abaixo de dois comandos funciona para mim.

vagrant ssh
sudo mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant
SayOwl
fonte
-8

Ok, todo mundo está perdendo um fato básico.

mkdir /test - Torna o subdiretório no diretório atual.

sudo mkdir /test - Crie diretório na raiz.

Portanto, se o seu nome de diretório compartilhado for sharede você fizer o seguinte:

mkdir /test
sudo mount -t vboxsf shared /test

Ele gera este erro:

sbin/mount.vboxsf: mounting failed with the error: No such file or directory

Porque o diretório está no lugar errado! Sim, é o que este erro está dizendo. O erro não está dizendo recarregar as opções de convidado do VBOX.

Mas se você fizer isso:

sudo mkdir ~/test
sudo mount -t vboxsf shared ~/test

Então funciona bem.

Realmente me surpreende quantas pessoas sugerem recarregar as adições de convidados do Vbox para solucionar esse erro ou escrever um programa complexo para resolver um diretório criado no lugar errado.

CRANKYOLDGUY
fonte
2
O erro encontrado é "Não existe esse dispositivo", não "Esse arquivo ou diretório não existe". :)
mjtko
mynttest @ mynttest-VirtualBox: / media / sf_shared $ sudo mkdir ~ / test sudo mount -t vboxsf vbshared ~ / test mkdir: opção inválida - 't' Tente `mkdir --help 'para obter mais informações.
Berit Larsen
1
mkdir /testcriará o diretório / test em /. sudo mkdir /testcriará o mesmo diretório, mas pertencerá à raiz e não ao usuário atual.
precisa
Eu tive o mesmo problema. Então eu instalei kernel-devel.x86_64 0:2.6.32-754.11.1.el6e, em seguida, executei estes command-- cd /opt/VBoxGuestAdditions-*/inite sudo ./vboxadd setup. Isso funcionou para mim.
Vishwanath Sharma