Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: автоматическое монтирование сетевых дисков при старте ubuntu 16.04  (Прочитано 3925 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vlad1m1r_k

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Доброго времени суток.
Проблемка в следующем не монтируются автоматически сетевые диски windows.
Они как бы монтируются но не до конца чтоли)

в общем по порядку.
в fstab добавил строку
//10.10.10.10/share /mnt/share cifs credentials=/root/.smbclient,iocharset=utf8,file_mode=0666,dir_mode=0777,_netdev 0 0

после запуска монтирование не происходит до тех пока не выполню из консоли
sudo mount -a
Ошибок ни каких не выводит, но диски сразу становятся доступны.

попробовал добавить в rc.local команду mount -a, эффекта это не дало.
Так же после старта пока не выполню команду sudo mount -a диски не примаплены.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Проблема скорее всего в медленном запуске сети (не успевает запустится до монтирования). В некоторых дистрах это решают добавлением скрипта /etc/network/if-up.d/mountnfs
Код: Bash
  1. #! /bin/sh
  2. # Description:       Now that TCP/IP is configured, mount the NFS file
  3. #                    systems in /etc/fstab if needed. If possible,
  4. #                    start the portmapper before mounting (this is needed for
  5. #                    Linux 2.1.x and up).
  6. #
  7. #                    Also mounts SMB filesystems now, so the name of
  8. #                    this script is getting increasingly inaccurate.
  9.  
  10. # Skip the mountnfs hook when being triggered by the networking SysV init
  11. # script and instead use the systemd built-in mechanisms to mount remote
  12. # file systems.
  13. # This avoids a deadlock caused by the rpcbind SysV init script depending
  14. # on $network and the $network LSB facility being provided by the networking
  15. # SysV init script.
  16. if [ -d /run/systemd/system ]; then
  17.         systemctl list-jobs | grep -q network.target && exit 0
  18. fi
  19.  
  20. PATH=/sbin:/bin
  21. . /lib/init/vars.sh
  22.  
  23. . /lib/lsb/init-functions
  24. . /lib/init/mount-functions.sh
  25.  
  26. set_env() {
  27.         # Read through fstab line by line. If it is NFS, set the flag
  28.         # for mounting NFS file systems. If any NFS partition is found
  29.         # and it not mounted with the nolock option, we start the
  30.         # portmapper.
  31.         #
  32.         # If any sec={krb5,krb5i,krb5p} option is given, or any of the
  33.         # file systems are nfs4, we'll need to start rpc.gssd and/or
  34.         # rpc.idmapd too; we'll leave that to nfs-common.
  35.  
  36.         start_nfs=no
  37.         NETFS=""
  38.         NETDEV=""
  39.         for file in "$(eval ls $(fstab_files))"; do
  40.                 if [ -f "$file" ]; then
  41.                         while read DEV MTPT FSTYPE OPTS REST; do
  42.                                 case "$DEV" in
  43.                                   ""|\#*)
  44.                                         continue
  45.                                         ;;
  46.                                 esac
  47.                                 case "$OPTS" in
  48.                                   noauto|*,noauto|noauto,*|*,noauto,*)
  49.                                         continue
  50.                                         ;;
  51.                                   _netdev|*,_netdev|_netdev,*|*,_netdev,*)
  52.                                         NETDEV=yes
  53.                                         ;;
  54.                                 esac
  55.                                 case "$FSTYPE" in
  56.                                   nfs)
  57.                                         # NFS filsystems normally
  58.                                         # require statd and
  59.                                         # portmap. However, if nolock
  60.                                         # is set, portmap and statd
  61.                                         # are not required for this
  62.                                         # file system.
  63.                                         case "$OPTS" in
  64.                                           nolock|*,nolock|nolock,*|*,nolock,*)
  65.                                                 # no action
  66.                                                 ;;
  67.                                           *)
  68.                                                 start_nfs=yes
  69.                                                 ;;
  70.                                         esac
  71.  
  72.                                         # However, Kerberos requires
  73.                                         # gssd, so start nfs-common
  74.                                         # anyway.
  75.                                         case "$OPTS" in
  76.                                           sec=krb5|*,sec=krb5|sec=krb5,*|*,sec=krb5,*|sec=krb5i|*,sec=krb5i|sec=krb5i,*|*,sec=krb5i,*|sec=krb5p|*,sec=krb5p|sec=krb5p,*|*,sec=krb5p,*)
  77.                                                 start_nfs=yes
  78.                                                 ;;
  79.                                                 esac
  80.                                         ;;
  81.                                   nfs4)
  82.                                         # NFSv4 requires idmapd, so
  83.                                         # start nfs-common no matter
  84.                                         # what the options are.
  85.                                         start_nfs=yes
  86.                                         ;;
  87.                                   smbfs|cifs|coda|ncp|ncpfs|ocfs2|gfs|ceph)
  88.                                         ;;
  89.                                   *)
  90.                                         FSTYPE=
  91.                                         ;;
  92.                                 esac
  93.                                 if [ "$FSTYPE" ]; then
  94.                                         case "$NETFS" in
  95.                                           $FSTYPE|*,$FSTYPE|$FSTYPE,*|*,$FSTYPE,*)
  96.                                                 ;;
  97.                                           *)
  98.                                                 NETFS="$NETFS${NETFS:+,}$FSTYPE"
  99.                                                 ;;
  100.                                         esac
  101.                                 fi
  102.                         done < "$file"
  103.                 fi
  104.         done
  105. }
  106.  
  107. do_start() {
  108.         #
  109.         # Initialize nfs-common (which starts rpc.statd, rpc.gssd
  110.         # and/or rpc.idmapd, and loads the right kernel modules if
  111.         # applicable) if we use Kerberos and/or NFSv4 mounts.
  112.         #
  113.         if [ "$start_nfs" = yes ] && [ -x /etc/init.d/nfs-common ]
  114.         then
  115.                 [ -x /etc/init.d/portmap ] && /etc/init.d/portmap start
  116.                 [ -x /etc/init.d/rpcbind ] && /etc/init.d/rpcbind start
  117.                 /etc/init.d/nfs-common start
  118.         fi
  119.  
  120.         pre_mountall
  121.         if [ "$NETFS" ]
  122.         then
  123.                 mount -a -t$NETFS
  124.         fi
  125.         if [ "$NETDEV" ]; then
  126.                 mount -a -O _netdev
  127.         fi
  128.         post_mountall
  129. }
  130.  
  131. exit_unless_last_interface() {
  132.     ifaces="$(ifquery --list)"
  133.     for i in $ifaces ; do
  134.         if [ "$i" = "lo" ]; then
  135.             continue
  136.         fi
  137.         if ! ifquery --state $i >/dev/null ; then
  138.             msg="if-up.d/mountnfs[$IFACE]: waiting for interface $i before doing NFS mounts"
  139.             log_warning_msg "$msg"
  140.             exit 0
  141.         fi
  142.     done
  143. }
  144.  
  145. # Using 'no !=' instead of 'yes =' to make sure async nfs mounting is
  146. # the default even without a value in /etc/default/rcS
  147. set_env
  148. # Exit imediately and do not claim to wait for the last interface if
  149. # no network file systems are listed in /etc/fstab.
  150. if [ "$start_nfs" = "no" ] && [ ! "$NETFS" ] && [ ! "$NETDEV" ]; then
  151.   exit 0
  152. fi
  153.  
  154. if [ no != "$ASYNCMOUNTNFS" ]; then
  155.     # Not for loopback!
  156.     [ "$IFACE" != "lo" ] || exit 0
  157.  
  158.     [ "$ADDRFAM" = "inet" ] || [ "$ADDRFAM" = "inet6" ] || exit 0
  159.  
  160.     # Lock around this otherwise insanity may occur
  161.     mkdir /var/run/network          2>/dev/null || true
  162.  
  163.     # Wait until all auto interfaces are up before attemting to mount
  164.     # network file systems.
  165.     exit_unless_last_interface
  166.  
  167.     if mkdir /var/run/network/mountnfs 2>/dev/null ; then
  168.         :
  169.     else
  170.         msg="if-up.d/mountnfs[$IFACE]: lock /var/run/network/mountnfs exist, not mounting"
  171.         log_failure_msg "$msg"
  172.         # Log if /usr/ is mounted
  173.         [ -x /usr/bin/logger ] && /usr/bin/logger -t "if-up.d/mountnfs[$IFACE]" "$msg"
  174.         exit 0
  175.     fi
  176.  
  177.     on_exit() {
  178.         # Clean up lock when script exits, even if it is interrupted
  179.         rmdir /var/run/network/mountnfs 2>/dev/null || exit 0
  180.     }
  181.     trap on_exit EXIT # Enable emergency handler
  182.     do_start
  183. elif [ yes = "$FROMINITD" ] ; then
  184.     do_start
  185. fi
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27415
    • Просмотр профиля
