Nie można uzyskać dysku sieciowego CIFS do zamontowania podczas rozruchu

22

Dodałem udział w fstab, aby uzyskać dostęp do dysku sieciowego ze wszystkimi moimi plikami na ... fstab wygląda następująco:

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

Kiedy uruchamiam sudo mount -azaczepy dysku sieciowym pomyślnie i mogę cd /media/disk1wtedy lsktóry poprawnie daje mi listę wszystkich folderów na wspomnianym dysku sieciowym.

Jednak po ponownym uruchomieniu pi, gdy cdprzechodzę do tej lokalizacji i uruchamiam lsponownie, nic tam nie ma. Muszę ręcznie uruchomić sudo mount -aponownie, a następnie montuje dysk.

Widziałem to wiele razy na innych forach i wydaje się, że istnieje konsensus, że mounts w fstab zdarzają się zbyt wcześnie - zanim sieć zostanie ustanowiona. Próbowałem wdrożyć rzeczy, które rozumiem - ale szczerze mówiąc, wiele z nich to coś ponad moje możliwości. Dodałem _netdevdo linii w fstab, dodałem rootdelay=10do /boot/cmdline.txt, zainstalowałem menedżera sieci ... nic z tego nie pomogło.

Zwracam się więc do ciebie, gotowa wyrzucić pi przez okno - a za mną. Każda pomoc, bardzo ceniona.

Luke Twomey
źródło

Odpowiedzi:

9

Sugeruję dodanie mounta do roota lub crontab użytkownika.

Biorąc pod uwagę, że obecnie używasz sudo, crontab wydaje się być najbardziej odpowiedni.

sudo crontab -e #, aby edytować root crontab

Dodaj wpis @reboot do crontab. Potrzebujesz linii takiej jak

@reboot (sleep 30; / bin / mount / media / disk1) &

Poczeka to 30 sekund przed zamontowaniem dysku.

joan
źródło
1
Przepraszam za poświęcony czas, aby do tego dojść, dopiero co miałem okazję się z tym bawić. Z ulgą stwierdzam, że twoje rozwiązanie działało idealnie. Bardzo ci dziękuje za pomoc.
Luke Twomey
to montuje się na pewno, ale jak odmontować proceduralnie przy wyłączaniu?
Ciasto piekarz
14

Miałem również ten sam problem z automatycznym montażem dysku sieciowego podczas rozruchu. Próbowałem dodać mount -apolecenie /etc/rc.localpo edycji, /etc/fstabale bezskutecznie. Powodem, dla którego nie działa, jest to, że sieć nie jest gotowa przed uruchomieniem mount -a.

Jak wspomnieli inni, problemem jest to, że dyski fstab są montowane jeszcze przed uruchomieniem sieci. Aby mieć pewność, że sieć jest gotowa podczas rozruchu, istnieje opcja Wait for Network at Bootw raspi-config.

biegać

sudo raspi-config

i ustaw Wait for Network at Bootopcję na Slow wait for network connection before completing booti uruchom ponownie. Oczywiście może mieć to wpływ na czas uruchamiania, ale jeśli nie jest to krytyczne, można zastosować tę metodę.

Po ponownym uruchomieniu możesz sprawdzić, czy dysk sieciowy jest zamontowany automatycznie: szybkie sprawdzenie przez ls /media/DRIVE_NAMElubdf

bzed
źródło
Jest to z pewnością poprawka, która zadziałała dla mnie, dzięki najnowszym aktualizacjom rpi3 z listopada 2016 r.
ChrisAdmin,
Wolę skorzystać z /etc/rc.local mount -arozwiązania, ale nie zapomnij najpierw spać. Zobacz moją odpowiedź, którą właśnie zamieściłem tutaj: raspberrypi.stackexchange.com/a/63690/49091
Gabriel Staples
4

Zaktualizuj notatki, widząc, że pojawiło się to w Google. Doświadczyłem tej samej serii frustracji podczas montowania kapsuły czasu na lotnisku. Używam Raspberry Pi 3B + na Rasbian Stretch wydanym 14 marca 2018 ze standardowym GUI.

Oto moja linia kodu fstab:

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

