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