PROMETHEUS | [firmware] Скрипт для компиляции прошивки от Padavan и её модификации



Реп: (1387)
PROMETHEUS

Прикрепленное изображение


Внимание!
• Скрипт никак не влияет на то, собирается прошивка или нет (за исключением устаревших конфигов сборки, их актуальность отслеживается авторами). Влияет только версия исходного кода и зависимости (установленные пакеты). Если у вас что-то не собралось, вам нужно проверить целостность исходников и установленные пакеты.
• Все заслуги по созданию прошивки относятся исключительно к andy.padavan и сооавторам, мы занимаемся только скриптом, патчами и портированием.
Условия распространения скрипта Prometheus и прошивки:
Нельзя распространять готовые сборки для устройств фирм отличных от ASUS;
• Нельзя использовать скрипт для сборки прошивки с проприетарными модулями;
• Категорически запрещено распространять моды, патчи и части кода мешающие вышеперечисленным условиям.

Используйте образы виртуальных машин по оф. ссылкам или дистрибутив ранее проверенный на сборку. На Ubuntu 18 может не собираться.
FAQ
У меня не собирается прошивка, что делать?
В любом случае необходимо скопировать или заскринить и выложить (под спойлер) кусок лога, который вриыодится после неудачной компиляции.
Я собрал прошивку, но забыл добавить скины/модули
Вы можете добавить их после компиляции и повторить процедуру снова,. Скрипт запросит у вас подтверждения экспериментальной компиляции прошивки, если вы ответите положительно, пересоберутся только недостающие/обновлённые модули, время компиляции снизится до 2-5 % от полной.
Кагда необходимо собирать TOOLCHAIN?
При первой сборки прошивки TOOLCHAIN будет собран автоматически, пересобирать его нет необходимости вполь до обновления его в репозитории. Это случается крайне редко и я не думаю, что вам стоит об этом беспокоиться.
Где я могу увидеть изменения произошедшие в прошивке?
Вы можете посетить соответствующую страницу, а изменения в скрипте публикуются на официальном сайте скрипта.
Как часто посоветуете обновлять прошивку?
Так часто, как вам хочется, но не чаще чем происходят изменения в репозитории. Не забывайте обновлять скрипты и исходный код.
Как мне обновить скрипты?
Скрипты обновляются автоматически при первом старте и в ручном режиме через меню, обратите внимание на существования двух веток скриптов, стабильную и тестовую. Тестовая предоставляет всегда самый крайний коммит из репозитория прошивки но может быть с ошибками.
Могу я поменять выбранный роутер и не перекачивать исходный код?
Да, можете. Сменить конфиг роутера с сохранением старого конфига или удалить текущий конфиг полностью можно в настройках (команда S).
Включение и выключение модулей прошивки на примере Aria
Как вытащить прошивку на флешку?
Я нашёл ошибку в скрипте, куда обратиться?
Пишите в QMS автору темы.
Как мне поменять или зафиксировать ttl?

Скрины
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение

Основные возможности скрипта
1. Автоматическая сборка с параметрами пользователя;
2. Редактор конфигураций прошивки;
3. Интеграция системы скинов;
4. Автоматическая установка скомпилированной прошивки на роутер;
5. Система создания и восстановления бэккапов всех разделов;
6. Возможность работы с несколькими роутерами поочерёдно;
7. Система защиты от ошибочных действий пользователей;
8. Различные моды от авторов скрипта.
Список дополнительно поддерживаемых конфигов
ASUS RT-AC1200HP, RT-AC51U, RT-AC54U, RT-N11P, RT-N14U, RT-N56U, RT-N56UB1, RT-N65U поддерживаются Xiaomi MI-MINI, MI-NANO, NEXX wt3020a, wt3020h, wt3020f, Belkin N750 DB, Samsung CY-SWR1100, ZyXEL Keenetic devices 4g3, extra, giga3, lite2, lite3, lite3b, omni, omni2, start2, ultra2, viva, TP-Link Archer C20 V1, UnieLec U7621-06, GL-MT300N и GL-MT300A.
А так же в тестовом режиме: ZBT-WG3526, ZBT-WE1326, Xiaomi MI-3C (нет хака SSH), MI-3 (драйвер nand flash нестабилен), MI-3G, D-Link DIR-860L (требует внесения калибровок EEPROM вручную), Mqmaker WITI-512 и WITI-256 (конфиги не распространяются, но скрипты адаптированы).
Установка и запуск
Скрипт запускается на любом Debian подобном Linux дистрибутиве. Он мало весит, шустро работает, соответствует критериям безопасности при прошивке и содержит различные моды и хаки. Время необходимое для компиляции и установки программного обеспечения может занимать от 10 минут на современном компьютере и до 15 часов на наследстве из девяностых. Здраво оценивайте ваше время перед началом операции компиляции, это залог успеха.
Для запуска на вашей основной Linux системе произведите следующие действия:
1. Откройте терминал;
2. Скачайте скрипт, введя команду:
wget -O start.sh http://prometheus.freize.net/script/start-99.sh

