Lazarus project

Текущее время: 11 авг 2022, 10:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: OpenWrt/LEDE
СообщениеДобавлено: 12 июн 2021, 17:02 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 21 сен 2011, 21:49
Сообщений: 381
Cпасибо сказано: 27
Спасибо получено:
192 раз в 144 сообщениях
Создание прошивки OpenWrt/LEDE с помощью Image Generator (Image Builder)

Самый простой способ самому собрать прошивку OpenWrt с необходимыми вам пакетами - это воспользоваться Image Builder. Преимущества данного способа перед сборкой из исходников с помощью Buildroot:

1) Простота;
2) Быстрая сборка в течение нескольких минут;
3) Совместимость с модулями из репозитория.

Недостатки:
1) Поскольку сборка идет не из исходников, последние изменения в коде не попадут в сборку.

Как и в случае сборки прошивки из исходных кодов, все манипуляции делаются на компьютере с linux (в нашем примере это будет Ubuntu).

Для начала установим все необходимое.

Открываем эмулятор терминала и выполняем команду
Код:
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc wget


Дальше я буду рассказывать на примере моего роутера NETGEAR WNDR4300 v.1.

1) На сайте https://openwrt.org/toh/hwdata/start ищем NETGEAR, потом находим свою модель, спускаемся в Dataentry и запоминаем значения Target: ar71xx-ath79 и Subtarget: nand.

2) На сайте https://downloads.openwrt.org выбираем нужную версию прошивки, например OpenWrt 19.07.7, далее выбираем по значениям Target и Subtarget из предыдущего пункта, в нашем случае это -> ar71xx -> nand. Убеждаемся, что в списке Image Files есть наш роутер, после чего из Supplementary Files скачиваем openwrt-imagebuilder-19.07.7-ar71xx-nand.Linux-x86_64.tar.xz (в вашем случае после openwrt-imagebuilder- окончание может быть другим).

3) Распаковываем архив в домашний каталог. В результате должен появиться каталог openwrt-imagebuilder-19.07.7-ar71xx-nand.Linux-x86_64, в котором мы и будем производить дальнейшие действия.

Если у вас есть файлы настроек (например настройки сетевого подключения, transmission, samba, и т.п.) с уже установленной OpenWrt, их можно сразу внести в прошивку. Для этого создаем в openwrt-imagebuilder-19.07.7-ar71xx-nand.Linux-x86_64 каталог files и копируем в нее наши настройки. Для своего роутера в $HOME/openwrt-imagebuilder-19.07.7-ar71xx-nand.Linux-x86_64/files/etc/config/ я скопировал файлы dhcp, system, wireless.

4) Теперь можно приступать к сборке прошивки следующей командой
Код:
make image PROFILE=WNDR4300V1 PACKAGES="luci luci-i18n-base-ru luci-i18n-firewall-ru luci-i18n-opkg-ru luci-i18n-p910nd-ru luci-i18n-samba4-ru luci-proto-3g luci-proto-relay kmod-nf-nathelper-extra kmod-usb-net-asix kmod-usb-net-cdc-ether kmod-usb-net-rndis kmod-usb-storage usb-modeswitch 6to4 wpad hostapd-utils xl2tpd ppp-mod-pptp block-mount -wpad-mini -wpad-basic -wpad-basic-wolfssl" FILES=files/


где

PROFILE=WNDR4300V1 - роутер, для которого мы собираем прошивку.

Наименование профайлов смотрим командой
Код:
make info


Ищем название, похожее на ваш роутер, и подставляем его в ключ PROFILE=

Дальше с помощью ключа PACKAGES= задаем пакеты, которые нужно убрать или добавить в прошивке.

В моем примере я добавил в прошивку пакеты: luci ... block-mount и убрал wpad-mini ... wpad-basic-wolfssl. Чтобы убрать пакет, перед ним нужно поставить знак минус.

Ключ FILES=files/ задает месторасположение конфигурационных файлов, которые я скопировал выше. Данный ключ можно убрать, тогда конфигурационные файлы будут настроены по умолчанию.

Собранную прошивку смотрим в каталоге bin.

Ссылки:
https://autohome.org.ua/12-openwrt/36-o ... agebuilder
https://oldwiki.archive.openwrt.org/doc ... e.generate


Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Lazarus "Спасибо" сказали:
Mantikora
 Заголовок сообщения: Re: OpenWrt/LEDE
СообщениеДобавлено: 04 май 2022, 21:59 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 21 сен 2011, 21:49
Сообщений: 381
Cпасибо сказано: 27
Спасибо получено:
192 раз в 144 сообщениях
Сборка OpenWrt/LEDE из исходных кодов

Все манипуляции делаются на компьютере с linux (в нашем примере будет для Debian/Ubuntu)
Для начала установим все необходимое.

Открываем консоль и копируем туда команды
Код:
sudo apt-get install subversion git


Далее
Код:
sudo apt-get install g++ libncurses5-dev zlib1g-dev gawk libssl-dev unzip make


Готово.

Далее нужно скачать исходники прошивки

Скачиваем необходимую нам ветку (в данном примере это OpenWrt v19.07.0)

Код:
git clone https://github.com/openwrt/openwrt.git -b v19.07.0



Далее, переходим в каталог с тем что у нас скачалось. ~/ (то есть home, он же домашний каталог) у нас создался каталог openwrt, нужно перейти в него для продолжения
Код:
cd ~/openwrt


Теперь нужно выполнить
Код:
./scripts/feeds update -a


После завершения процесса обновления выполняем
Код:
./scripts/feeds install -a


Почти все готово, далее выполняем
Код:
make prereq


Если все ок, то будет вот такое сообщение: Collecting package info: done
Запуск интерфейса выбора компонентов прошивки (в последних версиях появляется автоматически после предыдущего шага)
Код:
make menuconfig


Перемещение по пунктам осуществляется клавишами клавиатуры: вверх-вниз, пробел и esc.
Выбираем Target System по аналогии с предыдущим постом.

Target Profile можно выбрать для нужной модели, если оставить default profile, тогда будет создано множество скомпилированных прошивок для всех устройств сразу из профиля Target System.

Отмечаем к установке <*> нужные пакеты, после чего сохраняем нашу конфигурацию кнопкой <Save>

Для сборки прошивки OpenWRT/LEDE нужны свои встроенные в исходный код инструменты компиляции. Как правило они собираются и устанавливаются один раз, после чего сборка прошивок с разными пакетами происходит гораздо быстрее. Вводим команду и ждем результата:
Код:
make tools/install
make toolchain/install


Приступаем к сборке. Для использования 4-х ядер процессора команда будет такой: (число ядер +1, т.е. -j5)
Код:
make -j5 V=-1


Ждем, через полчаса-час находим свою прошивку в каталоге ~/openwrt/bin

Если перед сборкой выбран правильный target, но прошивка получается размером больше допустимого для размера флеш-памяти вашего роутера - файлы *sysupgrade.bin и *factory.bin не будут созданы.

Очистка
Код:
make clean


Удаляет содержимое каталогов /bin и /build_dir.

Код:
make dirclean


Удаляет содержимое каталогов /bin и /build_dir, а также дополнительно /staging_dir и /toolchain (инструментарий кросс-компиляции). Dirclean - основная команда для полной очистки.

Код:
make distclean


Удаляет все что вы собрали или настроили, а также удаляет все загруженное из репозитория и исходные коды пакетов.
ВНИМАНИЕ : Кроме всего прочего будет стерта ваша конфигурация сборки (.config), ваш набор инструментов (toolchain) и все прочие исходные коды. Используйте с осторожностью!

Адреса используемых репозиториев находится в файле feeds.conf.default

Ссылки:
https://4pda.to/forum/index.php?showtopic=821686
https://openwrt.su/sborka/sborka-svoej- ... skhodnikov
https://openwrt.org/ru/doc/howto/build


Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: OpenWrt/LEDE
СообщениеДобавлено: 04 май 2022, 22:04 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 21 сен 2011, 21:49
Сообщений: 381
Cпасибо сказано: 27
Спасибо получено:
192 раз в 144 сообщениях
О несовпадении хэша в версии ядра (vermagiс) при установке модулей ядра из репозитория в собственную сборку

Очень часто пользователи OpenWrt вырезают из сборки для своего устройства те пакеты, которые им не нужны, и наоборот включают требуемые. Но как быть, когда манипуляции произведены минимальные, а каждая попытка поставить какие-нибудь дополнительные пакеты из официального репозитария какой-нибудь стабильной ветки заканчивается возмущением менеджера пакетов opkg на несоответствие зависимостей ядра, несмотря на то, что версии ядра одинаковые? Тут то и придется прибегнуть к своеобразному хаку на свой страх и риск.

При каждой сборке OpenWrt, при минимальном изменении конфиг файлов в итоге меняется уникальный hash-код сборки. Он присваивается как в зависимости пакетов, так и к самому ядру OpenWrt. Например, при установке в самособранной OpenWRT 18.06.1 пакетов из официального репозитария несмотря на то, что версии ядра одинаковые, opkg будет ругаться что не может выполнить зависимости. И --force-depends тут не всегда помогает. Для тех, кто хочет чтобы все проходило гладко - есть один непопулярный способ ниже.

