Не удается подключить сетевой диск CIFS при загрузке


22

Я добавил ресурс в fstab для доступа к сетевому диску со всеми моими файлами на ... fstab выглядит так:

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

Когда я sudo mount -aуспешно запускаю сетевой диск, я могу сделать cd /media/disk1то, lsчто правильно дает мне список всех папок на сетевом диске.

Тем не менее, после перезагрузки пи, когда я cdв этом месте и запустить lsснова, ничего не осталось. Я должен вручную запустить sudo mount -aснова, который затем монтирует диск.

Я видел это много раз на других форумах, и, похоже, все согласны с тем, что монтирование в fstab происходит слишком рано - до того, как сеть была создана. Я пытался воплотить в жизнь то, что понимаю, но, честно говоря, многое из этого у меня над головой. Я добавил _netdevв строку в fstab, я добавил rootdelay=10в /boot/cmdline.txt, я установил сетевой менеджер ... ничего из этого не помогло.

И поэтому я поворачиваюсь к вам, о готовности выбросить пи в окно, а затем за мной. Любая помощь, высоко ценится.

Ответы:


9

Я предлагаю вам добавить монтирование либо в корневой каталог, либо в ваш пользовательский crontab.

Учитывая, что вы в настоящее время используете sudo, корневой crontab представляется наиболее подходящим.

sudo crontab -e # для редактирования корневого crontab

Добавьте запись @reboot в crontab. Вам нужна строка, такая как

@reboot (сон 30; / bin / mount / media / disk1) &

Это подождет 30 секунд, прежде чем монтировать диск.


1
Извиняюсь за время, затраченное на то, чтобы добраться до этого, у меня только что был шанс поиграть с этим снова. Я очень рад, что ваше решение сработало идеально. Спасибо большое за помощь.
Люк Туми

это наверняка, но как мы процедурно отключаемся при выключении?
Ciasto piekarz

14

У меня также была такая же проблема, касающаяся автоматической установки сетевого диска при загрузке. Я попытался добавить mount -aкоманду в /etc/rc.localпосле редактирования, /etc/fstabно безрезультатно. Причина, по которой это не работает, заключается в том, что сеть не готова к mount -aвыполнению.

Как уже упоминали другие, проблема заключается в том, что диски fstab монтируются еще до того, как работает сеть. Чтобы быть уверенным, что сеть готова во время загрузки, есть опция Wait for Network at Bootв raspi-config.

бег

sudo raspi-config

и установите Wait for Network at Bootопцию Slow wait for network connection before completing bootи перезагрузите компьютер. Конечно, время загрузки вполне может быть затронуто, но если это не критично, этот метод можно использовать.

После перезагрузки вы можете проверить, что сетевой диск подключен автоматически: быстрая проверка через ls /media/DRIVE_NAMEилиdf


Это, безусловно, исправление, которое сработало для меня, с последними обновлениями rpi3 от ноября 2016 года
ChrisAdmin

Я предпочитаю использовать /etc/rc.local mount -aрешение, но не забудьте сначала поспать. Смотрите мой ответ, который я только что опубликовал здесь: raspberrypi.stackexchange.com/a/63690/49091
Габриэль Стейплз

4

Обновите заметки, увидев, что это появилось в Google. Я перенес ту же серию разочарований, которые поднимались в моей капсуле времени в аэропорту. Я использую Raspberry Pi 3B + на Rasbian Stretch, выпущенном 14 марта 2018 года со стандартным графическим интерфейсом.

Вот моя строка кода fstab:

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

Похоже, со временем произошло несколько изменений:

  1. Вам нужно добавить оператор "vers = 1.0"
  2. _netdev ничего не делает в файловой системе CFIS, работает только в файловой системе NFS (как отметил Габриэль Стейплс ниже)
  3. «user =» и «pass =» теперь должны быть «username =» и «password =» соответственно
  4. Наконец, теперь есть поле «Ожидание сети», которое может быть отмечено галочкой в ​​утилите конфигурирования Raspberry Pi, которое решило мою проблему с монтированием при загрузке.

После 2 дней борьбы, моя теперь наконец установлена ​​и делает это при загрузке!


1

Другой способ решить эту проблему - добавить в конец файла /etc/rc.localкоманду:

mount -a

После перезагрузки вы можете проверить, все ли в порядке, набрав команду:

df -h

и вы увидите что-то вроде этого:

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

_netdevВариант в , /etc/fstabкажется, не делать ничего вообще для акций CIFS. Этот ресурс ( https://help.ubuntu.com/community/Fstab ), по-видимому, подтверждает, что когда говорится «_netdev - это сетевое устройство, подключайте его после запуска сети. Действует только с помощью fstype nfs ».

Я предпочитаю использовать /etc/rc.localфайл, чтобы исправить это, спя и затем вызывая mount -aего, а не используя crontabили Wait for network at bootпараметр в raspi-config. Однако, чтобы /etc/rc.localисправить ситуацию, не забывайте спать, как описано ниже.

Чтобы исправить эту проблему (на моем Pi3), я перешел /etc/rc.localв режим ожидания на 20 секунд (позвонив sleep 20), а затем позвонил mount -a. Таким образом, хотя сеть еще не подключена, когда система сначала читает файл fstab, поэтому монтирование завершается неудачно, я вынуждаю систему ждать здесь 20 секунд (давая время для подключения к сети), а затем заставляю ее mount -aснова вызывать смонтировать все диски в fstabфайле.

Вот как /etc/rc.localтеперь выглядит мой файл:

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

Выполнено! Теперь это прекрасно работает для меня!

Ссылки:


0

В моем случае я купил Raspberry Pi 3 и установил Raspbian Stretch , я отредактировал свой fstab, используя мое любимое расположение сетевых дисков, вот так:

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

Поэтому всякий раз, когда я использовал:

sudo mount -a

Каждый диск, указанный в fstab, будет монтироваться автоматически, затем я добавил это в rc.local и несколько других мест, чтобы я мог наслаждаться содержимым этих дисков при запуске, короче говоря, ничего не работало, пока я не решил добавить строку в корень crontab как:

sudo crontab -e

Выбрал мой редактор (nano в случае y) Затем добавил эту строку внизу

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

Все работало нормально в моем случае после перезагрузки. Надеюсь, это поможет вам, ребята.

НОТА:

Если у вас возникнут какие-либо проблемы, вы всегда можете запустить:

service cron status

И это даст вам подсказку о том, что бежало, а что нет


0

Вы можете добавить атрибуты _netdev и comment = systemd.automount в fstab, и все это прекрасно работает после перезагрузки. Я имел обыкновение сталкиваться с той же проблемой при перезагрузке.

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

Я знаю, что это немного поздний ответ, но у меня была та же проблема, и это было связано с тем, что сеть не работала, когда fstabвызывался. Я попробовал crontabпервый, и он работал нормально, но думал, что это было немного грязно ...

Существует большой пост здесь , который проходит через используя сценарий init.dдля запуска монтирования , как при загрузке ... он теперь работает отлично подходит для меня.


1
Можете ли вы отредактировать свой ответ, чтобы предоставить существенные детали из вашей ссылки, в случае смерти будущей ссылки .
Greenonline
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.