2

Говорят, что udev создает символические ссылки, идентифицирующие фактическое устройство, и /dev /disk /by-uuid является примером.

[root @ centos1 by-uuid] # pwd

/ DEV / диск / с-UUID

[root @ centos1 by-uuid] # ls -l

всего 0 lrwxrwxrwx 1 корневой корень 10 июня 26 00:59 4cfc879d-1d4e-4289-856c-5f532a74bb2d -> ../../sda

Означает ли вышесказанное, что a) /dev /sda указывает на uuid 4cfc879d-1d4e-4289-856c-5f532a74bb2d

или же

б) uuid 4cfc879d-1d4e-4289-856c-5f532a74bb2d указывает на /dev /sda?

==================================================

Если ответ - я всегда думал, что ссылка должна быть слева направо? и как кто-то будет ссылаться на uuid, чтобы перейти к /dev /sda? Также я подумал, что /dev /sda предполагается динамически добавлять с помощью udev, и его именование основано на некоторых правилах.

Если ответ b, то куда указывает sda? Говорят, что ядро динамически добавляет устройства в папку /dev /, и с помощью udev мы можем сохранять имена устройств в ней.

[root @ centos1 dev] # pwd

/ DEV

[root @ centos1 dev] # ls -lt sda

brw-rw ---- 1 корневой диск 8, 0 июня 26 00:59 sda

==================================================

Я пытался найти правила в /etc/udev/rules.d/, но безрезультатно. Я нахожусь на CentOS.

Я пытаюсь в /lib/udev/rules.d/, но не вижу правил, которые добавляют sda в /dev /

Пожалуйста, порекомендуйте.

1 ответ1

4

Ссылка на /dev /sda1. Вы можете установить это с помощью команды file : в моей системе, например,

  # file *
  ff28e743-4409-41b3-99ea-f133cdcc86be: symbolic link to `../../sda1' 

Таким образом, ваш вариант b является правильным. /dev /sda не является ссылкой, следовательно, она вообще ни на что не указывает: это просто специальный файл (устройство), см., например, эту статью в Википедии.

Я не использую CentOS, но в моих системах Debian/Kubuntu правила диска находятся в /lib/udev/rules.d, в разделе

   # ls -lh 60-per*
     -rw-r--r-- 1 root root  616 apr 15 22:33 60-persistent-alsa.rules
     -rw-r--r-- 1 root root 2,5K apr 15 22:33 60-persistent-input.rules
     -rw-r--r-- 1 root root  947 apr 15 22:33 60-persistent-serial.rules
     -rw-r--r-- 1 root root  929 mag  4  2012 60-persistent-storage-dm.rules
     -rw-r--r-- 1 root root 5,6K apr 15 22:33 60-persistent-storage.rules
     -rw-r--r-- 1 root root 1,4K apr 15 22:33 60-persistent-storage-tape.rules
     -rw-r--r-- 1 root root  769 apr 15 22:33 60-persistent-v4l.rules

Соответствующий файл, конечно, 60-persistent-storage.rules. Если вы не можете найти его здесь, в вашей системе, я предлагаю вам попробовать:

    find / -type f -name '*persistent-storage*.rules'

Редактировать:

/sda добавляется в /dev пользователем udev?

Да.

как мы можем гарантировать, что "sda" всегда будет оставаться "sda"?

Мы не. Правило автоматически генерируется udev во время установки. Фактически вышеупомянутый файл содержит следующее правило:

   # scsi devices
   KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode", ENV{ID_BUS}="scsi"

РЕДАКТИРОВАТЬ 2

Самое простое, учитывая, что вы не можете принять решение, - это установить свои собственные правила. Предположим, у вас есть устройство под названием now sdd, но вы хотите назвать его sda при следующей перезагрузке.

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

   udevadm info -a -p $(udevadm info -q path -n /dev/sdd)

Это выложит много информации. Ищите строки, подобные этим (у вас, конечно, будут другие):

  ATTRS{idVendor}=="18a5"
  ATTRS{idProduct}=="0302"
  ATTRS{serial}=="TT0E4E008XW3DT9H"

Теперь вы можете использовать эти параметры для создания собственного правила, которое будет вставлено в /etc/udev/rules.d/10-local.rules:

 ATTRS{idVendor}=="18a5", ATTRS{idProduct}=="0302", ATTRS{serial}=="TT0E4E008XW3DT9H", KERNEL=="sd?", NAME="sda", RUN+="/home/my_name/bin/my_program"

Последняя часть, RUN+= "/home/my_name/bin/my_program", является необязательной: вы можете использовать ее для запуска команды, если хотите, но можете вообще ее опустить.

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