Самописный сервис OpenRC не стартует (Решено)

В общем и целом. Написал собственный простенький RC сервис, который будет монтировать каталог расшареный через samba. Писал по примеру других системных сервисов. Добавил сервис в автозапуск через rc-update, но при перезапуске ничего не работает. Главное же, что если включить вручную (rc-service start), то все подключается и монти руется куда надо.

Вот внутрянка сервиса.

#!/sbin/openrc-run

depend() {
need net
}
start() {
mount.cifs //192.168.0.10/dirs /home/User/dirs -o user=User,pass=Pass,rw,uid=1000,gid=1000,file_mode=0660,dir_mode=0770
}

stop() {
/bin/umount //192.168.0.10/dirs
}

Пробовал как такой вариант, так и вариант, где сами команды распиханы по sh файлам, а сервис запускает эти самые файлы. Результат идентичен.

Скорее всего, здесь речь идёт о загрузке операционной системы?

Возможно, что на этапе загрузки операционной системы и выполнении стартового open-rc-сценария, данного пути ещё не существует (на каком уровне работает init-сценарий, как вариант переместить его на 5), поэтому и:

Гляньте в системный лог, может там будет подсказка?

Посмотрел логи. Сервис пытается запуститься, но при этом NetworkManager не запустился до конца. Пропилсал after net NetworkManager, но результат остался таким же. Сервис почему то игнорирует эту строчку и все равно запускается перед или во время старта NetworkManager.

depend() {
need NetworkManager
}

Может так?

И так пробовал.
Было

depend() {
need net NetworkManager
after net NetworkManager

}

Не помогло.

net - такого сервиса и нет скорее всего, раз “NetworkManager” используется.

Сам таким вопросом не задавался, надо будет попробовать на досуге.

Как вариант, можно попробовать “AutoFS” настроить, там монтирование будет осуществляться при обращении к ресурсу и наверняка к тому времени сеть уже поднимется. Или все же с уровнями запуска “поиграться”.

Хмм, работает же:

# cat /var/log/messages | grep -i z_mymount

May 12 17:08:23 calculate /etc/init.d/z_mymount[2398]: WARNING: z_mymount will start when NetworkManager has started
# /etc/init.d/z_mymount status
 * status: started
# ls -l /home/nickm/netscan
итого 0
drwxrwx--- 2 nickm guest 0 мая  6 09:51 nickm
# cat /etc/init.d/z_mymount
#!/sbin/openrc-run

depend() {
need NetworkManager
}

start() {
mount.cifs //192.168.1.1/netscan /home/nickm/netscan -o user=nickm,pass=nickm,rw,uid=1000,gid=1000,file_mode=0660,dir_mode=0770
}

stop() {
/bin/umount //192.168.1.1/netscan

Попробовал это, но результата нет. В логах RC по прежнему выводит недоступность сети.

samba-mount-1-work        |mount error(101): Network is unreachable
samba-mount-1-work        |Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
samba-mount-1-work        | * ERROR: samba-mount-1-work failed to start

В какой системе Вы пытаетесь настроить? Любопытно то, что формат лога у Вас другой.

6.12.16-calculate
На оболочке KDE.

Спасибо вам за ответа, но я попробовал добавить в зависимости

depend() {
need NetworkManager dns netmount
}

и на подстраховку добавил такую штуку.

start_pre(){
/bin/sh -c 'until ping -c1 192.168.1.10; do sleep 1; done;'
}

и это помогло. Не знаю что именно из этого, но теперь папка монтируется.

Как раз на “CLD” и тестировал;

Много зависимостей, это наверное не есть хорошо, но раз работает, то и ладушки.

Чуть позже разберусь, что из этого можно убрать, главное работает.

Не претенддую на правильность, но предлагаю рассмотреть запуск пользовательских скриптов через rc.local script-you.start script-you.stop Выгода в том, что понятнее и гарантировано работает.