Não é possível montar uma unidade de rede CIFS na inicialização


22

Adicionei um compartilhamento no fstab para acessar uma unidade de rede com todos os meus arquivos ... o fstab se parece com:

proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
//192.168.1.73/disk1 /media/disk1 cifs username=pi,password=raspberry,_netdev,uid=1000,gid=1000,iocharset=utf8, 0 0
# a swapfile is not a swap partition, so no using swapon|off from here on, use dphys-swapfile swap[on|off] for that

Quando executo sudo mount -aa unidade de rede é montada com êxito e posso fazê-lo cd /media/disk1, o lsque corretamente fornece uma lista de todas as pastas na referida unidade de rede.

No entanto, depois de reiniciar o pi quando eu cdchegar ao local e executar lsnovamente, nada estará lá. Eu tenho que executar manualmente sudo mount -anovamente, que monta a unidade.

Eu já vi isso relatado muitas vezes em outros fóruns, e o consenso parece ser que as montagens no fstab estão acontecendo muito cedo - antes que a rede seja estabelecida. Eu tentei implementar as coisas que eu entendo - mas, para ser sincero, muito disso está além da minha cabeça. Eu adicionei _netdevpara a linha no fstab, eu adicionei rootdelay=10em /boot/cmdline.txt, eu tenho instalado networkmanager ... nada disso ajudou.

E então eu me viro para você, pronto para jogar o pi pela janela - seguido por mim. Qualquer ajuda, muito apreciada.

Respostas:


9

Eu sugiro que você adicione a montagem à raiz ou ao seu usuário crontab.

Como você está atualmente usando o sudo, o root crontab parece ser o mais apropriado.

sudo crontab -e # para editar a raiz crontab

Adicione uma entrada @reboot ao crontab. Você precisa de uma linha como

@reboot (suspensão 30; / bin / mount / media / disk1) e

Isso aguardará 30 segundos antes de montar o disco.


1
Desculpas pelo tempo necessário para chegar a isso, eu só tive a chance de brincar com isso novamente. Estou muito aliviado em dizer que sua solução funcionou perfeitamente. Muito obrigado pela sua ajuda.
Luke Twomey

isso é certo, mas como desmontamos processualmente no desligamento?
Ciasto piekarz

14

Eu também tive o mesmo problema em relação à montagem automática de uma unidade de rede na inicialização. Eu tentei adicionar mount -acomando no /etc/rc.localdepois de editar o /etc/fstabmas sem sucesso. O motivo pelo qual não funciona é que a rede não está pronta antes da mount -aexecução.

Como outros usuários mencionaram, o problema é que as unidades fstab são montadas antes mesmo da rede estar ativa. A fim de ter certeza de que a rede está pronto durante o boot, há uma opção Wait for Network at Bootno raspi-config.

corre

sudo raspi-config

e defina a Wait for Network at Bootopção Slow wait for network connection before completing boote reinicie. É claro que o tempo de inicialização pode ser afetado, mas se isso não for crítico, esse método pode ser usado.

Após a reinicialização, você pode verificar se a unidade de rede está montada automaticamente: verificação rápida ls /media/DRIVE_NAME oudf


Esta é certamente a correção que funcionou para mim. Com as últimas atualizações do rpi3 a partir de novembro de 2016
ChrisAdmin

Prefiro usar a /etc/rc.local mount -asolução, mas não se esqueça de dormir primeiro. Veja a minha resposta eu postei aqui: raspberrypi.stackexchange.com/a/63690/49091
Gabriel Staples

4

Notas de atualização, visto que isso apareceu no Google. Sofri a mesma série de frustrações ao montar meu Airport Time Capsule. Estou executando o Raspberry Pi 3B + no Rasbian Stretch lançado em 14 de março de 2018 com a GUI padrão.

Aqui está minha linha de código fstab:

//100.10.10.1/Data /mnt/timecapsule cifs username=********, password=******, vers=1.0, rw, uid=1000, iocharset=utf8, sec=ntlm 0 0

Algumas mudanças parecem ter ocorrido ao longo do tempo:

  1. Você precisa adicionar a instrução "vers = 1.0"
  2. _netdev não faz nada no sistema de arquivos CFIS, funciona apenas no sistema de arquivos NFS (conforme observado por Gabriel Staples abaixo)
  3. "user =" e "pass =" agora devem ser "username =" e "password =" respectivamente
  4. Por fim, agora existe uma caixa "Aguardar rede" que pode ser marcada no Raspberry Pi Configuration Utility, que resolveu meu problema de montagem durante a inicialização.

Após 2 dias de lutas, o meu agora está finalmente montado e o faz na bota!


1

Outro truque para resolver esse problema é anexar na parte inferior do arquivo /etc/rc.localo comando:

mount -a

