Могу ли я проверить, являются ли такие устройства, как sda, sdb с именами в /dev /, постоянными по умолчанию

или же

Есть ли какие-то правила udev для создания постоянных имен для них?

Создает ли сам udev динамическое именование устройств в /dev, но использует ли правила для обеспечения постоянного именования?

1 ответ1

4

Присвоение имен устройствам выполняется, когда устройства инициализируются ядром, поэтому нет, именование не является постоянным. Обычно UUID используются для идентификации дисков, так как /dev /sdX может быть изменен. Можно использовать udev для распознавания дисков по их серийному номеру (или некоторому другому атрибуту) и создать символическую ссылку в /dev, например /dev /mydisk1.

Существует несколько способов заполнения /dev; чаще всего (в настоящее время) ядро использует devtmpfs для динамического заполнения /dev при загрузке. Затем Udev вступает во владение и обрабатывает добавление устройства, удаление, создание сценариев и т.д.

Со страницы Gentoo Wiki на uDev

Ядро обнаруживает устройства асинхронно, udev зеркально отображает файловую систему ядра sysfs, поэтому устройства именуются и нумеруются в порядке обнаружения. Поэтому по умолчанию udev не предоставляет постоянных имен устройств. Однако для некоторых классов устройств существуют механизмы, обеспечивающие

Вот недавний ответ на похожий вопрос, описывающий процесс установки постоянного имени, со ссылками на дальнейшие соответствующие ответы ...

РЕДАКТИРОВАТЬ: Для fstab рекомендуется настроить ваши устройства, используя UUID вместо установки символической ссылки udev; запустить следующее

blkid /dev/sda1 -s UUID -o value

Результатом будет UUID раздела, который вы можете использовать в fstab. Вместо /dev /sda1 используйте UUID = thelonguuidabove123456

РЕДАКТИРОВАТЬ 2: последовательность событий во время загрузки будет примерно такой, в зависимости от того, как настроено ваше ядро / пользовательское пространство:

  1. Ядро инициализирует пустую корневую файловую систему, содержащую пустую папку /dev. Эта папка заполняется ядром с помощью devtmpfs, динамической псевдофайловой системы, содержащей записи для каждого аппаратного устройства. Это динамичный процесс, и устройства могут быть изменены. На данный момент мы находимся в рамдиске и пространстве ядра, там нет файловой системы udev / root
  2. Поверх этого затем монтируется файловая система initrd / initramfs, которая предоставляет больше «материала» для запуска и запуска «другого материала» - например, она может содержать инструменты fsck, модули ядра и тому подобное. /dev по-прежнему управляется devtmpfs.
  3. Вдобавок к этому затем монтируется собственно корневая файловая система, init запущен и теперь запускает службы в пользовательском пространстве, одним из которых является udev. Затем udev берет каталог /dev и перемонтирует devtmpfs в is, и с этого момента udev управляет содержимым /dev, используя события из ядра, чтобы «знать», когда устройства добавляются или удаляются, и запускать сценарии соответствующим образом.

В данном случае сообщение о том, что /dev будет наследовать любые имена, изначально заданные ядром, а затем будет управлять добавлением / удалением. Без аппаратных изменений дескрипторы устройств в /dev, вероятно, не изменятся. Однако существует множество обстоятельств, в которых они могут измениться. Дело в том, что на имена в /dev нельзя полагаться полностью.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .