udev и обработка правил

Sabayon, Calculate, Funtoo, Exherbo

Модератор: /dev/random

Ka40k
Сообщения: 101
ОС: Gentoo

udev и обработка правил

Сообщение Ka40k »

Здравствуйте, появилась следующая проблема.
В /etc/udec/rules.d/70-persistent-cd.rules описано

Код: Выделить всё

# HL-DT-ST_DVDRAM_GSA-4167B (pci-0000:00:0f.1)
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:0f.1", SYMLINK+="cdrom", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:0f.1", SYMLINK+="cdrw", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:0f.1", SYMLINK+="dvd", ENV{GENERATED}="1"
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:0f.1", SYMLINK+="dvdrw", ENV{GENERATED}="1"

Тобишь, должны создаваться ссылки на CD-ROM. В системе он у меня /dev/hda. Ссылки были раньше, но потом пропали, было это довольно давно, уже не помню из-за чего и я тогда особого внимания этому не уделил, т.к. всё работало с /dev/hda. Всё работает и сейчас, просто теперь интересно, а почему не обработались правила?
Udev присутствует в sysinit и default runlevel'ах.
sysinit:

Код: Выделить всё

devfs | sysinit
dmesg | sysinit
udev | sysinit

*Ещё вопрос, нужен ли здесь devfs?
И default:

Код: Выделить всё

....
hwclock | default
alsasound | default
udev-postmount | default
.....

Куда можно копать в данной ситуации?
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: udev и обработка правил

Сообщение Rootlexx »

Ka40k писал(а):
15.10.2010 16:10
*Ещё вопрос, нужен ли здесь devfs?

Если используете udev, зачем devfs?
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: udev и обработка правил

Сообщение serzh-z »

Ka40k писал(а):
15.10.2010 16:10
а почему не обработались правила?
Возможно был заменён привод DVD, может его переставили на другой контроллер, заменили мат. плату, заменили контроллер и т.д. Правила "*-persistent-*.rules" создаются автоматически udev - если этот файл удалить, то он будет пересоздан при перезапуске (или при сборке?) udev.

У udev есть, кажется, режим отладки и мониторинга применяемых правил - см. утилиты администрирования udev.
Спасибо сказали:
Ka40k
Сообщения: 101
ОС: Gentoo

Re: udev и обработка правил

Сообщение Ka40k »

Если используете udev, зачем devfs?

Я изменений не вносил в sysinit. Это осталось с момента установки. Тоесть его можно просто убрать оттуда?
Возможно был заменён привод DVD, может его переставили на другой контроллер, заменили мат. плату, заменили контроллер и т.д. Правила "*-persistent-*.rules" создаются автоматически udev - если этот файл удалить, то он будет пересоздан при перезапуске (или при сборке?) udev.

У udev есть, кажется, режим отладки и мониторинга применяемых правил - см. утилиты администрирования udev.

Железо не менялось вообще уже очень давно, udev сначала перезапустиил, потом пересобрал (обновил) - результата нет, перемещённый файл правил не появился...
Да, hal'a в системе нету.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: udev и обработка правил

Сообщение serzh-z »

Ka40k писал(а):
15.10.2010 23:26
перемещённый файл правил не появился
Значит он не нужен в этой версии udev. И в базе udev есть правило, которое более приоритетно, чем правила в удалённом файле.
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: udev и обработка правил

Сообщение Rootlexx »

Ka40k писал(а):
15.10.2010 23:26
Я изменений не вносил в sysinit. Это осталось с момента установки. Тоесть его можно просто убрать оттуда?

Нет. Я уж грешным делом подумал, что это та самая реализация динамического /dev на уровне ядра, которую вроде выпилили к 2.6.17. Это ж надо было так назвать...
Моя ошибка, извините.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: udev и обработка правил

Сообщение serzh-z »

Что в /etc/conf.d/udev?

P.S.: информация к размышлению: 70-persistent-cd.rules {пере}создаётся с помощью /lib/udev/rules.d/75-cd-aliases-generator.rules

"udevadm monitor" покажет пойманные события от ядра.
Спасибо сказали:
Ka40k
Сообщения: 101
ОС: Gentoo

Re: udev и обработка правил

Сообщение Ka40k »

В conf.d включено создание cd
persistent_cd_disable="no"

Код: Выделить всё

persistent_net_disable="no"
persistent_cd_disable="no"
#rc_device_tarball="NO"
#rc_coldplug="YES"
#unreliable_kernel_warning="no"
#udev_settle_timeout="60"
#udev_opts=""
#udev_debug="YES"
#udev_monitor="YES"
#udev_monitor_keep_running="no"
#udev_monitor_opts="--env"

/lib/udev/rules.d/75-cd-aliases-generator.rules тоже по всей видимости в порядке...

Код: Выделить всё

ACTION=="add", SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394", ENV{ID_CDROM}=="?*", ENV{GENERATED}!="?*",  PROGRAM="write_cd_rules by-id", SYMLINK+="%c", GOTO="persistent_cd_end"

ACTION=="add", SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{GENERATED}!="?*", PROGRAM="write_cd_rules", SYMLINK+="%c"

LABEL="persistent_cd_end"


"udevadm monitor" покажет пойманные события от ядра.

При перезапуске поймало события от cdrom'а :