Z czasem wydaje się, że nastąpiło kilka zmian:

  1. Musisz dodać instrukcję „vers = 1.0”
  2. _netdev nie robi nic w systemie plików CFIS, działa tylko w systemie plików NFS (jak zauważył Gabriel Staples poniżej)
  3. „user =” i „pass =” powinny teraz mieć odpowiednio „nazwa użytkownika =” i „hasło =”
  4. Na koniec jest teraz pole „Czekaj na sieć”, które można zaznaczyć w narzędziu konfiguracyjnym Raspberry Pi, które rozwiązało problem z montowaniem podczas rozruchu.

Po 2 dniach zmagań, moja jest teraz w końcu zamontowana i robi to przy starcie!

Jacques Gerber
źródło
1

Inną sztuczką, aby rozwiązać ten problem, jest dodanie w dolnej części pliku /etc/rc.localpolecenia:

mount -a

Po ponownym uruchomieniu możesz sprawdzić, czy wszystko jest w porządku, wpisując polecenie:

df -h

a zobaczysz coś takiego:

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  <----------
chrześcijanin
źródło
0

Wydaje się, że _netdevopcja w /etc/fstabnic nie robi dla akcji cifs. Ten zasób ( https://help.ubuntu.com/community/Fstab ) wydaje się potwierdzać, że gdy mówi „_netdev - jest to urządzenie sieciowe, zamontuj je po uruchomieniu sieci. Działa tylko z fstype nfs ”.

Wolę używać /etc/rc.localpliku, aby to naprawić, przez uśpienie, a następnie wywołanie mount -aw nim, zamiast używania crontablub Wait for network at bootopcji w raspi-config. Aby jednak /etc/rc.localpoprawka zadziałała, nie zapomnij spać, jak wyjaśniono poniżej.

To, co zrobiłem, aby rozwiązać ten problem (na moim Pi3), to zmiana trybu /etc/rc.localuśpienia na 20 sekund (przez wywołanie sleep 20), a następnie wywołanie mount -a. W ten sposób, mimo że sieć NIE jest jeszcze podłączona, gdy system po raz pierwszy odczytuje plik fstab, więc wtedy montowanie kończy się niepowodzeniem, zmuszam system do czekania tutaj 20 sekund (dając czas sieci na połączenie), a następnie zmuszam go do mount -aponownego wywołania aby zamontować wszystkie dyski w fstabpliku.

Oto jak /etc/rc.localteraz wygląda mój plik:

#!/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

Gotowy! Teraz działa dla mnie idealnie!

Referencje:

Gabriel Staples
źródło
0

W moim przypadku kupiłem Raspberry Pi 3 i zainstalowałem Raspbian Stretch , edytowałem mój plik fstab w moim ulubionym układzie dysków sieciowych:

//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

Więc ilekroć użyłem:

sudo mount -a

Każdy dysk wymieniony w fstab montowałby się automatycznie, a następnie dodałem go do rc.local i kilku innych miejsc, aby móc cieszyć się zawartością tych dysków po uruchomieniu, krótko mówiąc, nic nie działało, dopóki nie zdecydowałem się dodać linii do katalogu głównego crontab jak:

sudo crontab -e

Wybierz mojego edytora (w tym przypadku nano) Następnie dodaj tę linię na dole

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

W moim przypadku wszystko działało dobrze po ponownym uruchomieniu. Mam nadzieję, że to wam pomoże.

UWAGA:

Jeśli napotkasz jakiekolwiek problemy, zawsze możesz uruchomić:

service cron status

I da ci podpowiedź, co poszło, a co nie

Xedret
źródło
0

Możesz dodać atrybuty _netdev i comment = systemd.automount w fstab i wszystko działa dobrze dla mnie po ponownym uruchomieniu. Podczas ponownego uruchamiania miałem ten sam problem.

\\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
Pradeep Prakash
źródło
-1

Wiem, że to trochę spóźniona odpowiedź, ale miałem ten sam problem i miało to związek z tym, że sieć nie fstabdziałała w momencie wywołania. Próbowałem crontabpierwszego i zadziałało dobrze, ale myśl była trochę niechlujna ...

Jest tutaj świetny post , który uruchamia się za pomocą skryptu, init.daby uruchomić mount jak podczas rozruchu ... teraz działa świetnie dla mnie.

Bicklp
źródło
1
Czy możesz edytować swoją odpowiedź, aby podać najistotniejsze szczegóły z linku, w przypadku jego śmierci w przyszłości .
Greenonline,