Плиз, научите правильно ставить софт

Добрый день.
Я понимаю, что вопрос немного не по теме, но все же…
Есть контроллеры, несколько разных. В разных инсталляциях.
Очень часто нужно управлять железками по SSH. Я делаю это через python/paramiko

Проблема в том, что paramiko из коробки отсутствует, необходимо поставить pip и потом paramiko. Стандартный путь - apt install python3-pip и т.д.
Пока все сделаешь -
/dev/root 976M 747M 163M 83% занято. Еще один шаг влево и все, no left space.

Вопрос не столько про SSH|paramiko, сколько про правильную установку сторонних пакетов. Есть ли какой-то гайд?

Памяти свободной полно, но она где-то не там, и мои лапки не позволяют ее использовать в полной мере.

1 Like

И, небольшое пояснение, для чего все это.
У вас прекрасный, великолепный, чудный контроллер! Мне очень нравится с ним работать, к ее работе нет никаких нареканий. Его можно применить для управления любой железкой, у которой есть интерфейс для управления - последовательный 232, 485, TCP-сокет, telnet, ssh или просто сухой контакт, - это мне очень нравится.
Проблема только в костылях, и в велосипедах, которые приходится собирать для управления сторонними устройствами. Поднимал я этот вопрос на выставке весной, к сожалению, никто не дал ответа - как канонично работать с сокетом или последовательным портом в вашей идеологии?
Например, есть проектор, управляемый по TCP/232. Как правильно (по канонам wb-rules) создать к нему модуль, который будет отслеживать его состояние, и отправлять команды?

Подобные темы на форуме имеют ответ - ну, напишите свой скрипт. Да, его можно написать, добавить его в systemd, но в процессе начинаются проблемы из верхнего сообщения. Надо что-то поставить, что-то обновить, а потом раз и память закончилась.

Перечитал свои сообщения еще раз, сообщения в теме Катастрофическая нехватка места в системном разделе , и решил спросить более конкретные вопросы.

  1. Мне нужна поддержка SSH в питоне. Что нужно сделать, чтобы корректно добавить эту поддержку и не сократить место в системном разделе. Или, ставлю node - как сделать так, чтобы осталось место после установки?
  2. Есть ли (будет ли) какой-то интерфейс|api через движок wb-rules, который позволяет работать с последовательными портами/сокетами/ssh
    например, примерно таким образом:
    var port = new Serial(’/dev/ttyMOD1’)
    port.on(‘data’, function (data) {
    // парсинг данных
    publish(’/devices/controls/ttyMOD1/data’, data)
    })
    trackMqtt(topic, function (message) {
    // преобразование сообщения в понятное устройству
    port.write(message)
    })

Обычно рекомендуем после установки дополнительного ПО переносить директорию с файлами пользовательских программ на раздел /mnt/data/, заменяя на старом месте директорию симлинком. Системные файлы не нужно переносить.

Есть ли (будет ли) какой-то интерфейс|api через движок wb-rules, который позволяет работать с последовательными портами/сокетами/ssh

Пока такого механизма нет, в ближайших планах тоже. Это можно делать с помощью отдельной программы/скрипта или команды bash, которую уже вызывать из wb-rules.

Предполагаю, что вашу задачу можно решить, создав собственный образ прошивки контроллера на ПК, а затем его уже заливать в контроллеры. Привожу ссылки на документацию, где описан процесс сборки собственных прошивок:
https://wirenboard.com/wiki/WB_Firmware_Update_Details
https://wirenboard.com/wiki/Сборка_образов_прошивки
https://wirenboard.com/wiki/Как_разрабатывать_ПО_для_Wiren_Board

Я сейчас так и делаю, только демоном в systemd. Скрипт парсит сообщения из порта/ssh и пишет/читает в mqtt-топики, все работает хорошо. Ну, нет, так нет.

Если для wb7/2/64 была бы инструкция, как увеличить системный раздел, хотя бы до 4 ГБ, это было бы просто замечательно. Пусть тестовое, не боевое решение. Щас, к сожалению, времена такие, библиотека на фреймворке погроммистом погоняет.

Да, разработчики осведомлены о проблеме. Обсуждается возможность увеличения раздела rootfs, возможно, он в будущем будет увеличен.

2 Likes

Кстати, солидарен. Прошивка увеличенным корневым разделом была бы крайне актуальна. Не первый ПЛК в котором отводят 1 гиг на корень и этого катастрофически не хватает.

Грубый метод решения проблемы:
Действительно вставляется флешка или разделы после корневого перенарезаются через cfdisk.
Потом создаются два раздела по 1-2 гига, куда в корень копируются /usr и /var. Потом они прописываются в fstab, рекомендую использовать также lazytime опцию, чтобы не изнашивать флеш накопитель. После чего mount -a подгружает новую таблицу разделов. Если забыть скопировать каталоги до их монтирования - будет кирпич(я так закирпичивал, пришлось отправлять на перепрошивку, но это был не вайренборд - его перепрошить можно).

Присоединюсь к страждущим: дефолтная прошивка в домашним разделом например 2гб была бы актуальна как никогда.

Сам ставлю на контроллер Docker и поднимаю микросервисы для проброса MQTT сообщений в бекенд сеть проекта. Хочется сохранять дерево зависимостей, т.е. ставить через apt, а не из бинарей, поэтому в корень.

Если нужны более подробные комментарии, you are welcome. Тема для меня крайне актуальная, прям вот сейчас готовлю тестовую партию контроллеров к деплою.

Тема вопроса актуальна, если она может быть решена в обозримом будущем - здорово сократит количество костылей

Не надо менять геометрию и количество существующих разделов. Это приведет к окирпичиванию контроллера с восстановлением на стенде у производителя.

Я бы назвал это небезопасными действиями, но рабочими. Более правильный путь конечно править fstab самой прошивки. Этот путь остался после общения с контроллерами, где прошивку подредактировать нельзя.

Концептуальная задача из-за которой возникают такие вопросы: это установка большего количества софта в дерево зависимостей apt(он это ставит всё в /usr/bin и /usr/lib), когда контроллер нужно интегрировать в какую-то систему, уже нагруженную софтом и зависимостями.

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.