Корневая раздел не в fstab, как это возможно?

Вопрос или проблема

Система, которую я не настраивал, только обслуживаю (Debian 10/Buster):

root@host:~# df -h
Файловая система    Размер  Использовано  Доступно Использование% Смонтировано в
/dev/p100p1502lp1   4.0T   3.2T         667G  83% /
none                24G     0           24G   0% /sys/fs/cgroup
none                24G     0           24G   0% /dev
tmpfs               24G     0           24G   0% /dev/shm
tmpfs               24G   2.5G          22G  11% /run
tmpfs              5.0M     0         5.0M   0% /run/lock
none                24G     0           24G   0% /run/shm

Но:

root@host:~# cat /etc/fstab
proc  /proc       proc    defaults    0    0
none  /dev/pts    devpts  rw,gid=5,mode=620    0    0
none  /run/shm    tmpfs   defaults    0    0

Как может быть так, что есть раздел root, но в /etc/fstab/ нет для него записи?

Раздел root не в fstab

Ваш root настроен через параметры командной строки ядра с помощью опций
“root=…” и “rootflags=…”. Запись в /etc/fstab затем
перезаписывает эти опции во время загрузки, но если у вас нет записи
в /etc/fstab, то система использует то, что было в командной строке ядра.

Раздел root можно смонтировать без записи в /etc/fstab через initramfs, systemd или другие.

Initramfs

Во время загрузки initramfs считывает устройство root из параметров загрузки ядра root= в конфигурации загрузчика.

systemd

systemd может динамически обрабатывать файловую систему root на основе параметров загрузки, не полагаясь на /etc/fstab.

Проверьте это:

/boot/grub/grub.cfg на предмет root=

sudo cat /proc/cmdline

Команда mount показывает только то, что указано в /etc/mtab. Если вы хотите увидеть все монтирования, вы можете выполнить cat /proc/mounts. Вы можете смонтировать что-то без его записи в /etc/mtab, используя опцию mount -n.

Тот факт, что /etc/mtab и /proc/mounts не обязательно являются одним и тем же, может быть полезен для скриптов завершения работы, так как это позволяет им заботиться только о размонтировании того, что указано в /etc/mtab.

sudo cat /etc/mtab | grep "root"

Файловая система root не отображается при выполнении mount

Нет записи в fstab, но раздел смонтирован при загрузке

Как Linux знает, как монтировать без /etc/fstab (Linux, systemd, boot, Linux kernel, initramfs, Unix)?

Раздел root не в fstab

fstab

Как /etc/fstab доступен до монтирования root?

При установке linux, почему нам нужно монтировать наш “раздел root” в “/”, и что это делает?

ArchLinux монтирует файловую систему без записей в /etc/fstab

fstab содержит список вещей, которые ОС должна смонтировать при загрузке. Это не полный список всех смонтированных файловых систем. (Также возможно указать вещи в fstab и пометить их как не автоматически монтируемые.)

Технически, раздел root монтируется очень рано в процессе загрузки, так как он необходим для завершения загрузки. Нет смысла искать в fstab раздел root, так как вы должны смонтировать раздел root, чтобы посмотреть fstab. Он может быть в fstab, но не обязательно, и если он там есть, то используется только для документации и маркировки. (Я даже не уверен, используются ли параметры монтирования для root в fstab, ОС должна будет перемонтировать root, чтобы они вступили в силу.)

Также возможно вручную монтировать разделы с помощью команды mount и автоматически монтировать устройства hot-swap с помощью udev и autofs, и они также не будут перечислены в fstab. (И есть много других возможностей тоже.)

Так что, если вы думаете, что fstab – это авторитетный список всех смонтированных файловых систем, вам нужно переосмыслить это. 🙂

Ответ или решение

Вопрос, почему корневая файловая система может смонтироваться без записи в /etc/fstab, достаточно интересен и касается механизмов загрузки в Linux, особенно в дистрибутивах, таких как Debian 10 (Buster). Давайте детально рассмотрим, как это возможно и какие механизмы стоят за этим процессом.

1. Конфигурация загрузчика

При загрузке системы производится считывание параметров ядра из конфигурации загрузчика (например, GRUB). Параметр root= указывает, на каком устройстве находится корневая файловая система. Таким образом, даже если в /etc/fstab нет записи для корневого раздела, операция монтирования выполняется на основе параметров, переданных ядру.

Пример:

Для проверки параметров ядра можно выполнить следующую команду:

cat /proc/cmdline

Выведенные параметры будут включать, среди прочего, root=, указывающий на основное устройство.

2. Роль initramfs

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

Именно на этом этапе initramfs обращается к параметрам ядра и монтирует указанное устройство как корневую файловую систему, даже если ни одной записи для него нет в /etc/fstab.

3. Управление системой с помощью systemd

Современные дистрибутивы Linux, такие как Debian 10, используют systemd для управления службами и целями. systemd имеет возможность динамически монтировать корневую файловую систему на основе параметров загрузки, не полагаясь на статическую информацию из /etc/fstab.

Таким образом, даже если раздел не зарегистрирован в fstab, система все равно может его монтировать на основе динамически определяемых правил.

4. Различия между mtab и mounts

Системные утилиты, такие как mount, могут использовать разные источники информации о смонтированных файловых системах. Например, можно использовать:

cat /proc/mounts

Это покажет все смонтированные файловые системы, в отличие от /etc/mtab, который может содержать более ограниченный список. Тем не менее, даже если нет записей в /etc/fstab, это не значит, что файловая система не может быть смонтирована.

5. Зачем нужен fstab?

Файл /etc/fstab действительно играет важную роль, но не является исчерпывающим списком всех смонтированных файловых систем. Он в основном используется для автоматического монтирования дополнительных файловых систем при старте системы и для удобства администрирования. Записи в fstab могут также служить для документирования конфигурации системы, включая параметры монтирования.

Заключение

Таким образом, корневая файловая система может быть смонтирована без записи в /etc/fstab благодаря параметрам, переданным ядру во время загрузки, и использованию initramfs, а также динамическому управлению с помощью systemd. Понимание этих механизмов поможет вам лучше управлять системой и решать возможные проблемы, связанные с монтированием файловых систем.

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

Оцените материал
Добавить комментарий

Капча загружается...