3. Введите:
chmod +x start.sh

4. Запустите скрипт и следуйте дальнейшим инструкциям в терминале:
./start.sh

Если у вас установлена 64х разрядная система, рекомендуется воспользоваться VMware Workstation Player:
1. Скачайте и установите VMware Workstation Player;
2. Скачайте и распакуйте образ виртуальной машины PROMETHEUS (Зеркало);
3. Запустите VMware Workstation Player и добавьте распакованный контейнер;
4. Настройте параметры контейнера:
4.1. Настройте количество ядер и оперативной памяти для виртуальной машины;
4.2. Проверьте остальные настройки контейнера.
5. Запустите виртуальную машину.

Если у вас 86х (32х) разрядная система, рекомендуется установить Oracle VM VirtualBox:
1. Скачайте и установите Oracle VM VirtualBox;
2. Скачайте и распакуйте образ виртуальной машины PROMETHEUS (Зеркало);
3. Запустите Oracle VM VirtualBox и добавьте распакованный контейнер;
4. Настройте параметры контейнера:
4.1. Настройте количество ядер и оперативной памяти для виртуальной машины;
4.2. Обязательно переключите сетевое подключение в режим моста.
5. Запустите виртуальную машину.

Установка скрипта PROMETHEUS на ubuntu 22.04
Установка скрипта PROMETHEUS на ubuntu 18.04 - Устарело

Перед первичной прошивкой роутера, необходимо выполнить инициализацию роутера (а для MI-MINI однократно применить хак SSH, пунтк 0). На установленной xrmwrt достаточно включить поддержку SSH в настройках роутера, где логин и пароль будут такие как и на WEB интерфейсе.
После первой инициализации скрипта можно воспользоваться файловым менеджером, набрав команду mc
Для работы скрипта нужен интернет на стадии подготовки к компиляции и вовремя обновления, для взлома и прошивки необходимости в интернете нет.

Крайне рекомендуется идти от первого пункта к последнему (в пределах разумного конечно, обновлять скрипты и сходники после первого запуска не нужно и некоторые пункты могут дублировать друг-друга, например, ручной и автоматический редактор конфига), а после перепрошивки перезагружать роутер. Ничего страшного не случится при несоблюдений данных рекомендаций, но чтобы получить 100% положительный результат лучше их соблоюдать.
Инструкции
Docker. Один из самых простых способов собрать прошивку
Собирать на Ubuntu-22.04 LTS или новее
Настройка Entware (установка приложений)
Несколько принтеров на одном роутере
Добавил в прошивку ТОР, а как настроить? Дополнение.
Инструкции на русском языке для настройки прошивки
Установка сетевого принтера
Настройка Transmission
Блокировка рекламы
Облако на базе Owncloud + nginx + php5-fpm + https
Как запустить MPD радио
Управление радио с IR пульта без LIRC
Для тех, у кого перестал работать обход блокировок на прошивке Padavan через Tor
Частичный обход блокировок через wireguard

Скины:
Все скины должны быть заменены на стадии компиляции прошивки, скрипт Прометей поддерживает все скины, смена выбора через админку роутера.
Мультискин (не зависит от версии)
Устаревшие варсии скинов


Прочее:
Активация DNS-over-TLS с помощью Stubby
Бэккап entware
RRDStorm
Управление роутером через telegram
Удалении окон вывода ошибки 404 (о ненайденных серверах) при установке скрипта Блокировщика рекламы.
Добавить поддержку сканеров (есть альтернативный способ через модуль entware, смотрите архив пакетов для него в шапке)
МФУ по удалёнке
Aria добавляем WEB в прощивку (инструкция уже неактуальна, оставляю для примера добавления чего-то в прошивку)
Видео сборки и прошивки
Загрузочные сектора
Внимание! Не знаешь что это? Не трогай!
Плюсы кастомных загрузчиков, это возможность восстанавливать сразу кастомную прошивку в отличии от стокового, который может восстановить только в девственное состояние. Обратите внимание, что если вы вдруг ошибётесь в чём-то при прошивке загрузочного сектора, то получите кирпич для подпирания ножки стола, кстати очень удобно.
На данный момент, скрипт позволяет почти безопасно (только если не мигнёт свет) прошивать загрузочный сектор, а также компилировать его под все роутеры.