1. Узнаем hash-код ядра из официальной сборки вашей версии OpenWrt
Открываем репозитарий нашей версии OpenWrt и нашей архитектуры. Например https://downloads.openwrt.org/releases/ ... /packages/ - это версия OpenWrt 18.06.1 и популярная архитектура ar71xx. Находим пакет kernel_4.9.120-1-adfb989aae12e239d65a2c73ca35b8a3_mips_24kc.ipk. 32 cимвола "adfb989aae12e239d65a2c73ca35b8a3" в его названии это есть md5 hash ядра официальной сборки. У вас соответственно он может быть иной.

2. Указываем md5 hash сборки принудительно для кросс-компилятора OpenWrt
Открываем папку с исходниками OpenWRT, находим и открываем для редактирования файл openwrt/include/kernel-defaults.mk Находим примерно 102ю строку следующего содержания:

Код:
grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | mkhash md5 > $(LINUX_DIR)/.vermagic


И приводим ее к вижу

Код:
grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | echo "нашхэшкодтут" > $(LINUX_DIR)/.vermagiс


Далее собираем сборку и пользуемся официальным репозитарием без лишних возмущений.

Источник:
https://openwrt.su/sborka/maskirovka-sv ... epozitarij


Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: OpenWrt/LEDE
СообщениеДобавлено: 04 май 2022, 22:07 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 21 сен 2011, 21:49
Сообщений: 381
Cпасибо сказано: 27
Спасибо получено:
192 раз в 144 сообщениях
Что можно отключить/удалить в сборке OpenWrt

(n = disable, y = enable) Menu path Comments

CONFIG_KERNEL_SWAP=y/n
Global build settings / Kernel build options / Support for paging of anonymous memory (swap)

CONFIG_KERNEL_PRINTK=n
Global build settings / Kernel build options / Enable support for printk

CONFIG_KERNEL_CRASHLOG=n
Global build settings / Kernel build options / Crash logging

CONFIG_KERNEL_KALLSYMS=n
Global build settings / Kernel build options / Compile the kernel with symbol table information

CONFIG_KERNEL_DEBUG_INFO=n
Global build settings / Kernel build options / Compile the kernel with debug information

CONFIG_KERNEL_ELF_CORE=n
Global build settings / Kernel build options / Enable process core dump support

CONFIG_KERNEL_MAGIC_SYSRQ=n
Global build settings / Kernel build options / Compile the kernel with SysRq support

CONFIG_KERNEL_PRINTK_TIME=n
Global build settings / Kernel build options / Enable printk timestamps

CONFIG_PACKAGE_MAC80211_DEBUGFS=n
Kernel modules / Wireless Drivers / kmod-mac80211 / Export mac80211 internals in DebugFS

CONFIG_PACKAGE_MAC80211_MESH=n
Kernel modules / Wireless Drivers / kmod-mac80211 / Enable 802.11s mesh support

CONFIG_STRIP_KERNEL_EXPORTS=y
Global build settings / Strip unnecessary exports from the kernel image

CONFIG_USE_MKLIBS=y
Global build settings / Strip unnecessary functions from libraries

CONFIG_EARLY_PRINTK=n
Kernel hacking / Early printk This menu is available only via make kernel_menuconfig


Вернуться к началу
 Профиль  
Cпасибо сказано 
 Заголовок сообщения: Re: OpenWrt/LEDE
СообщениеДобавлено: 06 май 2022, 21:01 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 21 сен 2011, 21:49
Сообщений: 381
Cпасибо сказано: 27
Спасибо получено:
192 раз в 144 сообщениях
Сборка OpenWrt/LEDE онлайн


Вернуться к началу
 Профиль  
Cпасибо сказано 
За это сообщение пользователю Lazarus "Спасибо" сказали:
Mantikora
 Заголовок сообщения: Re: OpenWrt/LEDE
СообщениеДобавлено: 13 май 2022, 12:15 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 21 сен 2011, 21:49
Сообщений: 381
Cпасибо сказано: 27
Спасибо получено:
192 раз в 144 сообщениях
Настройка в OpenWrt соединения PPTP

1. Установить пакеты ppp-mod-pptp kmod-nf-nathelper-extra
2. Включить CONNTRACK для iptables (PPtP PASSTHROUGH via OpenWRT router)
- создать файл /etc/sysctl.d/local.conf
- прописать туда одну строчку:
Код:
net.netfilter.nf_conntrack_helper = 1


Вернуться к началу
 Профиль  
Cпасибо сказано 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа



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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB