• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Обсуждение MT7688AN HLK-7688A

pvvx

Активный участник сообщества
Немного уточню:
Такое думаете сработает? :)
COPY E:\NanoPi\NanoPi-R1\images-for-eflasher/* ~/friendlywrt-h3/scripts/sd-fuse
 

Алексей.

Active member
Я не могу понять вопроса?
Сначала Вы говорите что Вам известно что есть инструкция для копирования файлов и директорий в контейнер, а потом спрашиваете будет ли она работать.
А как иначе должно быть?
У меня есть уже собранные пакеты, при сборке образа, копирую и устанавливаю их, и всё это происходит однажды, когда выполняется docker build
 

pvvx

Активный участник сообщества
И самый часто встречаемый пример:
В wind-е скачан файл friendlywrt-h3-20191230.tar он 6 GB.
Иметь его копию в контейнере не хочу, а хочу развернуть:
tar xvf ./extdisk/friendlywrt-h3-20191230.tar
 

Алексей.

Active member
Вопрос в "от куда копируется".
Локальные файлы копируются в контейнер :)
Иметь его копию в контейнере не хочу, а хочу развернуть:
tar xvf ./extdisk/friendlywrt-h3-20191230.tar
Или локально развернуть и копировать при сборке,
Или копировать в контейнер, развернуть и удалить архив
 

pvvx

Активный участник сообщества
Локальные файлы копируются в контейнер :)
А где локаль в Win Docker? Где-то в глубине x:\.....\DockerDesktop\DockerDesktop.vhdx :)
Или локально развернуть и копировать при сборке,
Плодить Overhead? Каким образом я разверну в Win файловую структуру для linux?
Или копировать в контейнер, развернуть и удалить архив
Плодить Overhead?
 

pvvx

Активный участник сообщества
В основном то все вопросы по стыку разных оп.систем. Скоро они совсем сольются. Я счас именно про кучу в которой windows docker и все редакторы и прочее. А в докер-контейнере ubuntu сборщик image и ipk.
 

pvvx

Активный участник сообщества
Как я понял в docker не доделано подключение внешних дисков/разделов windows на этапе build. От этого и все Overhead. С внедрением скрипта и выходит всего два этапа для создания docker image. Первый build, потом run c опцией "-v" и commit.
Как упростить?
 

pvvx

Активный участник сообщества
Почему docker – тут и описывать нечего:
Чтобы иметь десяток готовых сред для сборки под рукой и чтобы их можно было передать работникам, которые не в силах освоить что-то более части своего заученного...
Всё инсталлировать в одной ОС уже не лезет. В Win уже не хватает environment :) И сразу всё не всегда нужно, а заново устанавливать каждый раз влом, да и помнить всё надо как оно там жило. А с docker выбрал нужное и вперед. Да и процесс установки с docker уже катит для Ардуинщика. Не понятно почему Arduino для “домохозяинов” досих пор не в контейнере…
 

pvvx

Активный участник сообщества
Текущую задачу MT7688 вполне закроет, даже с запасом. Для того, чтобы сформировать чёткое понимание о сфере применения NanoPi надо почитать их спецификации и документацию по МК. Займусь этим на досуге.
Ещё раз про fork() / vfork()

Omega2, OpenWRT : 758.9 / 733.6 us
NanoPi-R1, H3, FriendlyWrt, 1.008GHz : 540.3 / 472.8 us
NanoPi-NEO-Core, H5, FriendlyWrt, Ubuntu 16.04.6 LTS 4.14.0 : 328.8 / 314.3 us
Ryzen7 1700, docker 4 ядра, Ubuntu 18.04 : 172.5 / 83.5 us
mc200(MIPS 4KEc), очень старый OpenWRT, 200MHz : 2954.9 / 548.6 us
* Замеры зависят от загрузки системы и многих других параметров, но для сравнения достаточно.

По производительности vfork() близко к запуску и простого треда...
и это сказывается на такой параметр как отзывчивость системы в целом, т.е. основной параметр real-time системы.
Это примерно то, что внешний запрос по сети быстрее чем это время не обрабатывается...
 

pvvx

Активный участник сообщества
760 микросекунд на создание процесса на не самом производительном CPU - кошмар ?
Вы посмотрите сколько времени уходит на 1 системный вызов или на переключение контекста во взрослом CPU.
Если вы создает процессы за микросекунды - вы явно что -то делаете не так.
Во взрослом x86 CPU в 10 раз быстрее в отличии от самого крутого взрослого arm при тех-же ГГц. Видимо что-то в самом коде ядра... Об этом говорит и то, что старое ядро делало vfork() и создание треда во много раз быстрее. Наверняка очередная не поддержка имеющегося аппаратного наслоения и MMU...

Vfork() по истории был создан как оптимизация вызова в том-же стеке другого процесса. В новых версиях ядра могли и выкинуть “оптимизацию” как раздельную функцию vfork(), оставив fork() с опцией – без копирования части контекста и создания нового стека…
 

pvvx

Активный участник сообщества
А так нельзя делать. Делают умнее, но для этого надо думать.
Вот тут вы пишите обратное:
"свои приложения тесно интегрированные в итоговую систему" - тупиковый путь! У нас на работе так сделано и тоже openWRT. Большие трудности в сопровождении. Пакетная система при длительном сопровождении продукта оптимальнее, не зря ее придумали.
Впрочем каждый вправе пройти свой путь по граблям.
Межпакетное взаимодействие - это сотни fork() либо тысячи переключений контекста на одну типичную внешнюю транзакцию...
 

pvvx

Активный участник сообщества
Как минимальными ресурсами сделать доступным устройство c современной OpenWRT в местной интрасети по имени для Windows?

Т.е. нужен демон NetBios и LLMRN. Я давно писал такой для IPv4, но пока не ведаю что там надо для IPv6 и как его проще уведомлять в СИ о смене IP в интрасети.
Ещё надотъ прибавить урезанный mDNS...
Уверен что такое давно есть и готовое. Кто чего может подсказать о том где это утянуть?

PS: Самбу не предлагать – это ненужный и глючный монстр для простого устройства.
 

Stari40K

New member
Все протоколы работают по IP, но разных портах. В случае с VPN имеем виртуальный IP со всеми портами... Дальше сами разберетесь.
Смешно. Это из серии.
Я: -Вы вступили в какашку. вот там, правой ногой.
Вы: - там за углом есть кран, разберётесь.
 

pvvx

Активный участник сообщества
Смешно. Это из серии.
Я: -Вы вступили в какашку. вот там, правой ногой.
Вы: - там за углом есть кран, разберётесь.
И чего тут смешного? Предлагаете мне тут описывать всю систему построения интернет с самых основ?
 

pvvx

Активный участник сообщества
Когда соединитесь по VPN то и ваш “сервис dns”, а попросту запросы-ответы демона который работает на определенном порту, будут переброшены через VPN, если специально не запретить или не создать свою карту route.

DNS не решает блокировок c https://git.openwrt.org/. Как и не решает блокировок с https://www.adafruit.com/ и прочими. NDS провайдера отдает правильные IP, но соединения нет.
В первом случае http/https запрос остается без ответа именно чтобы вы помучались при сборке OpenWRT. Во втором случае другие финтифлюшки, более экзотические… Все варианты экзотики блокировок я изучать и описывать тут не собираюсь.
 

pvvx

Активный участник сообщества
Смешно. Это из серии.
Я: -Вы вступили в какашку. вот там, правой ногой.
Вы: - там за углом есть кран, разберётесь.
В итого мне смешно – какого фигу ваше сообщение о каких-то “преобразует имя в ип”. Вас культурно послали, чтобы не смеяться над вами.
 

pvvx

Активный участник сообщества
Так-же, если вас особо интересует почему не dns, то обратитесь на РКН – описанные ресурсы не числятся в заблокированных. По dns блокируется только порнография и подобное, для которых вы и ищете обход. Да и “советы” от вымирающего и не осознавшего этого представителя окраины как-то не особо нужны. Они всегда не в тему, да с ошибками в самой сути. :p :)
 

pvvx

Активный участник сообщества
Для сборки OpenWRT, если используется роутер типа с прошивкой от Padavan можно поступить так:
Вписываем какой бесплатный VPN:
1584926846970.png

И в “Выполнить скрипт после подключения/отключения к VPN-серверу:” дописываем:
Bash:
func_ipup()
{
#  route add -net $peer_lan netmask $peer_msk gw $IPREMOTE dev $IFNAME
route add 8.8.8.8 dev $IFNAME
route add 8.8.4.4 dev $IFNAME
# https://git.openwrt.org/
route add -net 46.101.128.0/17 dev $IFNAME
# https://www.adafruit.com/
route add -net 104.20.0.0/16 dev $IFNAME
}
func_ipdown()
{
#  route del -net $peer_lan netmask $peer_msk gw $IPREMOTE dev $IFNAME
route del 8.8.8.8 dev $IFNAME
route del 8.8.4.4 dev $IFNAME
# https://git.openwrt.org/
route del -net 46.101.128.0/17 dev $IFNAME
# https://www.adafruit.com/
route del -net 104.20.0.0/16 dev $IFNAME
}
Если у вас провайдер блокирует git.openwrt.org через DNS, а не пул 46.101.128.0/17, то строки route ... -net 46.101.128.0/17 можно закомментировать для более быстрого трафика к нему (не через тормозной бесплатный VPN)...
И в настройке WAN изменить DNS:
1584927234494.png
 
Сверху Снизу