Операционные системы

Теория: Монтирование и точки монтирования

Когда система загружается, ядру нужно понять, где искать файлы. На диске могут быть десятки разделов, и каждый из них содержит свою файловую систему. Но программы не работают напрямую с устройствами — им нужны каталоги. Поэтому ядро связывает конкретный раздел с конкретной точкой в дереве каталогов.

Эта операция называется монтированием. Монтирование делает файловую систему, лежащую на физическом устройстве, доступной как часть общего дерева. Например, если на диске /dev/sda1 хранится раздел с данными, его можно подключить в каталог /mnt/data так:

sudo mount /dev/sda1 /mnt/data

После этого все файлы, находящиеся на разделе /dev/sda1, будут видны внутри /mnt/data. Для программы это не «второй диск», а просто ещё один каталог.

Когда система выключается, все файловые системы нужно отключить — отмонтировать, чтобы данные из буфера записи попали на диск. Делается это командой:

sudo umount /mnt/data

Монтирование — базовый механизм, который превращает набор разрозненных устройств в единую файловую иерархию. Благодаря ему в Linux нет букв дисков, как в Windows. Всё дерево начинается с корня /, а остальные разделы, флешки и сетевые ресурсы встраиваются в него как ветви — куда именно, решает администратор.

Единое дерево

В UNIX-подобных системах нет привычных букв дисков вроде C: или D:. Всё хранилище представлено как единое дерево каталогов, начинающееся с корня /. Чтобы подключить к нему другой диск, флешку или сетевой том, операционная система монтирует файловую систему устройства в существующий каталог. Так одно дерево может объединять десятки физических носителей.

Когда ядро загружается, первым оно монтирует корневую файловую систему/. Это основа всей структуры, на которой держится система. Внутри неё находятся каталоги, без которых ОС не сможет запуститься:

  • /bin — основные программы и утилиты, доступные даже в минимальном окружении;
  • /lib — библиотеки, от которых зависят системные команды и драйверы;
  • /etc — конфигурационные файлы, где хранятся настройки служб и системы;
  • /dev — виртуальные файлы устройств (диски, терминалы, сетевые интерфейсы).

Без этих каталогов невозможно ни запустить оболочку, ни обратиться к устройствам.

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

  • /boot — раздел, где хранится ядро и файлы загрузчика;
  • /home — пользовательские данные и настройки;
  • /var — изменяемые данные: логи, кэш, очереди заданий;
  • /media и /mnt — точки для временного монтирования флешек и внешних дисков.

Каждый из этих каталогов может находиться на отдельном устройстве. Если диск отключить, сам каталог останется, но внутри него будет пусто — файловая система «отцепилась», пока её не смонтируют снова.

Так Linux строит единое дерево, где корень / — это отправная точка, а всё остальное — ветви, подключённые при монтировании. Благодаря этому подходу система остаётся гибкой: можно заменить диск, перенести /home на другой сервер или временно подключить флешку, не меняя общую структуру.

Корневая файловая система в Linux, macOS и Windows

Во всех современных операционных системах принцип один и тот же: ядро должно иметь одну базовую файловую систему, с которой начинается всё дерево каталогов. Разница лишь в том, как это дерево представлено пользователю и где именно находится его корень.

В Linux корневая файловая система (/) — это фундамент, откуда строится всё остальное. Она монтируется первой при запуске системы, обычно с раздела /dev/sda2 или по его UUID. В ней находятся основные каталоги: /bin, /etc, /lib, /dev, без которых система не сможет работать. После этого монтируются остальные разделы — /home, /boot, /mnt, /media и другие. Каждый из них может быть отдельным устройством, но для пользователя они выглядят как части одного дерева. Команда mount просто добавляет новые ветви в это дерево. Это правило пришло из UNIX и остаётся неизменным: один корень, никаких “дисков C:” — всё начинается с /.

В macOS принцип тот же, хотя внутренняя структура устроена сложнее. macOS построена на Darwin, который объединяет ядро XNU и подсистему BSD. XNU — гибридное ядро: оно сочетает микроядро Mach (отвечает за управление памятью и процессами) и монолитное ядро BSD (даёт сетевой стек, права доступа и файловые системы). Поверх этого уровня Apple добавила свои компоненты — графическую оболочку, API и системные сервисы, но базовая UNIX-иерархия осталась прежней.

Корневая файловая система macOS хранится на томе APFS, смонтированном в /System/Volumes/Data. При загрузке система монтирует несколько уровней:

  • /System — только для чтения, содержит ядро и системные файлы;
  • /Data — для записи, там лежат пользовательские данные и установленные приложения;
  • /Volumes — для внешних и сетевых дисков.

Когда пользователь вставляет флешку, Finder делает то же, что и mount: подключает файловую систему (например, exFAT, FAT32 или APFS) в /Volumes/Имя_диска. Если в терминале выполнить mount, macOS покажет список всех активных точек монтирования — от системных до временных и сетевых.

В Windows принцип монтирования тот же, но пользователь видит дерево иначе. Точки монтирования представлены как диски с буквами — C:, D:, E: и так далее. Каждая буква на самом деле — просто ссылка на определённый раздел файловой системы NTFS. Но Windows тоже может монтировать раздел в любую папку, без буквы. Это делается через Disk Management или PowerShell:

mountvol C:\mnt\backup \\?\Volume{UUID}\

Корневая файловая система Windows — это том, где установлена сама система, обычно C:. В нём находится папка \Windows, которая для ядра играет ту же роль, что / в UNIX: именно с неё начинается загрузка и поиск системных компонентов.

Таким образом, вне зависимости от интерфейса или названий, суть везде одна и та же. Любая операционная система начинается с одной корневой файловой системы, монтирует её первой, а затем “подвешивает” к ней остальные устройства, тома и сетевые ресурсы. Разница только в том, видит ли пользователь это как единое дерево (Linux, macOS) или как набор отдельных дисков (Windows).

Как работает mount

Команда mount связывает физическое устройство с конкретным каталогом в дереве файловой системы. Когда ядро получает такую команду, оно буквально делает следующее: «возьми это устройство и сделай его содержимое доступным по указанному пути».

Например, если подключить флешку и выполнить:

sudo mount /dev/sdb1 /mnt/usb

ядро примонтирует файловую систему, находящуюся на разделе /dev/sdb1, в каталог /mnt/usb. Теперь всё, что хранится на флешке, можно увидеть и открыть внутри этого каталога. Если на устройстве лежал файл report.txt, он сразу появится в пути /mnt/usb/report.txt.

Физически данные остаются на флешке, но ядро отображает их в общем дереве /, как будто это обычная папка. Программы не знают, что обращаются к внешнему устройству — для них это просто ещё один каталог.

Когда работа с устройством завершена, его нужно размонтировать, чтобы система успела записать все данные и очистить буферы:

sudo umount /mnt/usb

Команда umount закрывает все открытые файлы, завершает отложенные операции и синхронизирует содержимое памяти с реальным устройством.

Если просто вытащить флешку без размонтирования, часть данных может остаться в оперативной памяти и не попасть на диск. Именно поэтому в графических интерфейсах кнопка «Безопасное извлечение» делает то же самое — вызывает umount в фоновом режиме и ждёт, пока ядро подтвердит, что всё записано.

Так Linux обеспечивает надёжность: монтирование делает устройство частью дерева, а размонтирование — гарантирует целостность данных при отключении.

Как система находит корень

Когда система запускается, первым делом ядро должно понять, где находится корневая файловая система — та, с которой начинается всё дерево каталогов. Без этого ОС просто не сможет найти команды, библиотеки и конфигурации, необходимые для старта.

Эту информацию ядро получает от загрузчика — программы, которая запускается первой при включении компьютера. Например, загрузчик GRUB передаёт ядру параметр вида:

root=/dev/sda2

или

root=UUID=2e4f3a6b-1c7a-4f8e-8d9f-1b7f29a4c2a1

Эта строка говорит ядру, на каком устройстве или разделе находится каталог /, то есть корень всей файловой системы.

После этого ядро выполняет первое монтирование — root mount. Оно подключает найденную файловую систему как корневую, и с этого момента всё дерево каталогов становится доступным. Именно с этого шага запускаются системные службы, монтируются остальные разделы (/home, /boot, /var и т.д.) и стартуют пользовательские процессы.

Чтобы увидеть, какие файловые системы сейчас подключены, используется команда:

df -h

Она показывает список всех смонтированных устройств, их размер, занятое и свободное пространство, а также точки монтирования. Пример вывода:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        40G   18G   20G  48% /
/dev/sda1       512M  120M  392M  24% /boot
tmpfs           1.9G  8.0M  1.9G   1% /run
/dev/sdb1       128G   60G   68G  47% /mnt/data

Здесь видно, что корневая файловая система (/) смонтирована с раздела /dev/sda2, загрузочный раздел /boot — с /dev/sda1, а внешний диск подключён в /mnt/data.

Команда df (disk free) удобна для диагностики: по ней легко увидеть, где не хватает места, какие разделы заняты и какие смонтированы как временные (tmpfs). Так можно контролировать состояние всей структуры, которую ядро построило при запуске.

Инструменты для диагностики

Чтобы разобраться, какие устройства подключены к системе и где именно они смонтированы, в Linux есть несколько удобных инструментов. Они позволяют увидеть не просто список дисков, а полную структуру — с разделами, точками монтирования и типами файловых систем.

Команда lsblk (list block devices) показывает дерево всех блочных устройств — физических и виртуальных. Если выполнить:

lsblk

то в выводе появится структура дисков с указанием разделов и точек монтирования. Например:

sda
├─sda1  /boot
├─sda2  /
└─sda3  /home
sdb1     /mnt/usb

Здесь видно, что диск sda содержит три раздела: /boot, корневой /, и /home, а флешка sdb1 подключена в /mnt/usb. Колонка MOUNTPOINT показывает, где каждый раздел смонтирован. Если она пустая — значит, устройство подключено, но файловая система на нём пока не активна.

Вторая полезная команда — blkid. Она выводит информацию о типе файловой системы и уникальном идентификаторе раздела (UUID).

sudo blkid

Пример вывода:

/dev/sda1: UUID="abcd-1234" TYPE="ext4"
/dev/sdb1: UUID="efgh-5678" TYPE="vfat"

Параметр UUID — это уникальный идентификатор раздела, присвоенный при его создании. В отличие от имён вроде /dev/sda1 или /dev/sdb1, UUID не зависит от порядка подключения устройств. Если поменять диски местами или вставить флешку в другой порт, имя /dev/sdb1 может измениться, но UUID останется тем же.

Именно поэтому современные системы используют UUID в конфигурационных файлах — например, в /etc/fstab. Там указывают, какие разделы нужно монтировать при загрузке. Запись вида:

UUID=abcd-1234  /boot  ext4  defaults  0  1

гарантирует, что система найдёт нужный раздел независимо от того, каким устройством он будет обозначен в этот раз.

Таким образом, lsblk помогает увидеть дерево подключений, а blkid — понять, какие файловые системы установлены и как они идентифицируются. Вместе эти инструменты дают полную картину: где что смонтировано, какой тип используется и какие устройства доступны ядру.

Автоматическое монтирование: /etc/fstab

Когда Linux загружается, ядру нужно понять, какие файловые системы нужно подключить и куда именно их встроить. Чтобы этот процесс выполнялся автоматически при каждом старте, существует конфигурационный файл /etc/fstab (filesystem table).

Что хранится в /etc/fstab

Файл /etc/fstab содержит список всех постоянных подключений — как локальных дисков, так и сетевых или виртуальных. Каждая строка в нём описывает одно монтирование в виде шести колонок:

<устройство>    <точка_монтирования>    <тип_файловой_системы>    <опции>    <dump>    <fsck>

Пример записи:

UUID=1234-ABCD   /mnt/backup   ext4   defaults   0   2

Разберём по частям:

  1. UUID=1234-ABCD — уникальный идентификатор раздела. Его можно узнать командой sudo blkid. В отличие от имён /dev/sda1, UUID не меняется, если диск подключить к другому компьютеру.
  2. /mnt/backup — каталог, куда будет смонтирован диск. Этот каталог должен существовать заранее (sudo mkdir /mnt/backup).
  3. ext4 — тип файловой системы. Здесь можно указать xfs, btrfs, vfat, nfs и другие.
  4. defaults — параметры монтирования (обычно rw,suid,dev,exec,auto,nouser,async).
  5. 0 — участвует ли раздел в резервном копировании dump (сейчас почти не используется).
  6. 2 — порядок проверки файловых систем при загрузке (1 — корень /, 2 — остальные, 0 — не проверять).

