как узнать, создал ли ядро ​​или udev узел устройства?

Есть ли способ узнать, кто создал узел устройства? Если это было udev или ядро?

В конкретном случае у меня есть две веб-камеры. Для них созданы /dev/video0 и /dev/video1 . К сожалению, это не постоянное задание. Теперь я подумал, что это будет иметь место при использовании udev , но когда я создаю правило udev мне кажется, что video0 и video1 уже созданы до того, как udev сможет назначить более постоянный узел, например /dev/videoLogitech .

Я надеюсь получить некоторые предложения относительно того, какой файл журнала или какая команда может помочь мне узнать о том, что здесь происходит.

  • udev для устройства USB и игнорирование других
  • Как rsync-файлы при установке USB-накопителя
  • правила udev не различают
  • Сроки выполнения скриптов с помощью usbmount
  • udev power_supply правила не запускают
  • дебианная хрипова
  • Обновление Debian от Wheezy до Jessie выходит из строя на Amazon EC2
  • Проблемы с копированием больших файлов на USB-накопитель
  • One Solution collect form web for “как узнать, создал ли ядро ​​или udev узел устройства?”

    Если вы хотите проверить порядок действий, используйте:

     udevadm monitor --property 

    делая это, вы получаете список действий. Когда вы добавляете камеру, одна из первых записей, скорее всего, будет выглядеть примерно так:

     KERNEL[110935.814197] add /devices/.../video4linux/video1 (video4linux) ACTION=add DEVNAME=/dev/video1 <<<<---- devname 

    Как отметил @goldilocks :

    К сожалению, если вы используете systemd, то версия udev имеет сложную «постоянную схему именования», которая жестко закодирована в udevd , поэтому вы правы, просто rules.d вещи rules.d можно оставить много тайн.

    Также от man udev для systemd:

    Следующие ключи могут получить назначенные значения:

    NAME Имя, которое будет использоваться для сетевого интерфейса. См. Systemd.link (5) для механизма более высокого уровня для настройки имени интерфейса. Имя узла устройства не может быть изменено udev, могут создаваться только дополнительные символические ссылки.


    Именование и отладка

    Ваш лучший вариант, скорее всего, будет использовать что-то вроде:

     udevadm test $(udevadm info -q path -n video1) 

    Он дает вам «тестовый прогон» в вашем правиле (правилах) и сообщает о любых ошибках.

    После добавления / изменения правила не забудьте перезагрузить:

     udevadm control --reload-rules 

    Когда дело доходит до названия устройств, вы, вероятно, получите что-то вроде:

     NAME="smile2thecamera" ignored, kernel device nodes can not be renamed; please fix it in /etc/udev/rules.d/83-webcam.rules:6 

    Вместо этого вы можете использовать SYMLINK (если этого достаточно), как в:

     KERNEL=="video[0-9]", .... SYMLINK+="video-logitech" 

    Должно дать вам что-то подобное на тест:

     creating link '/dev/video-logitech' to '/dev/video1' creating symlink '/dev/video-logitech' to 'video1' DEVLINKS=.... /dev/video-logitech 
    Interesting Posts
    Linux и Unix - лучшая ОС в мире.