LINUX.ORG.RU

udev: странная проблема, подробности внутри


0

0

Приветствую.

Имеется следующая проблема с udev:
При подключении любого USB устройства в /dev создается соответствующий
файл, но похоже никакие правила из rules.d не выполняются. Подозреваю, что
отсюда растут глюки hal, про которые я некоторое время назад писал
Итак, по порядку

1) до подключения:
---
$ ls -l /dev/sdb*
/usr/bin/ls: /dev/sdb*: No such file or directory
---

2) кусок dmesg при подключении стика:
---
usb-storage: waiting for device to settle before scanning
  Vendor: OTi       Model: Mobile Disk       Rev: 2.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
<snip>
sdb: assuming drive cache: write through
 sdb: sdb1
---

3) соотв. устройства создаются:
---
$ ls -l /dev/sdb*
brw-rw----  1 root disk 8, 16 2006-02-13 13:22 /dev/sdb
brw-rw----  1 root disk 8, 17 2006-02-13 13:22 /dev/sdb1

$ ls -l /sys/block/sdb
-r--r--r--  1 root root 4096 2006-02-13 13:22 dev
lrwxrwxrwx  1 root root    0 2006-02-13 13:22 device -> <link>
drwxr-xr-x  3 root root    0 2006-02-13 13:22 queue/
-r--r--r--  1 root root 4096 2006-02-13 13:28 range
-r--r--r--  1 root root 4096 2006-02-13 13:28 removable
drwxr-xr-x  2 root root    0 2006-02-13 13:22 sdb1/
-r--r--r--  1 root root 4096 2006-02-13 13:28 size
-r--r--r--  1 root root 4096 2006-02-13 13:28 stat
--w-------  1 root root 4096 2006-02-13 13:28 uevent
---
вроде бы в /var/log/message должно появляться сообщение о создании устройства,
его нету

4) далее, udevinfo -q all -n /dev/sdb1 выдает
--
$ udevinfo -q all -n /dev/sdb1
device not found in database
--

5) файлов block@sdb* в /dev/.udev.tdb действительно не существует.
---
$ udevinfo -d | grep block
/block/fd0=/dev/floppy/0
---

6) на данный стик в 10-local.rules есть правило
---
BUS="*", SYSFS{vendor}="OTi", MODE=0660, NAME="%k", SYMLINK="otif"
---
Но толку от нее нет, /dev/otif не создается

7) в конце-концов после выдергивания стика /dev/sdb* исчезают
8) про /dev/sda* udev тоже ничего не знает, хотя это мой SATA-шый диск

udev.conf
---
udev_root="/dev/"
udev_db="/dev/.udev.tdb"
udev_rules="/etc/udev/rules.d"
default_mode="0660"
default_owner="root"
default_group="root"
udev_log="yes"
---

/dev лежит на reiserfs, места на / достаточно
Версии: slackware 10.2, 2.6.15-ck1, udev-064, hotplug-2004_09_23
Любые идеи приветствуются, заранее спасибо.
★★★★

Ответ на: комментарий от arax

На 2.6.13.* были такие же грабли, а там минимальная версия 058. Спасибо за подсказку, попробую обновиться.

phoenix ★★★★
() автор топика
Ответ на: комментарий от arax

Нет, вполне возможно, что там где-нть пробелов не хватает, но пока что хочется решить хотя бы проблему с udevinfo

phoenix ★★★★
() автор топика
Ответ на: комментарий от arax

Обновился до 080, грабли на том же месте. 
Запускаю udevmonitor, вижу
---
UEVENT[1139835086.555625] add@/devices/pci0000:00/0000:00:10.4/usb1/1-2
UEVENT[1139835086.555796] add@/devices/pci0000:00/0000:00:10.4/usb1/1-2/1-2:1.0
UEVENT[1139835086.555885] add@/class/scsi_host/host5
UEVENT[1139835086.555956] add@/class/usb_device/usbdev1.5
UEVENT[1139835091.494373] add@/devices/pci0000:00/0000:00:10.4/usb1/1-2/1-2:1.0/host5/target5:0:0/5:0:0:0

UEVENT[1139835092.572778] add@/block/sdb
UEVENT[1139835092.573008] add@/block/sdb/sdb1
UEVENT[1139835092.573144] add@/class/scsi_device/5:0:0:0
UEVENT[1139835092.573289] add@/class/scsi_generic/sg1
UEVENT[1139835094.621892] remove@/class/scsi_generic/sg1
UEVENT[1139835094.622582] remove@/class/scsi_device/5:0:0:0
UEVENT[1139835094.627483] remove@/block/sdb/sdb1
UEVENT[1139835094.634363] remove@/block/sdb
UEVENT[1139835094.640109] remove@/devices/pci0000:00/0000:00:10.4/usb1/1-2/1-2:1.0/host5/target5:0:0/5:0:0
:0
UEVENT[1139835094.645527] remove@/class/scsi_host/host5
UEVENT[1139835094.651676] remove@/devices/pci0000:00/0000:00:10.4/usb1/1-2/1-2:1.0
UEVENT[1139835094.657528] remove@/class/usb_device/usbdev1.5
UEVENT[1139835094.667419] remove@/devices/pci0000:00/0000:00:10.4/usb1/1-2
---
Устройства, как и раньше, создаются, udevinfo говорит "no record for 'sdb' in database"

phoenix ★★★★
() автор топика

насчет нахождения /dev на reiserfs я промахнулся, все-таки лежит оно на tmpfs, места там достаточно. Куда копать дальше не могу понять.

phoenix ★★★★
() автор топика
Ответ на: комментарий от phoenix

Я ее все-таки поборол :) И не только udev, а еще и automount в KDE

Проблема с udevinfo вылечилась дополнительной компиляцией usb_id и т.п., входящих в состав udev, но по умолчанию не компилируемых. Дальнейшие упражнения с hal, udev и ivman были направлены на работоспособность автомонтирования (http://www.linux.org.ru/jump-message.jsp?msgid=1134336). Не совсем понимаю, в каком месте была проблема, но вылечилось все заменой обработчика в /proc/sys/kernel/hotplug с hotplug на udevsend (формально, даже не на udevsend, а на '' + использование udev_run_hotplugd). Похоже, что при вызове из hotplug, hal не считал вставленный usb-stick за "монтируемый" девайс, о чем мне старательно сообщал ivman, а будучи позванным из udev нормально распознает стик и позволяет ivman (или KDE) его замонтировать.

Сейчас все работает на: 2.6.15-ck1, hal 0.5.6, dbus 0.60, KDE 3.5.1

Вместо послесловия: слака и чуть-чуть кривые руки... :)

phoenix ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.