Как это работает при старте

Когда система запускается, systemd (или старый init) читает /etc/fstab и выполняет для каждой строки эквивалент команды mount. Например:

UUID=1234-ABCD  /mnt/backup  ext4  defaults  0  2

равнозначно:

sudo mount -t ext4 -o defaults UUID=1234-ABCD /mnt/backup

Если в fstab есть ошибка — например, неверный UUID или несуществующий каталог — загрузка может остановиться на этапе монтирования. Поэтому изменения в этом файле всегда нужно проверять вручную, не перезагружая систему:

sudo mount -a

Эта команда перечитает fstab и подключит все разделы, которые ещё не смонтированы. Если где-то ошибка, вы сразу увидите предупреждение, и систему не придётся восстанавливать из rescue-режима.

В Linux монтирование — это не просто способ «подключить диск», а ключевой механизм, через который система объединяет все устройства в одно дерево каталогов. Через mount можно работать не только с локальными разделами, но и с сетевыми ресурсами, образами дисков и даже виртуальными файловыми системами, создаваемыми самим ядром.

Сетевое хранилище (NFS)

Сетевые файловые системы позволяют работать с удалёнными папками так, будто они находятся локально. Самая распространённая из них — NFS (Network File System).

Пример:

sudo mount -t nfs server:/share /mnt/nfs

Разберём команду по частям:

  • -t nfs — указывает тип файловой системы (Network File System);
  • server:/share — адрес сервера и экспортируемой папки;
  • /mnt/nfs — локальный каталог, куда будет подключено сетевое хранилище. \

Чтобы раздел монтировался автоматически при старте системы, можно добавить строку в /etc/fstab:

server:/share   /mnt/nfs   nfs   defaults,_netdev   0   0

Опция _netdev сообщает ядру, что этот ресурс можно подключать только после запуска сети. Без неё система может попытаться смонтировать NFS до того, как появится соединение.

Образ диска (ISO, IMG)

Иногда нужно «подключить» файл-образ как полноценный диск — например, ISO-образ установочного диска или архив IMG. Для этого используется параметр -o loop, который заставляет ядро обращаться к файлу как к виртуальному устройству.

sudo mount -o loop image.iso /mnt/iso

После выполнения команда ls /mnt/iso покажет содержимое ISO-файла, как если бы это был настоящий диск. Размонтировать можно командой:

sudo umount /mnt/iso

Виртуальные файловые системы ядра

Некоторые файловые системы в Linux не живут на диске вообще. Их данные создаются «на лету» самим ядром и отражают состояние системы.

Файловая системаНазначение
/procСостояние процессов и ядра — здесь можно прочитать /proc/cpuinfo, /proc/meminfo и многое другое.
/sysИнформация об устройствах, драйверах, шинах, температуре и параметрах питания.
/run, /tmpРазмещены в tmpfs, то есть в оперативной памяти. Служат для временных данных и очищаются при перезагрузке.

Чтобы увидеть, какие виртуальные файловые системы активны сейчас, можно выполнить:

mount | grep tmpfs

Эти каталоги жизненно важны: через них ядро взаимодействует с пользователем и службами. Без /proc и /sys не будут работать команды вроде ps, top, lsusb, lspci и dmesg.

Монтирование — фундамент UNIX

Вся структура Linux держится на идее единого дерева файловой системы. Корневая файловая система / монтируется первой — именно с неё ядро начинает работу. Все остальные разделы — /home, /boot, /var, /mnt и любые внешние устройства — подключаются поверх неё.

Каждое устройство получает свою точку монтирования и становится частью общей структуры. Поэтому пользователю не важно, где физически лежат файлы — на SSD, флешке, в RAM-диске или на сетевом сервере. Путь к ним всегда выглядит одинаково:

/mnt/usb/report.txt
/mnt/nfs/project/
/tmp/cache/

💡 Главное

  • mount — подключает файловую систему;
  • umount — безопасно отключает;
  • df, lsblk, blkid — показывают текущее состояние;
  • /etc/fstab — делает подключение автоматическим.

Благодаря этой архитектуре Linux остаётся цельной системой: все файлы — локальные, сетевые или временные — видны в одном дереве и доступны одинаково.

Рекомендуемые программы

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845