Jump to content
  • 0

Root доступ к Keenetic Air (KN-1611)


typedef

Question

Всем привет!

Подскажите плз. возможно ли на Keenetic Air (KN-1611) получить полный доступ. Через telnet\ssh у меня получилось  попасть только в интерфейс CLI пользователем admin.

Link to comment
Share on other sites

Recommended Posts

  • 0
11 час назад, typedef сказал:

Они не запускаются потому что без флага на запуск. Видимо где то в makefile надо делать chmod +x

Либо в Makefile, либо просто на файловой системе руками.

Link to comment
Share on other sites

  • 0
51 minutes ago, sergeyk said:

Либо в Makefile, либо просто на файловой системе руками.

с этим вчера разобрался, добавил пару строк chmod в Makefile
Но вот скрипт /opt/etc/initrc автоматом не стартует
Руками потом запускаю все ок, а сам не хочет

Link to comment
Share on other sites

  • 0
31 minutes ago, typedef said:

с этим вчера разобрался, добавил пару строк chmod в Makefile
Но вот скрипт /opt/etc/initrc автоматом не стартует
Руками потом запускаю все ок, а сам не хочет

похоже на то что opkg толком не встал (или я что то не то сделал)

/ # find / -name *opkg*
/usr/sbin/opkg_led_ctl
/ #

поэтому, думаю, ничего из этой статьи не работает
https://github.com/ndmsystems/packages/wiki/Opkg-Component#hook-scripts

Link to comment
Share on other sites

  • 0
2 minutes ago, sergeyk said:

Это команда для CLI, а не shell.

а-а-а
ну команда сработала

(config)> opkg disk temp:/
Opkg::Manager: Disk is set to: temp:/.

а что с этим дальше делать?

Link to comment
Share on other sites

  • 0
2 hours ago, sergeyk said:

Настройте фиктивный диск для Opkg

opkg disk temp:/

 

после этого на /opt, который раньше был пустой появляется куча файлов
Я туда опять складываю свои скрипты, но после ребута скрипты удаляются