Após a reinicialização, você pode verificar se está tudo bem digitando o comando:

df -h

e você verá algo assim:

pi@raspberrypi ~ $ df -h
File system      Dim. Usati Dispon. Uso% Montato su
/dev/root        7,2G  6,3G    584M  92% /
devtmpfs         119M     0    119M   0% /dev
tmpfs             25M  412K     25M   2% /run
tmpfs            5,0M     0    5,0M   0% /run/lock
tmpfs             49M     0     49M   0% /run/shm
/dev/mmcblk0p1    56M   20M     37M  36% /boot
//192.168.1.1/ws 466G  452G     14G  98% /mnt/winshare  <----------

0

A _netdevopção in /etc/fstabparece não fazer nada com os compartilhamentos cifs. Este recurso ( https://help.ubuntu.com/community/Fstab ) parece confirmar que quando diz "_netdev - este é um dispositivo de rede, monte-o após abrir a rede. Válido apenas com o fstype nfs ".

Eu prefiro usar o /etc/rc.localarquivo para corrigir isso, por dormir e, em seguida, chamando mount -adentro dele, ao invés de usar crontabou a Wait for network at bootopção raspi-config. No entanto, para que a /etc/rc.localcorreção funcione, não esqueça de dormir, conforme explicado abaixo.

O que fiz para corrigir esse problema (no meu Pi3) é modificar /etc/rc.localpara dormir 20 segundos (ligando sleep 20) e depois ligar mount -a. Dessa forma, mesmo que a rede ainda não esteja conectada quando o sistema ler o arquivo fstab pela primeira vez, a montagem falhará, forço o sistema a aguardar 20 segundos aqui (dando tempo à rede para conectar-se) e o forço a ligar mount -anovamente para montar todas as unidades nofstab arquivo.

Aqui está a /etc/rc.localaparência do meu arquivo:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
#GS notes: a *minimum* of sleep 10 is required for the mount below to work on the Pi 3; it failed with sleep 5, but worked with sleep 10, sleep 15, and sleep 30
sleep 20
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
  mount -a #GS: mount all drives in /etc/fstab
fi

exit 0

Feito! Agora funciona perfeitamente para mim!

Referências:


0

No meu caso, comprei um Raspberry Pi 3 e instalei o Raspbian Stretch , editei o meu fstab com meu arranjo favorito de unidades de rede como este:

//172.30.0.54/mnt/anim /mnt/share/Z cifs  username=frieza,password=meh,uid=1000,gid=1000,vers=2.0 0 0
//172.30.0.56/share/V /mnt/share/V cifs  username=goku,password=meh,uid=1000,gid=1000,vers=2.0 0 0
//172.30.0.56/share/M /mnt/share/M cifs  username=piccolo,password=meh,uid=1000,gid=1000,vers=2.0 0 0
//172.30.0.56/share/O /mnt/share/O cifs  username=drbrief,password=meh,uid=1000,gid=1000,vers=2.0 0 0
//172.30.0.56/share/R /mnt/share/R cifs  username=vegeta,password=meh,uid=1000,gid=1000,vers=2.0 0 0

Então, sempre que eu usava:

sudo mount -a

Todas as unidades listadas no fstab seriam montadas automaticamente e adicionei isso ao rc.local e a vários outros locais para que eu pudesse aproveitar o conteúdo dessas unidades na inicialização, para resumir a história, nada funcionou até que decidi adicionar uma linha à raiz crontab gosta de:

sudo crontab -e

Escolha meu editor (nano no caso y) Em seguida, adicione esta linha na parte inferior

@reboot (sleep 20;/bin/mount -a)&

Tudo funcionou bem no meu caso após a reinicialização. Espero que isso ajude vocês.

NOTA:

Se você tiver algum problema, sempre poderá executar:

service cron status

E isso lhe dará uma dica sobre o que correu e o que não


0

Você pode adicionar os atributos _netdev e comment = systemd.automount no fstab e tudo está funcionando bem para mim na reinicialização. Eu costumava enfrentar o mesmo problema na reinicialização.

\\network_shared_location\directory /your_mount_location/mount_directory cifs _netdev,username=<your_username>,password=<your_password>,workgroup=<YOUR_WORKGROUP>,users,auto,user_xattr,comment=systemd.automount 0 0

-1

Sei que esta é uma resposta um pouco tardia, mas tive o mesmo problema e estava relacionado à falta de rede quando a fstabchamada foi chamada. Eu tentei o crontabprimeiro e funcionou ok, mas pensei que era um pouco confuso ...

Há um ótimo post aqui que é executado usando um script init.dpara executar o mount como no boot ... está funcionando muito bem para mim agora.


1
Você pode editar sua resposta para fornecer os detalhes mais destacados do seu link, em caso de morte futura do link .
Greenonline 16/09/2015
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.