Если указано _netdev, монтирование должно запускаться после запуска сети.
Что в логах? Он вообще пробует монтировать? С этого начнём.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Vlad1m1r_k

  • Автор темы
  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Azure, Попробую, по результату отпишусь

Пользователь добавил сообщение 18 Август 2016, 05:03:39:
Если указано _netdev, монтирование должно запускаться после запуска сети.
Что в логах? Он вообще пробует монтировать? С этого начнём.

cat /var/log/dmesg
(Нажмите, чтобы показать/скрыть)

cat /var/log/boot*
(Нажмите, чтобы показать/скрыть)



Пользователь добавил сообщение 18 Август 2016, 05:29:27:
systemctl status mnt-distr_0.70.mount
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 18 Август 2016, 05:29:27 от Vlad1m1r_k »

Оффлайн RockTeam

  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Автор, чем закончились ваши мучения? Какое придумали решение? Очень похоже, что _netdev не работает в 16.04.

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
RockTeam, Если у Вас что-то не работает, потрудитесь описать проблему и сопутствующие обстоятельства.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн serp53

  • Новичок
  • *
  • Сообщений: 12
    • Просмотр профиля
Я использую вот такой костыль. Тестировал начиная с 12.04 и до 16.04

1.Создать скрипт такого плана.

#! /bin/bash

