Обсудим создание новой системы - Tempware

Используем пакеты, расширяющие возможности оборудования
Аватара пользователя
alllexx88
Сообщения: 23
Зарегистрирован: 13 авг 2015, 17:06

Сообщение alllexx88 » 05 окт 2015, 16:13

Zyxmon писал(а):Источник цитаты поиск захардкоденных путей часто отнимает много времени

Если хорошо шарить в регулярных выражениях, это не так и сложно. Основной вопрос, который у меня стоял, --- это захардкоденые пути в патчах, скриптах и конфигах. Как их сделать переопределяемыми? Я нашел, как мне кажется, изящный выход: заменил во всех источниках (патчах, конфигах, скриптах и т.д.) захардкоденый '/opt' на ключевое слово %OPTWARE_TARGET_PREFIX%, а далее заменил во всех мейкфайлах команды 'install' и 'patch' скриптами-обертками вокруг этих команд, которые заменяют ключевое слово на реальный префикс:
https://github.com/alllexx88/Optware-ng ... install.sh
https://github.com/alllexx88/Optware-ng ... s/patch.sh

Самые большие проблемы оказались с install: как я ни усложнял регулярные выражения, все равно позаменялось немало лишнего, но вроде уже все отловил (тьфу-тьфу).

Да, еще, конечно, пришлось отловить при помощи тех же регулярных выражений команды копирования из папки с источниками (sources) --- их тоже заменил на install.sh, чтобы префикс вставлен был вместо %OPTWARE_TARGET_PREFIX%

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1264
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 05 окт 2015, 16:18

Dr.Acid писал(а):Источник цитаты Вечером могу подкинуть такую - написана на Лазарусе.

Полный автомат невозможен.
Спасибо - не надо. В QNAP поняли, что проект Optware - мертв. Они исключили Optware из списка официальных пакетов и подправили свои пакеты, которые зависели от Optware. Теперь на QNAP папка /opt "свободна". Вместо Qnapware.armv5 и Qnapware.x86 буду собирать соответсвующие версии Entware. В планах создание единого набора скриптов с переключением/выбором архитектуры и прочих параметров (Entware.mips, Entware.armv5, Entware.armv7, Enware.x86 и т.д.).

Аватара пользователя
Zyxmon
Администратор
Сообщения: 1264
Зарегистрирован: 09 авг 2015, 14:33

Сообщение Zyxmon » 05 окт 2015, 16:20

alllexx88 писал(а):Источник цитаты это захардкоденые пути в патчах, скриптах и конфигах.

А Entware в текущем состоянии это патчи патчей :twisted:
Я от этого собираюсь отойти. Частично это сделали (фид oldports).

PS Создание патчей для патчей автоматизировано и не сложно. Но читаемость ....
Для примера - https://github.com/Entware/entware/blob ... path.patch

Аватара пользователя
Александр Рыжов
Сообщения: 307
Зарегистрирован: 12 авг 2015, 13:14
Откуда: Смоленск

Сообщение Александр Рыжов » 05 окт 2015, 17:09

Dr.Acid писал(а):Источник цитаты
Александр Рыжов писал(а):Источник цитаты Можно ли привести примеры из огромного числа устройств?
Длинки - точно.
Ну и всякие дешевые TP-LINKи, trendnetы и прочие китайцы.
Перечисленные устройства (точнее, прошивки) не имеют никаких средств для автоматизации монтирования разделов или автозапуска сторонних сервисов после загрузки, следовательно, запуск сторонних сервисов на них — это камерное развлечение до перезагрузки.

Папка /opt в прошивках embedded устройств давно стала признаком возможности использования внешних сервисов, включая всю необходимую скриптовую обвязку.

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

Dr.Acid
Сообщения: 142
Зарегистрирован: 26 авг 2015, 22:46

Сообщение Dr.Acid » 05 окт 2015, 18:34

Александр Рыжов писал(а):Источник цитаты Перечисленные устройства (точнее, прошивки) не имеют никаких средств для автоматизации монтирования разделов или автозапуска сторонних сервисов после загрузки, следовательно, запуск сторонних сервисов на них — это камерное развлечение до перезагрузки.

Ну, с этим я в общем-то и не спорю, хотя... всякое бывает - иногда находят недокументированные возможности для автозапуска(пруф надо искать - помню, с каким-то длинком было связано). Но даже если и так, не забываем, что:
1) Перезагрузка, зачастую, бывает очень редко.
2) Сам по себе "ручной запуск" часто может быть автоматизирован, что сводит запуск системы на таком устройстве, например, к запуску скрипта на ББ. Возможно, со временем появятся и другие варианты(идеи были). Вообще, тема запуска/автозапуска стороннего софта на различных устройствах - это отдельная, очень большая тема(но если есть желание - можем обсудить здесь, я пороюсь в своих записях)
Александр Рыжов писал(а):Источник цитаты Папка /opt в прошивках embedded устройств давно стала признаком возможности использования внешних сервисов, включая всю необходимую скриптовую обвязку.

Ну, как... Вот есть у меня интересный пример - Asus RT-N12. Дело было где-то в апреле-мае 2014 года.
Обновил его идиотскую(на то время) прошивку на свежую - ба, а там и telnet, и симлинк /opt (куда-то в /tmp или /var вроде)
Я быстренько накатал для него скрипт для установки Entware и она ставилась и работала(прямо из RAM)
Вот только скриптов автозапуска я там так и не нашел(может, плохо искал). Тем не менее, с того момента отношу этот роутер к Entware-совместимым(скрипт и всю кухню для запуска могу выложить, только придется подождать - на работе осталась, вместе с девайсом).
Александр Рыжов писал(а):Источник цитаты Поэтому, на мой предвзятый взгляд, вы на пути изобретения чудесного велосипеда, на котором дальше ребута не уедешь.

