/etc/fstab does not mount automatically on Debian 10
On all the Linuxes that I’ve tried before, whenever one puts something in /etc/fstab it gets automatically mounted when the machine is restarted, however after installing Debian 10, the same mechanism doesn’t seem to work on it. The fstab entry looks like this:
//hostname/Share /Share cifs _netdev,dir_mode=0777,file_mode=0777,username=,password=,rw,uid=1000,gid=1000 0 0
After restart, the mount folder is empty and is not listed in the mounts. I looked at dmesg, and these are the only mentions of mounts or cifs:
[ 3.067180] FS-Cache: Netfs 'cifs' registered for caching [ 3.067243] Key type cifs.spnego registered [ 3.067247] Key type cifs.idmap registered [ 3.068769] No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.
That dialect message doesn’t come up at every restart, though. I had to add sudo mount -a to crontab @restart to get them to show up, but is there a more «proper» way for Debian 10 to recognize fstab the way other Debians do?
4 Answers 4
systemd will use the contents of the traditional /etc/fstab file to dynamically create «mount units». You’ll need to check the status of the appropriate mount unit to see why it failed: please run systemctl status Share.mount .
The most likely reason is that NetBIOS name resolution isn’t available (i.e. Samba’s nmbd isn’t running yet) when the mount attempt happens, as suggested in the appropriate Debian Wiki page.
See man systemd.mount for systemd-specific mount options you can use in /etc/fstab . For example, you might use x-systemd.automount as a workaround: with it, systemd should mount the filesystem automatically the first time something attempts to use it.
Also, check systemctl status network-online.target : if you have a static network configuration, the system might be failing to detect when the network connection is properly «online», and attempt to mount network filesystems too early as a result. Check the new WAIT_ONLINE_IFACE= and WAIT_ONLINE_METHOD= settings in /etc/default/networking configuration file for possible ways to make the network online detection more reliable.
Also, to silence the dialect message, you should add vers=N.N to your mount options. See man mount.cifs for the list of N.N values available and the corresponding Windows versions. If the server is at least Windows Server 2008R2, you can use vers=2.1 .
The old protocol version vers=1.0 was vulnerable to the attack of the infamous WannaCry ransomware in year 2017, and it could not be fixed, so all up-to-date OSs should by now be programmed to hate that version and not use it unless specifically asked to. (If your server still cannot support any of the newer protocol versions, then that server needs to be upgraded.)
Как включить автомонтирование для дисков в Linux Ubuntu
Подобно Windows, Linux автоматически распознает подключенные к компьютеру жесткие диски, однако, если вы зайдете в раздел «На этом компьютере», то обнаружите, что подключенные носители не смонтированы. На это указывает отсутствие значка монтирования напротив диска, исключение составляют лишь те случаи, когда накопитель подключается в работающей системе. Если накопитель был подключен до загрузки Linux, чтобы произвести монтирование, вам нужно будет в него зайти.
Естественно, на диске должна быть файловая система, иначе увидеть его можно будет либо из интерфейса утилиты «Диски», либо из терминала, выполнив в нём команду sudo fdisk -l . Монтирование дисков в Linux выполняется автоматически при обращении к нему пользователя, но существует немало сценариев, в которых автомонтирование является обязательным условием. Иначе говоря, нужно, чтобы при включении компьютера устройства уже были смонтированы в системе. В Linux Ubuntu это можно сделать, отредактировав файл fstab , но сначала давайте познакомимся с самим понятием монтирования.
Что такое монтирование в Linux
В отличие от Windows, в которой каждый диск имеет свою букву и свой корень, в Linux имеется только одна корневая файловая система, обозначаемая знаком / или иначе root. В момент загрузки операционной системы к ней в буквальном смысле подключаются все имеющиеся на диске виртуальные разделы со своими файловыми системами и древом каталогов. Такое подключение и называется монтированием. Но откуда система знает, что и куда нужно монтировать? Эту информацию она берет из специальных конфигурационных файлов юнитов либо из конфигурационного файла fstab , расположенного в папке /etc .
Но если содержащая системные файлы файловая система монтируется при загрузке, то прочие файловые системы подключаются в полуавтоматическом режиме, причем точкой монтирования может служить почти что любая папка. В итоге мы получаем как бы дерево, растущее из одной ветки основного древа, причем смонтированное устройство может иметь собственную файловую систему, в том числе NTFS , для которой в Linux поддерживается как чтение, так и запись файлов. В Ubuntu дисковые устройства по умолчанию монтируются в папку /media/username/ID , где username — имя пользователя, а ID — идентификатор, но сейчас нас интересует другое — как сделать, чтобы эти самые дисковые устройства монтировались при включении компьютера.
Не путайте точки монтирования с путями
Внимательные пользователи Windows наверняка заметили, что на прилагаемом скриншоте файловая система NTFS примонтирована в папку /mnt , отсюда может возникнуть предположение, что полный путь к диску с NTFS будет выглядеть как /mnt/dev/sdb . Ничего подобного. В Linux все сущности являются файлами, даже физические устройства, которые хранятся в виде файлов в каталоге /dev . Так, обращаясь к физическому диску с установленной системой, мы обращаемся к файлу диска (блочному устройству) sda в папке /dev ; обращаясь ко второму накопителю, работаем уже с файлом sdb. Если же вы видите файл sdb1 или sdb2, то такой файл является уже файлом раздела диска sdb.
Папка же монтирования служит точкой, через которую мы получаем доступ к содержимому устройства. Поэтому в строгом смысле слова в Linux нет понятия дисков и томов, по крайней мере в том смысле, в котором они употребляются в Windows. Вы где-нибудь видели в Windows файл диска С или D? Но что такое файл sda в Linux, может быть это контейнер, содержащий системные файлы? Нет, это просто символьное обозначение диска, некий аналог буквы, как С или D в Windows, только представленное отдельным файлом.
Примечание: начало имени диска sd говорит о том, что мы имеем дело с твердотельным диском, если бы диск был обычным, то вместо sda было бы hda — Hard Drive. Имена файлов дисководов в Linux начинаются с sr (CD-RROM), а новых твердотельных накопителей NVM Express — с nvme.
Включаем автомонтирование, редактируем файл fstab
Прежде чем приступать к редактированию указанного файла, нужно определить точку монтирования раздела. Естественно, для этого раздел или диск сначала нужно будет открыть. Для определения точки монтирования, к примеру, разделов sdc, в терминале выполняем команду mount | grep /dev/sdc и записываем пути сразу после «on».
Вместо этого можно открыть том в приложении «Диски» и посмотреть, куда он примонтирован.
После этого отмонтируйте диски тут же в приложении «Диски» или кликом по иконке монтирования в разделе «Другие места». Впрочем, можно обойтись и без размонтирования.
Теперь в терминале открываем командой sudo nano /etc/fstab конфигурационный файл fstab .
В примере мы использовали команду sudo su —, позволяющую работать с правами суперпользователя без подтверждения выполнения операций. В открывшемся окне текстового редактора nano уже имеются данные монтирования загрузочного тома и свопа, а также комментарии. Сейчас они нас особо не интересуют, обратите лучше внимание на взятые в кавычки строки, нумерованный список которых приведен ниже.
В этот файл нам нужно добавить наши блочные устройства — разделы разного типа, которых для примера мы взяли три: дополнительно созданный на диске sdc своп (sdc1) , том Ext4 (sdc2) и том NTFS (sdc5) .
Каждый том представлен новой строкой, в которой один за другим следуют:
- Блочное устройство .
- Точка монтирования .
- Тип файловой системы .
- Параметры монтирования, которых может быть несколько .
- Резервное копирование .
- Проверка файловой системы на ошибки .
Начнем с раздела свопа. Вот так выглядит его строка:
/dev/sdc1 none swap sw 0 0
Первая часть строки — это блочное устройство — своп, а так как доступ к свопу не нужен, во второй части прописывается none. Далее указывается тип файловой системы — swap и параметр монтирования (для свопа это sw) . Создавать его резервные копии не нужно, в проверке тоже нет необходимости, поэтому в качестве значений dump и pass выставляем 0. Для отделения параметров можно использовать как пробел, так и табуляцию.
Второй раздел отформатирован в Ext4 , его строка выглядит так:
/dev/sdc2 /media/kompik/98a36276-c8d2-47ed-9d70-62e45bbdd71d auto noatine 0 2
Вот здесь уже мы указываем точку монтирования, представленную в данном примере этим длинным путем. По идее, следующим пунктом нужно было указать ext4, но мы предпочли auto, поскольку Ubuntu умеет автоматически распознавать тип файловой системы. Что касается параметров options, их много, из которых мы выбрали noatime, тем более, что он лучше всего подходит для SSD -дисков. Резервная копия раздела нам не нужна, поэтому для значения dump выставляем 0, а вот проверить Ext4 на ошибки следует. Для параметра pass выставляем значение 2, означающее, что раздел будет проверен вторым после корневого, для которого всегда указывается значение 1, за исключением файловой системы BTRFS . Для BTRFS всегда выставляется 0.
Примечание: значение проверки 2 выставляется для всех прочих устройств, независимо от того, какими по счету они являются.
Наконец, строка раздела с файловой системой NTFS выглядит следующим образом:
/dev/sdc5 /media/kompik/23B7C6C119D80309 auto default 0 0
Здесь почти всё то же самое, кроме опции default (по умолчанию) и 0 для параметра pass. Pass выполняет проверку файловой системы линуксовой утилитой fsck, использование которой в NTFS не имеет смысла. Поэтому проверку тоже отключаем. Итого получаем следующую картину:
Чтобы сохранить отредактированный файл, жмем Ctrl + X , подтверждаем действие вводом Y и нажатием Enter .
Осталось только проверить, работает ли монтирование.
Возьмем к примеру, раздел sdc5. Для этого тут же в терминале выполняем команду mount /dev/sdc5 без указания точки монтирования.
Хотя мы и не указали точку монтирования, команда была выполнена без ошибки, взяв нужные данные из отредактированного файла fstab . Если бы точка монтирования для устройства /dev/sdc5 была не указана, мы бы получили такую ошибку.
Да, описанный здесь способ автомонтирования не единственный, для этих же целей можно использовать и файлы юнитов, но работа с fstab кажется нам более понятной и удобной.