Символические ссылки на udev - где /dev/sda указывает на

Говорят, что 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 ответ

Ссылка на /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", является необязательной: вы можете использовать ее для запуска команды, если хотите, но можете вообще ее опустить.

Другие вопросы по тегам