CD и udev-174

При обновлении udev до версии 174 вышло грозное предупреждение:
[2011-10-25 07:41] ATTENTION UDEV:
[2011-10-25 07:41] ----------
[2011-10-25 07:41] We now use upstream rules for assigning devices to the 'disk', 'optical',
[2011-10-25 07:41] 'scanner' and 'video' groups. Beware of any changes.
[2011-10-25 07:41]   --
[2011-10-25 07:41] We no longer create symlinks from /dev/<dev> to /dev/<dev>0.
[2011-10-25 07:41]   --
[2011-10-25 07:41] For security reasons, we no longer add devices to the 'storage' group. Use
[2011-10-25 07:41] udisks and friends, or add custom rules to /etc/udev.d/rules/, if you want
[2011-10-25 07:41] this functionality back.
[2011-10-25 07:41]  --
[2011-10-25 07:41] We no longer create the static nodes on install needed for an initrd-less and
[2011-10-25 07:41] devtmpfs-less boot, this only affects fresh installs.
[2011-10-25 07:41] ---------------
[2011-10-25 07:41] upgraded udev (173-3 -> 174-1)
Всё думал, чем же мне это грозит? Оказалось, вот чем:

1) Перестала работать команда eject. Как выяснилось, несмотря на отсылку к upstream, устройству /dev/sr0 не присвоилась группа “optical”. Исправил, добавив ещё одну строчку в файл /etc/udev/rules.d/83-cdrom.rules :
# Group for CD/DVD devices
KERNEL=="sr*", GROUP="optical"
# nicknames for first CD/DVD device
KERNEL=="sr0", SYMLINK+="dvd cdrom"
2) Перестали работать cdrtools, жаловались на отсутствие устройств /dev/sg*. Причина – перестал автоматически загружаться модуль sg (SCSI Generic). Лечение – добавил sg в MODULES в /etc/rc.conf
Интересно, что имеется в виду под “Beware of any changes” ;)
такие дела.
“Берегитесь любых изменений”. Видимо, предлагается заранее ждать подвоха :)
Natrio
“Берегитесь любых изменений”.
Исправил, добавив ещё одну строчку в файл /etc/udev/rules.d/83-cdrom.rules
как это сочетается?
такие дела.
cucullus
Natrio
“Берегитесь любых изменений”.
Исправил, добавив ещё одну строчку в файл /etc/udev/rules.d/83-cdrom.rules
как это сочетается?
Появились изменения – сразу нашел и исправил ;)
Ждать обновлений udev?
У меня, кстати, вообще перестали монтироваться опт. диски. Зато eject работает=)

ps. Natrio, ты у нас по udev теперь главный!
Ситуация следующая (подробный отчёт смогу выдать только вечером: выхлопы на события и т.п..):
Eject как работала, так и работает (после твоего патча): eject -T /dev/sr0|1 (у меня два дисковода)
CD|DVD с данными монтируются и извлекаются как средствами KDE, так и eject-ом.
Чистые диски CD|DVD не монтируются и извлекаются только эджектом или кнопкой.
В /etc/udev/rules.d/ никаких правил, давно всё работало “само”, поэтому не было нужды туда вообще лезть, флэшки монтируются и т.д., но вот с чистыми опт. носителями после обновления udev > 174.1 незадача.
Насчёт групп: optical, disk, storage - всё в порядке.
sg добавлен в rc.conf
Пожалуйста, что там у тебя в /etc/udev/rules.d/ на тему CD/DVD?
Всё, что у меня в udev по CD/DVD, я написал в первом посте: симлинки cdrom и dvd для /dev/sr0 , а теперь вот и группа “optical”.

А вот о монтировании чистых дисков, пожалуйста, поподробнее.
Нет, я конечно знаю, что есть один инструмент, позволяющий использовать CD/DVD-RW в UDF в режиме чтения/записи, и даже когда-то давно пробовал, но не понравилось. Впрочем, даже в этом случае диску требовалось форматирование – чистым он всё равно не монтировался.. Вы действительно об этом, или имеете в виду что-то другое?
Natrio, “поподробнее” могу только кинуть на pastebin выхлоп udevadm monitor при вставке чистого CD- или DVD-диска.
Как я понимаю, это всё, что есть в твоём /etc/udev/rules.d/83-cdrom.rules :
# Group for CD/DVD devices
KERNEL=="sr*", GROUP="optical"
# nicknames for first CD/DVD device
KERNEL=="sr0", SYMLINK+="dvd cdrom"
так?
/dev/sr0 не присвоилась группа “optical”
так и есть, да. Сейчас попробую с симлинками, отпишусь.
Если “не произойдёт”, залью выхлоп на сервис, может что подскажешь?

ps. Создал /etc/udev/rules.d/83-cdrom.rules с аналогичным содержимым.