короче, никак мне не понять как решить казалось бы простую задачу, запуска скрипта при старте роутера :(

Link to comment
Share on other sites

  • 0
On 2/4/2022 at 12:57 PM, sergeyk said:

Настройте фиктивный диск для Opkg

opkg disk temp:/

 

как я понял этой командой мы монтируем /tmp на /opt
все классно, но при рестарте все его содержимое стирается

А какие еще варианты есть кроме "temp:/", можно ли примонтировать какую-нибудь ветку от rootfs, например /etc ?

Link to comment
Share on other sites

  • 0
2 минуты назад, typedef сказал:

как я понял этой командой мы монтируем /tmp на /opt
все классно, но при рестарте все его содержимое стирается

А какие еще варианты есть кроме "temp:/", можно ли примонтировать какую-нибудь ветку от rootfs, например /etc ?

Я посмотрел код, похоже, это решение на устройстве без USB работать не будет.
Но хуки, описанные тут https://github.com/ndmsystems/packages/wiki/Opkg-Component#hook-scripts, работать должны, за исключением initrc.

Link to comment
Share on other sites

  • 0
9 hours ago, sergeyk said:

Я посмотрел код, похоже, это решение на устройстве без USB работать не будет.
Но хуки, описанные тут https://github.com/ndmsystems/packages/wiki/Opkg-Component#hook-scripts, работать должны, за исключением initrc.

спасибо, жаль.
Просто при монтировании на /tmp смысла от этих хуков нет, поскольку никаких скриптов на момент монтирования там нет. Поэтому я и спрашивал, возможно ли смонтировать /opt на какую то ветку из rootfs. Тогда я бы смог подготовить все скрипты и нужные конфиги в прошивке. 

Я пробовал в base_files складывать скрипты на /tmp - понятно бессмысленно и на /opt. В последнем случае, если не использовать opkg disk XXX, то скрипты на /opt лежат, но initrc автоматом не исполняется, если вызывать opkg disk, то моя папка /opt из прошивки затирается.

Link to comment
Share on other sites

  • 0
43 минуты назад, typedef сказал:

Я пробовал в base_files складывать скрипты на /tmp - понятно бессмысленно и на /opt. В последнем случае, если не использовать opkg disk XXX, то скрипты на /opt лежат, но initrc автоматом не исполняется, если вызывать opkg disk, то моя папка /opt из прошивки затирается.

Рабочих хуков для вашей задачи должно быть достаточно. Используйте ndm/ifcreated.d, ndm/ifipchanged.d или ndm/ifstatechanged.d для Bridge0.

Link to comment
Share on other sites

  • 0
2 hours ago, sergeyk said:

Рабочих хуков для вашей задачи должно быть достаточно. Используйте ndm/ifcreated.d, ndm/ifipchanged.d или ndm/ifstatechanged.d для Bridge0.

так а куда мне скрипт складывать в base_files?
после "opkg disk temp:/" /op смонтирован на /tmp

я вижу такой порядок действий (может ошибаюсь)
1. запускаю на роутере opkg disk temp:/
    /opt -> /tmp
2. скрипт для запуска демона avahi-daemon складываю в package/base_files/files/XXX
3. собираю прошивку
4. после ребута роутера скрипт, подготовленный на шаге 2. оказывается в /opt/XXX
5. срабатывает хук и скрипт запускается

так вот вся моя проблема в шаге 4.
Как собрать образ так, чтобы скрипт был в /opt ?

Link to comment
Share on other sites

  • 0
8 минут назад, typedef сказал:

Как собрать образ так, чтобы скрипт был в /opt ?

Ничего монтировать не надо.

Создавайте

keenetic-sdk/files/

В него кладите нужные каталоги и скрипты, например

keenetic-sdk/files/opt/etc/ndm/ifcreated.d/01-on_bridge0_created.sh

с атрибутом executable и обрабатывайте событие при $id, равном Bridge0.

Link to comment
Share on other sites

  • 0
41 minutes ago, sergeyk said:

Ничего монтировать не надо.

Создавайте

keenetic-sdk/files/

В него кладите нужные каталоги и скрипты, например

keenetic-sdk/files/opt/etc/ndm/ifcreated.d/01-on_bridge0_created.sh

с атрибутом executable и обрабатывайте событие при $id, равном Bridge0.

так я с этого и начинал!!!
Но, после "opkg disk temp:/" все мои скрипты исчезают, так как на /opt монтируется /tmp
А если без "opkg disk temp:/", то да, мои скрипты лежат в /opt, но автоматический запуск (хуки) не отрабатывают

Link to comment
Share on other sites

  • 0
46 minutes ago, sergeyk said:

Ничего монтировать не надо.

Создавайте

keenetic-sdk/files/

только сейчас обратил внимание 

keenetic-sdk/files

а не 

keenetic-sdk/package/base-files/files

есть разница?

Link to comment
Share on other sites

  • 0
31 минуту назад, typedef сказал:

есть разница?

Нет, конечно. Это просто два разных способа скопировать файлы на rootfs.

Я создал следующие файлы

files/
files/opt
files/opt/etc
files/opt/etc/ndm
files/opt/etc/ndm/ifstatechanged.d
files/opt/etc/ndm/ifstatechanged.d/01-test.sh
files/opt/etc/ndm/ifipchanged.d
files/opt/etc/ndm/ifipchanged.d/01-test.sh
files/opt/etc/ndm/ifcreated.d
files/opt/etc/ndm/ifcreated.d/01-test.sh
files/opt/bin

files/opt/bin это абсолютная ссылка на /bin.

Файл 01-test.sh содержит

#!/bin/ash
logger "$0 $id"

При старте системы в журнале вижу

...
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifcreated.d/01-test.sh FastEthernet0/Vlan1 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh FastEthernet0/Vlan1 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh FastEthernet0/Vlan1 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh FastEthernet0/Vlan2 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifcreated.d/01-test.sh FastEthernet0/Vlan2 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh FastEthernet0/Vlan2 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh FastEthernet0/Vlan2 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh FastEthernet0/Vlan3 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifcreated.d/01-test.sh FastEthernet0/Vlan3 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh FastEthernet0/Vlan3 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh FastEthernet0/Vlan3 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh WifiMaster0 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh WifiMaster0/AccessPoint0 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh WifiMaster0/AccessPoint0 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh WifiMaster1 
[I] Jan  1 03:00:26 kernel: br0: port 4(ra4.1) entered blocking state
[I] Jan  1 03:00:26 kernel: br0: port 4(ra4.1) entered disabled state
[I] Jan  1 03:00:26 kernel: device ra4.1 entered promiscuous mode
[I] Jan  1 03:00:26 kernel: device ra4 entered promiscuous mode
[I] Jan  1 03:00:26 kernel: br0: port 4(ra4.1) entered blocking state
[I] Jan  1 03:00:26 kernel: br0: port 4(ra4.1) entered forwarding state
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh WifiMaster1/AccessPoint0 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh WifiMaster1/AccessPoint0 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh Bridge0 
[I] Jan  1 03:00:26 root: /opt/etc/ndm/ifstatechanged.d/01-test.sh Bridge0
...

 

Link to comment
Share on other sites

  • 0
1 hour ago, sergeyk said:

Нет, конечно. Это просто два разных способа скопировать файлы на rootfs.

Я создал следующие файлы

files/
files/opt
files/opt/etc
files/opt/etc/ndm
files/opt/etc/ndm/ifstatechanged.d
files/opt/etc/ndm/ifstatechanged.d/01-test.sh
files/opt/etc/ndm/ifipchanged.d
files/opt/etc/ndm/ifipchanged.d/01-test.sh
files/opt/etc/ndm/ifcreated.d
files/opt/etc/ndm/ifcreated.d/01-test.sh
files/opt/bin

files/opt/bin это абсолютная ссылка на /bin.

Файл 01-test.sh содержит

#!/bin/ash
logger "$0 $id"

 

а что у Вас в настройках opkg ?
Какой Driver и что за модель роутера?

 

image.thumb.png.4c1642221389ad329fd9dabd2e0d1526.png

Edited by typedef
Link to comment
Share on other sites

  • 0
24 минуты назад, typedef сказал:

а что у Вас в настройках opkg ?

Пусто.

25 минут назад, typedef сказал:

Какой Driver

Не понял вопроса.

25 минут назад, typedef сказал:

и что за модель роутера?

KN-1610.

Link to comment
Share on other sites

  • 0
2 hours ago, sergeyk said:

Пусто.

Не понял вопроса.

KN-1610.

ага, я когда раньше такое пробовал, то остановился на том, что не вызываются initrc и init.d/*
Но эти хуки вызываются.
Но у меня опять что то не все ОК

сделал три хука:
/opt/etc/ndm/ifcreated.d/01-on_ifcreated.sh
/opt/etc/ndm/ifipchanged.d/01-on_ifipchanged.sh
/opt/etc/ndm/ifstatechanged.d/01-on_ifstatechanged.sh

вида 

#!/bin/ash

logger "$0 $id"


 но в логе что то странное
 

Feb 6 19:00:31 ndm
Network::Interface::Switch: "FastEthernet0/1": switch link down at port 1.
Feb 6 19:00:31 ndm
Process: system failed [0xcffd0a8a], "/opt/bin/ash" executable not found.
Feb 6 19:00:31 ndm
Process: unable to create and initialize "Opkg shell" process.
Feb 6 19:00:31 ndm
Io::Process: "Opkg shell" is broken.
Feb 6 19:00:31 ndm
Opkg::Manager: process /opt/etc/ndm/ifstatechanged.d/01-on_ifstatechanged.sh: failed to start.
Feb 6 19:00:31 ndm
Process: system failed [0xcffd0a8a], "/opt/bin/ash" executable not found.
Feb 6 19:00:31 ndm
Process: unable to create and initialize "Opkg shell" process.
Feb 6 19:00:31 ndm
Io::Process: "Opkg shell" is broken.
Feb 6 19:00:31 ndm
Opkg::Manager: process /opt/etc/ndm/ifstatechanged.d/01-on_ifstatechanged.sh: failed to start.

притом если запускать из терминала
/opt/etc/ndm/ifstatechanged.d/01-on_ifstatechanged.sh
то все ок

Link to comment
Share on other sites

  • 0
3 hours ago, sergeyk said:

Я же написал

 

пардон, просмотрел :(

в общем, поборол я задачу )

1. добавил в \keenetic-sdk\package\base-files\Makefile

ln -s /bin $(1)/opt/bin
chmod +x $(1)/opt/etc/ndm/ifcreated.d/01-on_bridge0_created.sh

2. добавил скрипт /opt/etc/ndm/ifcreated.d/01-on_bridge0_created.sh

#!/bin/ash

logger "$0 $id"

if [ "$id" = "Bridge0" ]; then
  logger "start avahi-daemon"
  avahi-daemon -D -f /opt/etc/avahi/avahi-daemon.conf
fi

ну и все завелось наконец-то.

Огромное спасибо sergeyk за терпение и поддержку!

  • Upvote 4
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...