Комментарий автора прошивки

Инструкция по восстановлению прошивки:
1. Копируем в корень первого раздела USB Flash диска (usb 2.0), заранее отформатированный (т.е. пустой) в FAT16/FAT32, образ прошивки, переименовав при этом файл в "root_uImage" (без кавычек и расширения, НО с учётом регистра);
2. Отключаем питание роутера (вытаскиваем шнур питания из роутера);
3. Вставляем USB Flash диска в USB разъём роутера;
4. Зажимаем кнопку RESET и включаем роутер (подключаем шнур питания в роутер), не отпуская при этом RESET;
5. ЖДЁМ, сначала роутер будет гореть красным, затем начнёт мигать и флешка (если на ней есть индикатор) тоже заморгает, после минуты другой роутер перестанет моргать и только ТОГДА, отпускаем RESET
5. Через некоторое время если индикатор роутера не изменит цвет на синий перезапустите его, прошивка загрузится. Если не выходит, проверьте флешку или подберите другую.
Полезное
Единица информации в двоичной системе счисления ГОСТ 8.417-2002 ГСИ
бит2 (bit) - количество информации1 (обычно используется для обозначения скорости соединения и количества переданной информации);
байт2,3 - количество информации1 равное 8 бит (обычно используется для обозначение количество данных на носителе).

1) Термин «количество информации» используют в устройствах цифровой обработки и передачи информации, например в цифровой вычислительной технике (компьютерах), для записи объема запоминающих устройств, количества памяти, используемой компьютерной программой.
2) В соответствии с международным стандартом МЭК 60027-2 единицы «бит» и «байт» применяют с приставками СИ.
3) Исторически сложилась такая ситуация, что с наименованием «байт» некорректно (вместо 1000 = 103 принято 1024 = 210) использовали (и используют) приставки СИ: 1 Кбайт = 1024 байт, 1 Мбайт = 1024 Кбайт, 1 Гбайт = 1024 Мбайт и т. д. При этом обозначение Кбайт начинают с прописной буквы в отличие от строчной буквы «к» для обозначения множителя 103.

Лог изменений в скрипте
Список планируемых обновления
Авторы проекта и те, кто просто помогал
Видео работы скрипта
Готовые архивы для модуля Entware.mod
Как шить Zyxel (первоисточник)

Сборка прошивки на субсистеме в Windows 10 NEW
Установка или обновление подсистемы Windows для Linux до WSL2
для компиляции прошивки на ОС Windows 10.

Решение проблемы "libiconv/iconv.c:103:47: warning: missing braces around initializer [-Wmissing-braces]
checking for Doxygen tools... checking for dot... not found
checking for doxygen... not found
/bin/sh: 2: cmake: not found"




Как установить сертификат для сайта вида *****.ca.crt на роутер


Сообщение отредактировал ferhad.necef - 06.03.23, 06:07
Причина редактирования: Собирать на Ubuntu-22.04 LTS или новее



Реп: (100)
* carlo21, относительно папки с исходниками (padavan-ng):
trunk/images



Реп: (428)
carlo21 @ 3.10.23, 16:19 *
Хочу туда засунуть готовую прошивку.
зачем? Предположу, хотите прошить роутер со стока. Но уверен на 99%, что это можно сделать и без скрипта Прометея.



Реп: (54)
Точно так - со стока
Через способ из шапки - не получается.... :girl_cray:
Вот и хотел прометеусом по порядку.

Взял два - на втором уже падаван - но не могу прошить eeprom( вдруг тот кто шил не прошил)

Два одинаковых роутера - но один сток - другой неизвестно как шитый падаван( да ещё и usb порт 5 вольт не выдаёт)

Прикрепленные изображения
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение



Реп: (0)
* shvchk,
Приветствую!
Ковыряю ваш скрипт, правда пока еще ни одной прошивки не собрал - ошибки при сборке.
Можете для удобства добавить строчку в скрипт, чтобы с прошивкой копировался конфиг (рядом).



