Команда /opt/etc/init.d/rc.unslung start вручную запускает все сервисы, установленные через Optware или Entware, — и если после перезагрузки роутера ваши пакеты «молчат», проблема почти всегда кроется именно в связке скрипта rc.unslung и каталога /opt/etc/init.d. Понимание того, как эта связка устроена, избавляет от ручного запуска служб после каждого ребута.

В этой статье разберём назначение каталога /opt/etc/init.d, роль скрипта rc.unslung, соглашения об именовании стартовых файлов и типовые ошибки, из-за которых автозапуск не срабатывает. Материал ориентирован на владельцев роутеров с альтернативными прошивками и на тех, кто ставит пакеты на стоковые прошивки с поддержкой Entware.

Что такое /opt/etc/init.d и зачем он нужен

Каталог /opt/etc/init.d — это аналог системного /etc/init.d из классического Linux, но для пакетов, установленных в окружение Optware или Entware. Роутерная прошивка живёт в собственной корневой файловой системе, а всё стороннее ПО размещается в /opt, чтобы не конфликтовать с прошивкой и переживать её обновления.

Каждый пакет, которому нужен автозапуск (например, Dropbear, Transmission, dnsmasq из Entware), кладёт сюда свой стартовый скрипт. Скрипт обязан уметь как минимум два аргумента: start и stop. Именно через них система управляет службой.

  • 📁 /opt/etc/init.d/ — каталог со стартовыми скриптами пакетов.
  • 🔧 Каждый скрипт принимает аргументы start, stop, обычно также restart.
  • 🔑 Файлы должны иметь права на исполнение, иначе они будут проигнорированы.

Роль скрипта rc.unslung

rc.unslung — это «дирижёр», который перебирает все исполняемые файлы в /opt/etc/init.d и вызывает их с нужным аргументом. Название досталось в наследство от прошивки Unslung для сетевого хранилища Linksys NSLU2 — именно там зародилась экосистема Optware, и имя скрипта сохранилось по традиции, хотя само устройство давно история.

Логика работы проста: при вызове rc.unslung start скрипт находит в каталоге файлы, соответствующие шаблону S*, и запускает их по очереди в алфавитном порядке. При rc.unslung stop аналогично обрабатываются файлы K* — они отвечают за корректную остановку служб. Такой же принцип использует классический SysV init.

💡

rc.unslung не запускает службы сам по себе — он лишь вызывает по очереди исполняемые скрипты S* и K* из /opt/etc/init.d. Если скрипта нет или он не исполняемый, служба не стартует.