А нам дальше и не надо - мы потом всё перемонтируем/перезагрузим и дальше полетим! ;)

Аватара пользователя
Александр Рыжов
Сообщения: 307
Зарегистрирован: 12 авг 2015, 13:14
Откуда: Смоленск

Сообщение Александр Рыжов » 05 окт 2015, 19:32

Dr.Acid писал(а):Ну, как... Вот есть у меня интересный пример - Asus RT-N12. Дело было где-то в апреле-мае 2014 года.
Обновил его идиотскую(на то время) прошивку на свежую - ба, а там и telnet, и симлинк /opt (куда-то в /tmp или /var вроде)
Я быстренько накатал для него скрипт для установки Entware и она ставилась и работала(прямо из RAM)
Вот только скриптов автозапуска я там так и не нашел(может, плохо искал).
в RT-N12 USB-порта нет. Зачем всё это счастье без возможности сохранения своих конфигов?

Dr.Acid
Сообщения: 142
Зарегистрирован: 26 авг 2015, 22:46

Сообщение Dr.Acid » 05 окт 2015, 19:45

Александр Рыжов писал(а):Источник цитаты в RT-N12 USB-порта нет. Зачем всё это счастье без возможности сохранения своих конфигов?

М-да... Почему же без возможности сохранения? Да, USB нет(как много где), но Ethernet-то есть! SMB/CIFS, NFS, curlftpfs, davfs2 далее вы продолжите лучше меня. Да, только у первых двух нет проблем - их можно юзать, сразу, сегодня же, но и с остальными можно разобраться - былобы желание.
Вообще, посмотрите повнимательней 2 первых поста этой темы(и там, где про SIRAM).

Кстати, нашел пруф про автозапуск на Длинке (предыдущий мой пост): http://habrahabr.ru/post/133476/ Понимаю, железка древняя, но просто как пример.

Аватара пользователя
Александр Рыжов
Сообщения: 307
Зарегистрирован: 12 авг 2015, 13:14
Откуда: Смоленск

Сообщение Александр Рыжов » 05 окт 2015, 20:25

Dr.Acid писал(а):Почему же без возможности сохранения? Да, USB нет(как много где), но Ethernet-то есть! SMB/CIFS, NFS, curlftpfs, davfs2 далее вы продолжите лучше меня.
И это всё размещать в tmpfs, т.е. в куцей RAM RT-N12?

Код: Выделить всё

$ ldd /opt/bin/curlftpfs  | awk "{print \$3}" | xargs du -hLc | grep total
5.5M    total


После загрузки устройства с 32MB RAM ровно половина будет занята под нужды системы. 16 оставшихся мегабайт ваше всё.

Dr.Acid
Сообщения: 142
Зарегистрирован: 26 авг 2015, 22:46

Сообщение Dr.Acid » 05 окт 2015, 22:01

Александр Рыжов писал(а):Источник цитаты 16 оставшихся мегабайт ваше всё.

Да, чего вполне хватит на пару-тройку простеньких приложений. И это только в том случае, если мы не решим(не сможем) прицепить сетевой диск - тогда уже могут быть доступны терабайты.
В общем случае, схема такая: Сначала куда-нить в /tmp грузятся средства(возможно даже девайсозависимые, хотя не обязательно) для монтирования /tmp/opt куда-нибудь во внешнее хранилище(наиболее привлекательными здесь представляются облака, хотя можно и старый-добрый FTP заюзать). Далее туда уже ставится система(инсталляция), либо запускаются оттуда сервисы уже установленной(повторные запуски). Т.о, никакие настройки, пакеты и т.п. теряться не будут.
На RT-N12 я не прикрутил внешнюю шару просто потому, что не было желания возиться - это была просто проба.
Да и проблемы, конечно же будут(а куда-ж без них ;) ).
В общем, если будет единая унифицированная система(подобно Entware, Optware-ng) с расположением в /tmp/opt - будет мотивация решать все эти проблемы. Сейчас же ситуация такова, что каждый, по сути, городит свой огород(если городит), в итоге эффективность... ну понятно, какая.

Dr.Acid
Сообщения: 142
Зарегистрирован: 26 авг 2015, 22:46

Сообщение Dr.Acid » 05 окт 2015, 22:11

Александр, на самом деле, пока самая острая проблема, с которой я столкнулся в этом деле, связана с использованием curlftpfs и davfs2.
Если кратко, проблема состоит в том, что эти проги не могут работать с файлами, размер которых превышает размер их кэша. Т.е. при чтении(и перед записью) они помещают файл в свой кэш, который, естественно, находится где-либо в файловой системе. А вот, например, у CIFS такой проблемы нет - с сервера можно открыть сколь угодно большой файл(по отношению к размеру доступной RAM) и работать с ним, но для поддержки cifs необходимы модули ядра :(
Вот с такого рода проблемами предстоит столкнуться, работая с роутерами без USB, но все их(или большинство) можно решить, как я понимаю.


Вернуться в «Entware/Qnapware/Optware/Zyxware - обсуждаем репозитории пакетов»

Кто сейчас на конференции

Всего 0 посетителей :: 0 зарегистрированных, 0 скрытых и 0 гостей (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (121) здесь было 18 май 2016, 18:19

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей