Автомонтирование разделов в Linux держится на одном небольшом файле — /etc/fstab. Пока он в порядке, вы о нём не вспоминаете. Но стоит опечататься в UUID или забыть создать точку монтирования, и после перезагрузки система может остановиться в emergency mode. Ниже — формат fstab, разница между UUID и именами устройств, рабочие опции и порядок действий, если монтирование всё-таки сломалось.
Как fstab связан с systemd
Файл читается на раннем этапе загрузки. Генератор systemd-fstab-generator превращает каждую строку в unit вида .mount, поэтому управлять монтированием можно обычными командами systemctl. Строка состоит из шести полей:
- устройство — UUID, LABEL, PARTUUID или путь вроде
/dev/nvme0n1p2; - точка монтирования — существующий каталог;
- тип файловой системы (
ext4,btrfs,xfs,vfat,exfat,ntfs3,nfs,swap); - опции монтирования через запятую;
- поле dump — почти всегда
0; - поле pass — порядок проверки fsck:
1для корня,2для остальных,0для сетевых и псевдофайловых систем.
Перед правкой сделайте копию файла и проверьте текущую картину:
lsblk -f
sudo blkid
findmnt --verify --verbose
sudo cp /etc/fstab /etc/fstab.bak
Команда findmnt --verify разбирает fstab и сообщает о неизвестных опциях, отсутствующих каталогах и дублях, не пытаясь ничего смонтировать. Это самый безопасный способ проверить правку до перезагрузки.
UUID, LABEL и имена устройств
Имена вида /dev/sda1 зависят от порядка подключения дисков и могут измениться после установки нового накопителя. UUID привязан к файловой системе и остаётся стабильным, поэтому в fstab почти всегда используют его. Посмотреть идентификаторы можно так:
sudo blkid /dev/nvme0n1p2
ls -l /dev/disk/by-uuid/
lsblk -o NAME,FSTYPE,LABEL,UUID,MOUNTPOINTS
Для шифрованных разделов и LVM сначала появляется устройство /dev/mapper/..., а UUID относится уже к файловой системе внутри. Если вы пересоздали раздел, UUID изменился — старую строку в fstab нужно обновить, иначе загрузка завершится ошибкой.
Пример типичного файла:
# корень
UUID=6f1a2c3d-4b5e-4f60-8a71-9b2c3d4e5f60 / ext4 errors=remount-ro 0 1
# домашний раздел
UUID=1b2c3d4e-5f60-4a71-8b92-0c1d2e3f4a5b /home ext4 defaults,noatime 0 2
# флешка, монтируется только вручную
UUID=1A2B-3C4D /mnt/usb exfat defaults,nofail,uid=1000,gid=1000,umask=022 0 0
# swap
UUID=9c8d7e6f-5a4b-3c2d-1e0f-a1b2c3d4e5f6 none swap sw 0 0
UUID в примере условный: подставьте значение из blkid. Для NTFS в ядре есть драйвер ntfs3; старый ntfs-3g из пространства пользователя остаётся вариантом для сложных случаев. Для FAT и exFAT права задаются не через chmod, а опциями uid, gid и umask.
Опции, которые действительно нужны
defaults — это набор rw,suid,dev,exec,auto,nouser,async. Дальше добавляют только то, что решает конкретную задачу:
noatime— не обновлять время доступа при чтении; меньше записи на SSD и меньше износ.nofail— не блокировать загрузку, если диск недоступен. Обязательно для внешних и резервных накопителей.x-systemd.device-timeout=10s— ограничить ожидание медленного устройства.x-systemd.automountиx-systemd.idle-timeout=10min— монтировать по первому обращению и размонтировать после простоя. Удобно для сетевых каталогов и редко используемых дисков.ro— защитить архив или резервную копию от случайной записи._netdev— пометить сетевую файловую систему, чтобы systemd не ждал её до поднятия сети.discard— передавать TRIM сразу; на большинстве домашних систем разумнее включить таймерfstrim.timerи не добавлять опцию в fstab.
Пример отложенного монтирования:
UUID=6f1a2c3d-4b5e-4f60-8a71-9b2c3d4e5f60 /mnt/backup ext4 noauto,x-systemd.automount,x-systemd.idle-timeout=10min,nofail 0 0
После любой правки выполните sudo systemctl daemon-reload, затем sudo mount -a. Если команда прошла без вывода — синтаксис и доступность устройств в порядке. Для отдельной точки можно запустить sudo systemctl start mnt-backup.mount и проверить findmnt /mnt/backup.
Автомонтирование по требованию
Опция noauto запрещает монтировать раздел при загрузке, а x-systemd.automount создаёт рядом unit .automount. Первое обращение к каталогу запускает монтирование, после чего оно работает как обычно. Это особенно полезно для USB-дисков с резервными копиями: если диск не подключён, загрузка не ломается, а nofail убирает ошибку.
Проверить, какой unit соответствует пути, помогает systemd-escape:
systemd-escape -p /mnt/backup
systemctl list-units --type=mount --all
systemctl status mnt-backup.mount
journalctl -b -u mnt-backup.mount --no-pager
Для bind-монтирования в fstab указывают исходный каталог, точку назначения, тип none и опцию bind. Если исходный каталог сам является отдельной точкой монтирования, добавьте x-systemd.requires-mounts-for=/исходный/путь, иначе порядок запуска может оказаться неверным.
Типичные ошибки и восстановление
Симптом «emergency mode» почти всегда означает, что systemd не смог смонтировать раздел, помеченный как обязательный. Действуйте по шагам:
- Войдите под root или введите пароль root, если система его просит.
- Перемонтируйте корень в режим записи:
mount -o remount,rw /. - Откройте
/etc/fstab, закомментируйте проблемную строку символом#. - Выполните
systemctl daemon-reload, затемsystemctl reboot.
После загрузки выясните причину по журналу:
journalctl -b -p err --no-pager
dmesg | grep -i -E 'ext4|ntfs|mount|I/O error'
systemctl status mnt-data.mount
findmnt --verify --verbose
Частые сообщения: can't find UUID=... — опечатка или изменённый UUID; wrong fs type, bad option — неверный тип или неподдерживаемая опция; mount point does not exist — забыли создать каталог; Structure needs cleaning — повреждение файловой системы, нужен fsck с незамонтированным разделом. Не запускайте fsck на смонтированном корне: используйте загрузку с live-носителя.
Отдельная ловушка — дубликат точки монтирования. systemd создаст два unit с одинаковым именем, и поведение станет непредсказуемым. findmnt --verify такие строки показывает. Ещё одна ошибка — лишняя запятая или пробел внутри списка опций: fstab не терпит «почти правильного» синтаксиса.
Чек-лист перед перезагрузкой
- UUID скопирован из
blkid, а не набран вручную. - Точка монтирования существует и пуста.
- Тип файловой системы совпадает с реальным.
- Для внешнего диска есть
nofailи разумный таймаут. findmnt --verifyне выдаёт ошибок.mount -aпроходит без вывода.- Резервная копия fstab лежит рядом.
Итог
fstab остаётся простым, но требовательным инструментом: UUID даёт стабильность, осмысленные опции — производительность и безопасность, а nofail и x-systemd.automount избавляют от хрупкой загрузки. Главное правило — проверять изменения через findmnt --verify и mount -a до перезагрузки, а не после. Тогда автомонтирование будет работать незаметно, как и должно.