LINUX.ORG.RU
ФорумAdmin

зависимости в UpStart

 ,


0

1

Всех приветствую.

Надо в одной старинной системе на базе ubuntu 14.04 LTS запустить сервис. Сервис работает с оборудованием через usb-can. В этой части все отлично. Но есть проблема в том что при включении питания (а оно регулярно прыгает), сервис пытается стартовать раньше чем подгрузиться драйвер usb-can из-за чего, очевидно, сервис валится и опять рестартится. И так может произойти до 10 раз. Потом уже подхватывается драйвер, создается файл устройства в /dev и все работает.

Внимание вопрос: как сделать так чтобы сервис стартовал только после успешной загрузки драйвера? Ну или как вариант, появления файла устройства.

Чтение манов и гугла ни к чему не привели.

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

в нем загрузку нужного модуля.

Модуль грузится автоматом.

Решение так себе.

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

Сам спросил сам и отвечу. Есть два варианта: Upstart-udev-bridge События от системы udev. И upstart-file-bridge События от файловой системы

Первый более правильный. Событие о появлении устройства или интерфейса. Но Ман настолько убог, что совершенно неясно как сделать событие на появление любого устройства кроме сетевого интерфейса.

Второй костыльный - прицепится к событию создания файла устройства. Но это костыль цепляется только к обычным файлам. К нодам не цепляется никак. Поэтому в подпорку к этому костыли пришлось пришить ещё один который при создании файла устройства создавал рядом обычный файл. А уже к событию создания этого файла цеплялся старт сервиса.

Надеюсь, это я неосилил, потому что если это так и задумывалось то это фейл.

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

все очень просто, upstart правило пишешь на сигнал: start on myservice-run

в udev правило на: ACTION==«add» KERNEL==«device» RUN+=«/sbin/initctl emit myservice-run»

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