Реп: (100)
* hddru, да, без проблем. так-то он сохраняется во временной папке (/tmp/tmp.XXXX, там же где и лог), удобнее именно рядом с самой прошивкой?



Реп: (0)
* shvchk,
Так да. Пусть хранится и во временной папке и рядом с готовой прошивкой (иногда просто забываешь, что именно включено в прошивку, а с конфигом удобнее как-то). Вопрос только в имени файла конфига. Если прошивок много, для разных роутеров, то тут либо дату использовать в качестве имени, либо имя файла прошивки с расширением, скажем, ".cfg". 2-й вариант как-то кажется логичнее. Ну это как предложение.

У меня, кстати, аналогичная проблема как выше описана.
ошибка
terminal@CATS:~$ tail -f '/tmp/tmp.1hLKEVKCA0/padavan-builder.log'
Writing manifest to image destination
Storing signatures
b27e3abbb52eabac5aa8ce506448af00e3cac1d2f239cd3a02c1097638b39319
09991400af09960e0653606b1e80a7df1c5f69d25718e0ec3b4434b6a227f7cc
2023.10.03 17:48:55 - Cloning https://gitlab.com/a-shevchuk/padavan-ng (master)
Cloning into 'padavan-ng'...
warning: redirecting to https://gitlab.com/a-shevchuk/padavan-ng.git/
POST git-upload-pack (364 bytes)
POST git-upload-pack (211 bytes)
warning: redirecting to https://gitlab.com/a-shevchuk/padavan-ng.git/

После этого выход и
Cloning https://gitlab.com/a-shevchuk/padavan-ng (master)
tar: shared/padavan-ng: Функция open завершилась с ошибкой: Нет такого файла или каталога
tar: Error is not recoverable: exiting now

Error occured, please check log: /tmp/tmp.1hLKEVKCA0/padavan-builder.log
Failed command: tar -C "${shared_dir}/padavan-ng" --zstd -xf -

Cleaning
Password required to unmount the disk image

If you don't plan to reuse sources, it's ok to delete disk image

Delete padavan-builder.btrfs disk image? [ + or - ]:



Реп: (100)
* hddru, насчёт ошибки — возможно старая версия скрипта? я вносил исправление сегодня днём

вообще, ошибка выглядит другой... скрипт не может перейти в папку, которую сам создал и в которую только что скачал исходники оО это какая-то забористая магия ) вы ведь не удаляли папку shared в процессе? : )

Сообщение отредактировал shvchk - 03.10.23, 18:17



Реп: (0)
* shvchk,
Еще раз попробовал скачать скрипт с github
Скопировал текстом, сделал свой файл host.sh, вставил текст.

и снова та же "магия" )
terminal@CATS:~$ tail -f '/tmp/tmp.slvhA7g9qg/padavan-builder.log'
Writing manifest to image destination
Storing signatures
b27e3abbb52eabac5aa8ce506448af00e3cac1d2f239cd3a02c1097638b39319
03682e601bf6f46dd7f489eb49b5433c5e38037d462ade427216363ed64fbf97
2023.10.03 19:12:57 - Cloning https://gitlab.com/a-shevchuk/padavan-ng (master)
Cloning into 'padavan-ng'...
warning: redirecting to https://gitlab.com/a-shevchuk/padavan-ng.git/
POST git-upload-pack (364 bytes)
POST git-upload-pack (211 bytes)
warning: redirecting to https://gitlab.com/a-shevchuk/padavan-ng.git/
warning: redirecting to https://gitlab.com/a-shevchuk/padavan-ng.git/
Your branch is up to date with 'origin/master'.
2023.10.03 19:16:12 - Cleaning
padavan-builder


Сообщение отредактировал hddru - 03.10.23, 19:16



Реп: (100)
host.sh

а-аааа, понятно. вы используете старую версию скрипта. загляните в ветку dev, там печеньки )

хотяя... судя по репозиторию, нет, новую...
какая ОС, как воспроизвести проблему? можно в личку, если вам так удобнее

UPD: нашёл проблему на Windows (WSL), починил. пока не тестил на windows (она у меня в виртуалке, а .т.к. wsl в винде это тоже виртуалка, то получачется виртуалка внутри виртуалки, и производительность так себе 😅)

Сообщение отредактировал shvchk - 04.10.23, 05:53



Реп: (1)
Подскажите по прошивке, можно что то тут сделать.
Имеем Длинк DIR-320 B1, собрана прошивка, установлена. Есть модем. Если его вставить в загруженный роутер, то инет есть. Если перегурзить с выдергиванием питания, то можем не виден. Нужно выдернуть вставить. такая же байда на стоке, на опенВРТ, на кинектике вроде сразу модем поднимался, но там не заработал инет.
Вот решил попробовать Падаван. Может можно что то сделать скриптами? И как...
Лог загрузки, передернул модем на 3,40 примерно.

Прикрепленные файлы

Прикрепленный файлsyslog.txt ( 16.3 КБ )


Сообщение отредактировал gelo-vv1 - 03.10.23, 23:08



Реп: (100)
* hddru, добавил копирование конфига в папку с прошивкой



Реп: (268)
* shvchk,
А почему в dev ветке изменен репозитарий на https://gitlab.com/a-shevchuk/padavan-ng ?



Реп: (100)
* filkint, это временно, перестраховался от рассинхрона остальных исходников с собранным тулчейном. Это форк репозитория Сергея, я только добавил систему автоматической сборки, больше ничего не трогаю, и регулярно синхронизирую с исходным репозиторием. Скоро доведу до ума скрипт сборки, и предложу к включению в основной репозиторий, тогда мой станет не нужен



Реп: (268)
* shvchk,
Ок, понятно, и еще вопрос, можно ли использовать другой редактор, например mcedit, nano?



Реп: (100)
* filkint, конечно, micro выбран просто как наиболее интуитивно понятный из консольных. Просто замените команду в скрипте, он один раз используется, для правки конфига сборки. Можно в принципе добавить переменную окружения для переназначения редактора. На стандартный $EDITOR и т.п. не хочу опираться, потому что в системе оно может быть назначено на что попало, и пользователю быть совершенно непонятным и неудобным

Сообщение отредактировал shvchk - 04.10.23, 07:31



Реп: (92)
shvchk @ 04.10.2023, 13:14 *
поправил.

Собралось нормально. Как повторно запускать скрипт и выбрать другой конфиг для сборки, без повторной закачки всех исходников? Свои конфиги можно подсовывать?

Сообщение отредактировал pashinsky - 04.10.23, 07:32



Реп: (268)
* shvchk,
Спасибо.



Реп: (100)
pashinsky @ 04.10.23, 07:31 *
Как повторно запускать скрипт и выбрать другой конфиг для сборки, без повторной закачки всех исходников?

Добавил такую возможность. Если при завершении скрипта на стадии очистки не удалять виртуальный диск (-), то при повторном запуске его и исходники можно использовать повторно (+)

pashinsky @ 04.10.23, 07:31 *
Свои конфиги можно подсовывать?

на первый взгляд, есть два способа реализации:
1. при наличии padavan-ng/trunk/.config спрашивать, переиспользовать ли его. тогда его можно заранее туда положить. но это можно сделать только либо на уже имеющийся виртуальный диск, либо после его автоматического создания, что может быть не всегда удобно
2. добавить переменную окружения, где можно задать путь к конфигу. тогда скрипт его возьмёт и положит куда надо без лишних вопросов. а при её отсутствии сделает всё как обычно

UPD: реализовал второй вариант, в переменной окружения PADAVAN_CONFIG можно задать путь к конфигу, тогда скрипт использует его и полностью пропустит шаг редактирования конфига

например:
export PADAVAN_CONFIG="/path/to/my.config"
# ... далее скрипт запускается любым удобным способом
или, если скрипт уже скачан:
PADAVAN_CONFIG="/path/to/my.config" ./build.sh
или, если хочется всё на лету:
wget -qO- https://github.com/shvchk/padavan-builder/raw/dev/build.sh | PADAVAN_CONFIG="/path/to/my.config" bash


Тестировать не успеваю, но должно работать 😅

Сообщение отредактировал shvchk - 04.10.23, 08:31



Реп: (54)
Огромное спасибо shvchk

Это был познавательный квест по прошивке миника , узнал много нового, спасибо за терпение, + в репу ушёл.

P.S. Никогда не считал себя ламером, особенно в роутерах, но это было что то, с чем то, столько раз я не переустанавливал системы ни разу :rofl:



Реп: (268)
* shvchk,
Собралось на bookworm без ошибок, еще раз Большое спасибо!


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 04.12.23, 10:42