У меня есть служба, которую я хочу запустить только после того, как udev установит правильные разрешения для файлов устройств.
Это кажется неправильным во время загрузки:
Мой сервис запущен, с /dev/hidraw0
права доступа к файлам еще не установлены.
Моя служба определяется как:
# кошка /lib/systemd/system/turboledz.service
[Ед. изм]
Описание=Сервис Turbo LEDz
После = systemd-udevd.service
[Оказание услуг]
Тип=простой
Пользователь=демон
ExecStart=/usr/bin/turboledzd
KillMode=контрольная группа
[Установить]
WantedBy=многопользовательская.цель
И я вижу его зависимость:
# список-зависимостей systemctl turboledz
turboledz.service
â ââsystem.slice
â ââsysinit.target
✓ ✓ apparmor.service
✓ ✓ dev-hugepages.mount
â ââdev-mqueue.mount
â ââkeyboard-setup.service
â ââkmod-static-nodes.service
â ââplymouth-read-write.service
â ââplymouth-start.service
â ââproc-sys-fs-binfmt_misc.automount
â ââsetvtrgb.service
â ââsys-fs-fuse-connections.mount
â ââsys-kernel-config.mount
â ââsys-kernel-debug.mount
â ââsys-kernel-tracing.mount
â ââsystemd-ask-password-console.path
✓ ✓ systemd-binfmt.service
â ââsystemd-boot-system-token.service
✓ ✓ systemd-hwdb-update.service
â ââsystemd-journal-flush.service
â ââsystemd-journald.service
â ââsystemd-machine-id-commit.service
â ââsystemd-modules-load.service
✓ ✓ systemd-pstore.service
â ââsystemd-random-seed.service
â ââsystemd-sysctl.service
â ââsystemd-sysusers.service
â ââsystemd-timesyncd.service
â ââsystemd-tmpfiles-setup-dev.service
â ââsystemd-tmpfiles-setup.service
â ââsystemd-udev-trigger.service
â ââsystemd-udevd.service
â ââsystemd-update-utmp.service
â ââcryptsetup.target
â ââlocal-fs.target
â â ââ-.mount
â â ââboot-efi.mount
â â ââmnt-farm0.mount
â â ââmnt-farm1.mount
â â ââmnt-farm2.mount
â â ââmnt-farm3.mount
â â ââmnt-farm4.mount
â â ââmnt-farm5.mount
✓ ✓ ✓ ✓ systemd-fsck-root.service
â â ââsystemd-remount-fs.service
✓ ✓ swap.target
â â ââswapfile.swap
▪ ▪ veritysetup.target
О разрешении нужно было позаботиться с помощью этого правила:
# кошка /lib/udev/rules.d/70-turboledz.rules
# Сделать поставщика «Arduino LLC», продукт «Arduino Micro» доступным для пользователей без полномочий root.
# Примечание: BUS 1 — это USB.
ПОДСИСТЕМЫ=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="8037", MODE="0666"
KERNEL=="hidraw*", ATTRS{busnum}=="1", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="8037", MODE="0666"
Обычно это правило правильно устанавливает разрешение, когда я подключаю устройство.
А при загрузке вроде не запускается?
Все ли правила udev запускаются во время загрузки?
ОБНОВИТЬ:
Я вижу, что в конечном итоге правило запускается, так как после загрузки, когда я вхожу в систему, я вижу правильные разрешения.
Похоже, что правило просто применяется к опаздывать на мою службу.
ОПЕРАЦИОННЫЕ СИСТЕМЫ: Убунту 21.10
ЦПУ: i5-11600K
Ядро: Linux i7 5.13.0-22-общий
Система: 248.3-1убунту8