- Подробности
-
Категория: Сборка
-
Опубликовано: 04 февраля 2018
-
Просмотров: 43069

Во многих случаях решить поставленную задачу можно только путем сборки прошивки LEDE из исходников со включенными под ваши требования пакетами. Особо остро данная необходимость проявляется, когда вы пытаетесь запихнуть новую версию прошивки в свой старый роутер с 4 мб rom памяти. О том, как собрать свою прошивку LEDE OpenWRT из исходных кодов под ваше устройство, а также как исключить из сборки ненужные вам пакеты и будет эта статья. Мы разделим весь процесс на несколько этапов, чтобы вы всегда знали на каком именно у вас возникает проблема и требуется совет.
1. Подготовка операционной системы
Для того, чтобы собрать LEDE из исходников нужна Linux машина. Ну или хотя-бы виртуальная, если под рукой нет настоящей. Oracle VM VirtualBox идеально подойдет для этих требований, устанавливайте виртуальную машину хоть в Windows 10, скачивайте любимый Linux дистрибутив и устанавливайте в нее. Далее нужно установить необходимые средства компиляции, которые потребуются для корректной сборки прошивки Lede. Я собираю прошивки в Ubuntu64 из под Oracle VM VirtualBox. Для 64 битной Ubuntu команда устанавливающая набор инструментов выглядит так:
sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev
Для других дистрибутивов Linux список необходимых к установке инструментов системы для последующей сборки прошивки LEDE перечислен здесь.
2. Получение исходных кодов LEDE
git clone https://github.com/openwrt/openwrt.git
Или скачайте архив с исходными кодами по адресу https://github.com/openwrt/openwrt нажав на кнопку Download ZIP и разархивируйте его в вашу в домашнюю папку.

3. Обновление и получение списка доступных пакетов LEDE
Переходим в папку с исходными кодами. Запускаем терминал. Сначала обновляем весь список доступных пакетов
./scripts/feeds update -a
Показать корректный вывод команды make ./scripts/feeds update -a
Updating feed 'packages' from 'https://git.lede-project.org/feed/packages.git^cd5c448758f30868770b9ebf8b656c1a4211a240' ...
Клонирование в «./feeds/packages»…
remote: Counting objects: 56015, done.
remote: Compressing objects: 100% (24189/24189), done.
remote: Total 56015 (delta 30181), reused 54128 (delta 28673)
Получение объектов: 100% (56015/56015), 13.58 MiB | 819.00 KiB/s, готово.
Определение изменений: 100% (30181/30181), готово.
Проверка соединения… готово.
Переключено на новую ветку «cd5c448758f30868770b9ebf8b656c1a4211a240»
/home/compile/openwrt-17.01.4
Create index file './feeds/packages.index'
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'proper-umask'... ok.
Checking 'gcc'... ok.
Checking 'working-gcc'... ok.
Checking 'g++'... ok.
Checking 'working-g++'... ok.
Checking 'ncurses'... ok.
Checking 'zlib'... ok.
Checking 'perl-thread-queue'... ok.
Checking 'tar'... ok.
Checking 'find'... ok.
Checking 'bash'... ok.
Checking 'patch'... ok.
Checking 'diff'... ok.
Checking 'cp'... ok.
Checking 'seq'... ok.
Checking 'awk'... ok.
Checking 'grep'... ok.
Checking 'getopt'... ok.
Checking 'stat'... ok.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'wget'... ok.
Checking 'perl'... ok.
Checking 'python'... ok.
Checking 'git'... ok.
Checking 'file'... ok.
Checking 'ldconfig-stub'... ok.
Collecting package info: done
Collecting target info: done
Updating feed 'luci' from 'https://git.lede-project.org/project/luci.git^d3f0685d63c1291359dc5dd089c82fa1e150e0c6' ...
Клонирование в «./feeds/luci»…
remote: Counting objects: 103372, done.
remote: Compressing objects: 100% (28712/28712), done.
remote: Total 103372 (delta 60773), reused 101706 (delta 59436)
Получение объектов: 100% (103372/103372), 25.16 MiB | 1.22 MiB/s, готово.
Определение изменений: 100% (60773/60773), готово.
Проверка соединения… готово.
Переключено на новую ветку «d3f0685d63c1291359dc5dd089c82fa1e150e0c6»
/home/compile/openwrt-17.01.4
Create index file './feeds/luci.index'
Collecting package info: done
Collecting target info: done
Updating feed 'routing' from 'https://git.lede-project.org/feed/routing.git^d11075cd40a88602bf4ba2b275f72100ddcb4767' ...
Клонирование в «./feeds/routing»…
remote: Counting objects: 6550, done.
remote: Compressing objects: 100% (4182/4182), done.
remote: Total 6550 (delta 2631), reused 5201 (delta 1977)
Получение объектов: 100% (6550/6550), 1.59 MiB | 934.00 KiB/s, готово.
Определение изменений: 100% (2631/2631), готово.
Проверка соединения… готово.
Переключено на новую ветку «d11075cd40a88602bf4ba2b275f72100ddcb4767»
/home/compile/openwrt-17.01.4
Create index file './feeds/routing.index'
Collecting package info: done
Collecting target info: done
Updating feed 'telephony' from 'https://git.lede-project.org/feed/telephony.git^ac6415e61f147a6892fd2785337aec93ddc68fa9' ...
Клонирование в «./feeds/telephony»…
remote: Counting objects: 6212, done.
remote: Compressing objects: 100% (4122/4122), done.
remote: Total 6212 (delta 3353), reused 3736 (delta 1921)
Получение объектов: 100% (6212/6212), 1.20 MiB | 604.00 KiB/s, готово.
Определение изменений: 100% (3353/3353), готово.
Проверка соединения… готово.
Переключено на новую ветку «ac6415e61f147a6892fd2785337aec93ddc68fa9»
/home/compile/openwrt-17.01.4
Create index file './feeds/telephony.index'
Collecting package info: done
Collecting target info: done
Подготавливаем все пакеты к возможности их выбора и установки
./scripts/feeds install -a
Показать вывод команды make ./scripts/feeds install -a
Collecting package info: done
Collecting target info: done
Installing all packages from feed packages....
4. Выбираем исходную архитектуру, модель и версию железа роутера
make menuconfig
В пункте Target System выбираем архитектуру на которой построен ваш роутер.

В пункте Target Profile ищем и выбираем названием вашего роутера с аппаратной версией железа в нем. Могут быть версии V1, V2 и т.д.

После чего сохраняем текущую конфигурацию Save и выходим Exit. Далее пробегаемся по зависимостям пакетов от архитектуры железа:
make defconfig

Конфигурация автоматически сохранится. Можно переходить к следующему шагу.
5. Установка и компиляция инструментов сборки
Для сборки прошивки OpenWRT/LEDE также нужны свои встроенные в исходный код инструменты компиляции. Как правило они собираются и устанавливаются один раз, после чего сборка прошивок с разными пакетами происходит гораздо быстрее. Вводим команду и ждем результата:
make tools/install
Показать примерный корректный вывод команды make tools/install
make[1] tools/install
make[2] -C tools/flock compile
make[2] -C tools/sed compile
make[2] -C tools/patch compile
make[2] -C tools/xz compile
make[2] -C tools/tar compile
make[2] -C tools/m4 compile
make[2] -C tools/autoconf compile
make[2] -C tools/pkg-config compile
make[2] -C tools/automake compile
make[2] -C tools/missing-macros compile
make[2] -C tools/libtool compile
make[2] -C tools/gmp compile
make[2] -C tools/mpfr compile
make[2] -C tools/mpc compile
make[2] -C tools/libelf compile
make[2] -C tools/expat compile
make[2] -C tools/flex compile
make[2] -C tools/bison compile
make[2] -C tools/mklibs compile
make[2] -C tools/sstrip compile
make[2] -C tools/make-ext4fs compile
make[2] -C tools/e2fsprogs compile
make[2] -C tools/mtd-utils compile
make[2] -C tools/libressl compile
make[2] -C tools/mkimage compile
make[2] -C tools/firmware-utils compile
make[2] -C tools/patch-image compile
make[2] -C tools/findutils compile
make[2] -C tools/quilt compile
make[2] -C tools/padjffs2 compile
make[2] -C tools/mm-macros compile
make[2] -C tools/cmake compile
make[2] -C tools/scons compile
make[2] -C tools/bc compile
make[2] -C tools/gengetopt compile
make[2] -C tools/patchelf compile
make[2] -C tools/mtools compile
make[2] -C tools/dosfstools compile
make[2] -C tools/lzma-old compile
make[2] -C tools/squashfs compile
make[2] -C tools/lzma compile
make[2] -C tools/squashfs4 compile
make toolchain/install
Показать примерный корректный вывод команды make toolchain/install
make[2] -C toolchain/gdb compile
make[2] -C toolchain/binutils compile
make[2] -C toolchain/gcc/initial compile
make[2] -C toolchain/kernel-headers compile
make[2] -C toolchain/musl compile
make[2] -C toolchain/gcc/final compile
make[2] -C toolchain/fortify-headers compile
6. Выбор пакетов входящих в состав прошивки
Ну теперь можно перейти и к так называемой кастомизации.
make menuconfig
В OpenWRT/LEDE расширения есть обязательные - это которые включены в базовый набор и являются основопологающими. Вырезать и отключить такие как правило стандартными средствами нельзя. В меню они помечены звездочкой между тире -*-. Их надо принять как должное и не заморачиваться
В случае, когда нужно встроить какой-нибудь пакет в вашу прошивку, нужно поменить его звездочкой используя клавишу пробел или Select. Пакет будет установлен в саму прошивку роутера и будет доступен в OpenWRT/LEDE сразу после прошивки.
Вы также можете собрать расширение как отдельный пакет, чтобы установить его позже через менеджер OPKG. Такой пакет надо поменить в меню как "M"
После того, как состав пакетов выбран - сохраняем текущую конфигурацию Save и выходим Exit
7. Сборка прошивки
Если вы любите смотреть как все происходит в режиме реального времени, то для вас команда:
make V=s
Она будет выводить абсолютно весь ход компиляции. Глаза устанут пытаться что-то уловить. Более понятный вывод результата сборки доступен по команде:
make V=S
Если у вас многоядерный процессор, то сам процесс сборки можно ускорить таким образом:
make -jN V=S
Где N - количество ядер вашего процессора + 1 поток. 3,5 и т.д. Процесс займет времени достаточно, чтобы успеть сходить выпить кофе или поиграть с котом.
После успешной сборки прошивки, в папке исходныекоды/bin/ вы сможете найти готовые файлы для последующей заливки на ваш маршрутизатор. Файл со словом factory предназначен для прошивки роутера, на котором еще стоит стандартная прошивка производителя, а файл содержащий sysupgrade может быть залит на роутер, на котором уже установлена OpenWRT / LEDE операционная система.