sudo mount.cifs //test.test.ru/test /home/test/TEST/ -o credentials=~/.passwd,rw,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777

Пояснение это если у вас домен.

//test.test.ru/test - откуда подключить
/home/test/TEST/ - куда монтировать
credentials=~/.passwd - где храниться пароль для подключения

В файле .passwd прописываем. И кидаем его в корень домашней папки.
username=test
password=12345678
 
Дополнительная опция domain=test.ru (Может понадобиться)

Вариант подключения под гостем и без файла с паролем всё в одной строчке.

sudo mount.cifs //192.168.0.1/ftp /home/test/FTP/ -o username=guest,password="",rw,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777

1.1. Сделать скрипт исполняемым.
sudo chmod a+x путь к скрипту.

1.2. Поместить скрипт. /usr/local/bin

1.3. Создаём все папки для монтирования ресурса.

2. Отредактировать файл SUDOERS
sudo nano /etc/sudoers

# Cmnd alias specification
Cmnd_Alias CURLFTPFS_CMD =/sbin/mount.cifs

#includedir /etc/sudoers.d
test ALL=(ALL) NOPASSWD: CURLFTPFS_CMD

3. Ставим нужный нам пакет.
sudo apt-get install cifs-utils

4. Открываем терминал под пользователем и пишем название нашего скрипта.

5. Если всё ок, мы видим примонтированный ресурс. То добавляем  скрипт в автозагрузку.

Надеюсь что понятно написал.

Также можно сделать подключение через fstab.

1. ставим sudo apt-get install cifs-utils
2. Добовляем строчку монтирования в fstab
mount.cifs //192.168.0.1/ftp /home/test/FTP/ -o username=guest,password="",rw,nounix,iocharset=utf8,file_mode=0777,dir_mode=0777

Оффлайн RockTeam

  • Новичок
  • *
  • Сообщений: 37
    • Просмотр профиля
Я тоже теперь использую аналогичный костыль вместо _netdev.

Возможно, что кому-нибудь сможет пригодиться. Разместите скрип, назовём, automoun в /etc/network/if-up.d со следующим содержанием.

#!/bin/sh
mount -a

Когда сетевой интерфейс поднимется, все сетевые шары, указанные в fstab примонтируются скриптом автоматически.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27415
    • Просмотр профиля
Вот именно что костыль.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.127 секунд. Запросов: 25.