При вставке CD-R с данными диск монтируется (в кедах: доступные действия… извлечь..) и вот тут начинается: дисковод открывается и тут-же закрывается (независимо от способа: eject -T /dev/sr0, через апплет на панели или просто кнопкой дисковода), вывод следующий:
...
KERNEL[449.056919] change   /devices/pci0000:00/0000:00:1f.5/host4/target4:0:0/4:0:0:0/block/sr0 (block)
UDEV  [449.090594] change   /devices/pci0000:00/0000:00:1f.5/host4/target4:0:0/4:0:0:0/block/sr0 (block)
KERNEL[459.059265] change   /devices/pci0000:00/0000:00:1f.5/host4/target4:0:0/4:0:0:0/block/sr0 (block)
UDEV  [461.307379] change   /devices/pci0000:00/0000:00:1f.5/host4/target4:0:0/4:0:0:0/block/sr0 (block)
KERNEL[499.710425] add      /module/isofs (module)
UDEV  [499.710571] add      /module/isofs (module)
KERNEL[499.710725] add      /kernel/slab/isofs_inode_cache (slab)
UDEV  [499.710799] add      /kernel/slab/isofs_inode_cache (slab)
KERNEL[499.842689] add      /module/nls_utf8 (module)
UDEV  [499.842895] add      /module/nls_utf8 (module)
KERNEL[522.053082] change   /devices/pci0000:00/0000:00:1f.5/host4/target4:0:0/4:0:0:0/block/sr0 (block) # начиная отсюда, извлекал диск разными способами...
KERNEL[524.021024] change   /devices/pci0000:00/0000:00:1f.5/host4/target4:0:0/4:0:0:0/block/sr0 (block)
UDEV  [524.040030] change   /devices/pci0000:00/0000:00:1f.5/host4/target4:0:0/4:0:0:0/block/sr0 (block)
UDEV  [524.069464] change   /devices/pci0000:00/0000:00:1f.5/host4/target4:0:0/4:0:0:0/block/sr0 (block)
...
KERNEL[622.057216] change   /devices/pci0000:00/0000:00:1f.5/host4/target4:0:0/4:0:0:0/block/sr0 (block)
UDEV  [622.078612] change   /devices/pci0000:00/0000:00:1f.5/host4/target4:0:0/4:0:0:0/block/sr0 (block)

ps. Вобщем, намутил я тут с “пустыми дисками”, прошу прощения - наутилусные привычки (оправдываюсь так=). За долгое время его использования привык к тому, что при вставке пустого носителя наутилус его показывает в computer:/// - чистый CD-диск, например, но в /media его нет, он не смонтирован и при этом диск извлекается средствами наутилуса, ага. Вобщем, носители отображаются независимо от статуса и происходит хоть какое-то “событие”. И mount-tray тоже реагирует на вставку пустого диска: пишет “Device removed /dev/sr0”, как-то так.
А в kde на те-же действия реакция нулевая! Диск не монтируется, как и полагается, но и не извлекается средствами долфина или апплетом. Ради прикола запустил xfburn, а затем nero - чистый CD-диск регистрируется, всё нормально.
Вот, такие дела.
Удалил 83-cdrom.rules, в /etc/udev/rules.d/ - пусто, eject -T /dev/sr0 по-прежнему работает, в обе стороны. Дисковод циклиться перестал.
Гномом никогда не увлекался, KDE теперь тоже не юзаю.
Пробовал в thunar и pcmanfm – обычно всё работает нормально, но иногда диск действительно у меня начинал “циклиться”, как правило, после попытки извлечь диск при заблокированном приводе. Диск не извлекается, но событие где-то запоминается, и после разблокировки лоток начинает отрабатывать два раза.
Глюк прекращается, если убить udisks, либо если перед извлечением диска послать ему команду остановки sdparm -C stop /dev/sr0
Увы, с этим ничего поделать не могу – это какой-то глюк множественных событий ядра в процессе распознавания диска приводом, а отлаживать ядро я не умею. Повторное “проглатывание” это только одно из его следствий, которое проявляется не везде и не всегда, и только при активном udisks. Другое, которое случается гораздо чаще – уже смонтированное устройство с диском неожиданно пересоздаётся ядром в процессе продолжения “распознавания” либо запоздалой реакции на него, и снова отмонтируется без каких-либо сообщений в логах.

Теперь о правилах UDEV – если вы НЕ используете программ, которые ищут привод на устройстве /dev/cdrom или /dev/dvd, эти симлинки вам не требуются. Больше ничем они точно не помогут.
Что касается не назначения устройству группы “optical”, то если вы не ухитрились добавить пользователя в группу “disk”, или не запускаете консольную команду eject от рута, то она никак не сможет извлечь устройство, на которое текущий пользователь не имеет никаких прав. Если вы используете какие-то графические инструменты для извлечения диска, то они скорей всего действуют через udisks, который запускает eject от рута, и ему эта группа не требуется.
Так что если вы удалили правило, попробуйте для надёжности перезагрузиться, и вместо шаманских действий просто посмотрите права на устройство:
ls -l /dev/sr0
Если у sr0 будет группа “disk”, то при правах 660 вы никак не сможете им управлять командой eject от пользователя.
Да, после обновления udev я добавил пользователя в ‘disk’ - результатом чего и была работа eject.
Затем так-же ухитрился удалить пользователя из этой группы. Воссоздал симлинки. Проверил - дисковод не циклит.
Спасибо за пояснения.
 
Зарегистрироваться или войдите чтобы оставить сообщение.