Надеюсь данное руководство помогло вам собрать свою первую прошивку OpenWRT LEDE для вашего роутера.
Добавить комментарий
Комментарии
И хотел спросить как вырезать firewall из luci
Или по умолчанию выкл его
А так в менюконфиг она убирается буквой (n) но при добавлении luci (y) становится не изменяемым __
Отключение Debug-инфо и DebugFS
Данные инструменты абсолютно бесполезны большинству пользователей, а существует для разработчиков ПО.
Kernel modules
wireless drivers
[*] kmod-mac80211
[ ] export mac80211 internal in DebugDS
Global build settings
[ ] Compile the kernel with Debug FileSystem enabled
[ ] Compile the kernel with debug information
Теперь после сборки освободится еще 64 kb места для установки своих пакетов прямо в прошивку.
git clone git://github.com/openwrt/openwrt.git -b v17.01.4
WARNING: Applying padding in /home/host/openwrt/bin/packages/mips_24kc/base/Packages to workaround usign SHA-512 bug!
4 выдачи в гугле и всё [цензура]ня. Это не серьёзно, дроч, которая не работает.
Отчего сдох? Стоит ли бояться всем владельцам этих роутеров.
У меня роутер Tp-Link mr3020 v1 Atheros AR9331 память заменил на 16мб.
Сидел на своей сборке 17 и решил сегодня обновиться на 19.
Получил исходники запустил выбор исходной архитектуры и не увидел Atheros (AR7XXX/AR9XXX).
Может кто подскажет где копать или что выбрать из предложенного...
На офсайте заметил что после 17 версии про мой девайс забыли :(
флешки там ни в красную армию
Как установить вместо LEDE на это роутер OpenWrt ?
Как собрать на него прошивку если такого девйса нет в списке openwrt?
layout on yoսr weblog. Is this a paid theme or
did yoᥙ customize it yourself? Anywɑy keep uр the excellent quality writing, it is rare to see a nice blog lіke thiѕ one these days.
Take a look at my homepage ... website
Онлайн Заявка
На Микрозайм
Невзирая на то, что счет появляется шибким и эффективным средством решения денежных проблем, безвыгодный все решаются на текущий
шассе ради трудности операции его оформления.
Микрозаймы На Карту Круглосуточно Без
Проверок
america-dubai-auto.com
Anyway I will be subscribіng to your feeds and even Ӏ ɑchievement yoս get entry to consistently quickly.
my site :: site
presentѕ feature basеd content.
Feel free to surf to mү web-site; site (caidendԝofv.wikipowell.com)