Код: Выделить всё

KERNEL[1287208129.960520] add      /devices/pci0000:00/0000:00:0f.1/ide0/0.0 (ide)
KERNEL[1287208129.960724] add      /devices/pci0000:00/0000:00:0f.1/ide0/0.0/block/hda (block)
KERNEL[1287208129.960832] add      /devices/pci0000:00/0000:00:0f.1/ide0/ide_port/ide0 (ide_port)
----- И ниже вроде бы даже обрабатывается этот ide0
UDEV  [1287208129.966437] add      /devices/pci0000:00/0000:00:0f.1/ide0/0.0 (ide)
....
UDEV  [1287208129.986800] add      /devices/pci0000:00/0000:00:0f.1/ide0/ide_port/ide0 (ide_port)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: udev и обработка правил

Сообщение serzh-z »

Ну не знаю, нужно просто отлаживать udev и читать мануалы по его птичьим правилам.
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: udev и обработка правил

Сообщение Rootlexx »

Ka40k писал(а):
16.10.2010 10:02
При перезапуске поймало события от cdrom'а :

Добавьте параметр "--environment", чтобы были видны все параметры.
Спасибо сказали:
Ka40k
Сообщения: 101
ОС: Gentoo

Re: udev и обработка правил

Сообщение Ka40k »

Добавьте параметр "--environment", чтобы были видны все параметры.

Так включен вроде бы...

Код: Выделить всё

udev_monitor_opts="--env"
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: udev и обработка правил

Сообщение serzh-z »

Ka40k писал(а):
16.10.2010 21:13
Так включен вроде бы...
Привет. Он закоментарен. И /etc/conf.d/udev используется лишь скриптами в /etc/init.d
Спасибо сказали:
Ka40k
Сообщения: 101
ОС: Gentoo

Re: udev и обработка правил

Сообщение Ka40k »

Да, спасибо, включил. Странные вещи вот сейчас увидел:
Ядро:

Код: Выделить всё

KERNEL[1287250646.200576] add      /devices/pci0000:00/0000:00:0f.1/ide0/0.0 (ide)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:0f.1/ide0/0.0
SUBSYSTEM=ide
DRIVER=ide-cdrom
MEDIA=cdrom
DRIVENAME=
MODALIAS=ide:m-cdrom
SEQNUM=3522

KERNEL[1287250646.200751] add      /devices/pci0000:00/0000:00:0f.1/ide0/0.0/block/ +9hda (block)
UDEV_LOG=3
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:0f.1/ide0/0.0/block/hda
SUBSYSTEM=block
DEVNAME=hda
DEVTYPE=disk
SEQNUM=3523
MAJOR=3
MINOR=0

UDEV

Код: Выделить всё

UDEV  [1287250270.481550] add      /devices/pci0000:00/0000:00:0f.1/ide0/0.0 (ide)
UDEV_LOG=3
STARTUP=1
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:0f.1/ide0/0.0
SUBSYSTEM=ide
DRIVER=ide-cdrom
MEDIA=cdrom
DRIVENAME=hda
MODALIAS=ide:m-cdrom
SEQNUM=2824

UDEV  [1287250646.208879] add      /devices/pci0000:00/0000:00:0f.1/ide0/0.0 (ide)
UDEV_LOG=3
STARTUP=1
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:0f.1/ide0/0.0
SUBSYSTEM=ide
DRIVER=ide-cdrom
MEDIA=cdrom
DRIVENAME=hda
MODALIAS=ide:m-cdrom
SEQNUM=3522

В ядре SUBSYTEM ide и block, а в udev только ide, при этом в правилах написано

Код: Выделить всё

SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:0f.1", SYMLINK+="cdrom", ENV{GENERATED}="1"

Пробовал менять на ide, результата нет. Ещё есть параметр ID_PATH. Он совпадает с тем что показал udevadm, но ни в одном каталоге в /dev/disk/ (by-id, by-path, by-label, by-uuid) нету hda, есть только винты (hdc, sda).
/dev/block/hda существует...
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4471
Статус: GNU generation
ОС: Debian GNU/Linux

Re: udev и обработка правил

Сообщение Rootlexx »

Покажите вывод:

Код: Выделить всё

udevinfo -q all -n /dev/hda
Спасибо сказали:
Ka40k
Сообщения: 101
ОС: Gentoo

Re: udev и обработка правил

Сообщение Ka40k »

Код: Выделить всё

udevadm info -q all -n /dev/hda
P: /devices/pci0000:00/0000:00:0f.1/ide0/0.0/block/hda
N: hda
S: block/3:0
S: disk/by-path/pci-0000:00:0f.1
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:0f.1/ide0/0.0/block/hda
E: SUBSYSTEM=block
E: DEVNAME=hda
E: ID_PATH=pci-0000:00:0f.1
E: MAJOR=3
E: MINOR=0
E: DEVTYPE=disk
E: DEVLINKS=/dev/block/3:0 /dev/disk/by-path/pci-0000:00:0f.1

Но,
S: disk/by-path/pci-0000:00:0f.1
в папке /dev/disk/by-path

Код: Выделить всё

lrwxrwxrwx 1 root root   9 Окт 16 20:37 pci-0000:00:0f.1 -> ../../hdc

Спасибо сказали: