Как собрать прошивку openwrt под свой роутер
“Установите” загруженные пакеты (не обязательно, но требуется, если вы хотите , к примеру, собрать прошивку с LuCI).
Эта процедура создаст символьные ссылки на подкаталоги пакетов в основном “дереве” исходных текстов.
Для установки индивидуальных пакетов:
Чтобы собрать всё дерево пакетов:
ПРЕДУПРЕЖДЕНИЕ Это может занять много времени и не требуется, если вы не планируете развертывание репозитория пакетов для своей сборки.
Последовательность действий
Типичные действия по сборке:
выполняем make menuconfig , настраиваем платформу (Target System, Subtarget, Target Profile) и сохраняем конфигурацию в файл .config; выполняем make defconfig (применяем стандартные параметры для профиля); выполняем make menuconfig , модифицируем набор пакетов и сохраняем конфигурацию (в файл .config); выполняем scripts/diffconfig.sh >mydiffconfig (сохраняем свои изменения конфигурации в файл mydiffconfig на будущее);Настройка параметров сборки
Когда вы сохраняете конфигурацию создается файл
/openwrt/trunk/.config содержащий параметры сборки.
Это меню позволяет выбрать платформу, версию набора инструментов (toolchain), которую вы хотите использовать для сборки и пакеты, которые вы хотите включить в образ прошивки. Запустите этот конфигурационный интерфейс после обновления исходных кодов и репозитория для того, чтобы последние пакеты были включены в вашу конфигурацию.Defconfig
будет произведено основное конфигурирование системы сборки, включая проверку зависимостей и условий для окружения сборки и т.п.
будет проводится проверка для зависимостей. Установите отсутствующие компоненты и запустите снова.
Общая настройка
Menuconfig имеет ТПИ, который предназначен для выбора платформы, пакетов для компиляции, пакетов для включения в файл прошивки, некоторые параметры ядра и т.д.
В результате автоматически обновятся зависимости в существующей конфигурации и вы сможете приступить к сборке образа.
Существуют 3 значения:
<M> исходный код пакета будет кросс-скомпилирован в бинарный файл и opkg пакет будет собран и помещен в /buildsystem/bla/bla/bla , но ImageGenerator не включит его в образ прошивки!Выйти из ТПИ и выбрать save - сохранить ваши настройки.
Настройка ядра
Обычно это не требуется, но вы можете это сделать:
Обратите внимание, что make kernel_menuconfig изменяет конфигурационные шаблоны ядра дерева сборки и очистка build_dir не вернет их. Изменения могут быть просмотрены с помощью команды svn diff target/linux/ и отменены командой svn revert -R target/linux/ .
Зеркала источников
Пользовательские файлы
Во многих случаях, может потребоваться иметь предварительно настроенный образ. Если так, то поместите свои файлы в:
Например, предположим что вы хотите собрать образ с предварительно настроенным /etc/config/firewall , тогда поместите ваш измененный конфигурационный файл firewall сюда:
Сборка образа
Теперь все готово для сборки образа(ов), которая осуществляется с помощью одной команды:
или (то же самое)
Эта простая команда вызовет последовательность событий. Как уже говорилось, произойдет:
потом кросс-компиляция исходных кодов с этим инструментариемПоследовательность работы make
Команда make world сама выполняет следующую последовательность команд:
make target/compile
make package/cleanup
make package/compile
make package/install
make package/preconfig
make target/install
make package/index
Вы можете выполнить каждую из них отдельно. Например, если процесс компиляции какого-либо пакета прервался с ошибкой, после устранения ошибки можно продолжить сборку (без удаления уже сделанного):
make package/compile
make package/install
make package/preconfig
make target/install
make package/index
Параметры Make
Отладка
Значением V можно указать:
1 или w - выводить путь к каталогу при входе в него и после выхода из него;Трассировка каталогов (путей).
Трассировка с полной информацией о сборке.
Тоже полная трассировка. (Если указать два значения, работает более полный вывод.)
Сборка на многоядерном процессоре
Процесс сборки можно ускорить запустив несколько параллельных задания с использованием параметра -j :
Используйте стандартную формулу <количество процессоров + 1> Если это приводит к случайным ошибкам сборки запустите компиляцию еще раз, но без параметра -jФоновая сборка
Если вы собираетесь использовать вашу систему во время процесса сборки, вы можете выполнять сборку используя только простой ввода/вывода и мощности процессора, например так (двухъядерный процессор):
Сборка одиночных пакетов
При разработке или создании пакетов для OpenWrt удобно иметь возможность сборки только нужного пакета (пример с пакетом cups ):
Обнаружение ошибок сборки
Если по какой-то причине сборка не удается, то самый простой способ определить ошибки это:
Команда сохраняет полную подробную копию вывода сборки (с stdout переданный в stderr) в /openwrt/trunk/build.log и показывает на экране только ошибки.
Команда сохраняет полную подробную копию вывода сборки (с stdout переданный в stderr) в build.log и показывает только предупреждения и ошибки в процессе сборки используя только фоновые ресурсы двухъядерного процессора.
Включение звуковых уведомлений
Размещение образов
После успешной сборки созданный образ(ы) можно найти в созданном каталоге <buildroot dir>/bin . Скомпилированные файлы дополнительно классифицированы по платформе, так что, например, прошивка собранная для устройтв ar71xx будет находиться в каталоге <buildroot dir>/bin/ar71xx .
Например, если ваш <buildroot dir> это /openwrt/trunk, файлы находятся в /openwrt/trunk/bin/ar71xx.
Очистка
Время от времени вам может понадобиться очистить среду сборки. Следующие параметры make подходят для этой цели:
Clean
удаляет содержимое каталогов bin и build_dir .
Dirclean
Distclean
удаляет все что вы собрали или настроили, а также удаляет все загруженное из репозитория и исходные коды пакетов.
ВНИМАНИЕ : Кроме всего прочего будет стерта ваша конфигурация сборки (.config), ваш набор инструментов (toolchain) и все прочие исходные коды. Используйте с осторожностью!
Есть множество других функций в системе сборки OpenWrt, но выше рассмотрены некоторые из основных.
Примеры
Устранение неполадок
В начале получите больше информации о проблеме используя параметр make - “make V=99”.
Missing source code file, due to download problems. Не забудьте установить все необходимые пакеты для сборки: В процессе компиляции возможно будет не доставать какого-то пакета. Ищите в выводе (make V=s) строку типа:Решение (ubuntu 12.04LTS): Вводим в теминале команду hg (например). Вывод терминала:
Выполняем что просят: sudo apt-get install mercurial
Запускаем сборку (make) снова.
Решение (ubuntu 12.04LTS):
Попробуйте обновить основной исходный код и все репозитории (Внимание! Может привести к другим проблемам). Поищите похожие ошибки в (TRAC), используйте фильтры, чтобы найти их. В противном случае сообщите об этой проблеме там, указав пакет, выходные данные (процессор, образ и т.п.) и код ревизии (main & package). Компиляция с make -j … иногда дает случайные ошибки. Попробуйте компиляцию без -j прежде чем сообщать об ошибке.
В данной теме необходимо размещать изображения и логи под спойлером
OpenWrt — встраиваемая операционная система, основанная на ядре Linux, и предназначенная, в первую очередь, для домашних маршрутизаторов. Основные компоненты включают в себя ядро Linux, util-linux, uClibc или musl и BusyBox. Исходный код открытый. Распространяется под лицензией GNU GPL
- Данная тема предназначена для обсуждения процесса сборки, обсуждения компонентов прошивки для включения в готовый файл для прошивки вашего маршрутизатора и все что не связано с компиляцией прошивки.
- В данной теме не обсуждают настройки OpenWrt/LEDE, процесс установки готовых сборок на ваш роутер. Вопросы типа: "Установил OpenWrt и теперь не знаю что делать, как мне настроить интернет" - оффтоп и будет удален без каких либо предупреждений. Для таких вопросов есть общая темаOpenWrt/LEDE - альтернативная прошивка
Скачиваем нужную ветку отсюда и вставляем перед первым && дальше все выполнится автоматом
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
/openwrt && ./scripts/feeds update -a && ./scripts/feeds install -a && make prereq
Все манипуляции делаются на компьютере с linux (в нашем примере будет для Debian/Ubuntu)
Для начала установим все необходимое.
Открываем консоль и копируем туда команды
Далее нужно скачать исходники прошивки (смотри спойлер Git-репозитории проектов OpenWrt и LEDE )
Скачиваем необходимую нам ветку (в данном примере это OpenWrt v17.01.4)
Далее, переходим в каталог с тем что у нас скачалось.
/ (то есть home, он же домашний каталог) у нас создался каталог openwrt, нужно перейти в него для продолжения
После завершения процесса обновления выполняем
Когда все закончили, сохраняем нашу конфигурацию кнопкой <Save>
Приступаем к сборке:
А для 4х-ядерного процессора, для включения всех ядер, команда будет такой: (число ядер +1, вот оно и -j5 получается)
/openwrt/bin
Если перед сборкой выбран правильный target, но прошивка получается размером больше допустимого для размера флеш вашего роутера - файлы *sysupgrade.bin и *factory.bin не будут созданы.
Удаляет содержимое каталогов bin и build_dir.
Удаляет содержимое каталогов /bin и /build_dir, а также дополнительно /staging_dir и /toolchain (инструментарий кросс-компиляции). 'Dirclean' - основная команда для полной очистки.
Удаляет все что вы собрали или настроили, а также удаляет все загруженное из репозитория и исходные коды пакетов.
ВНИМАНИЕ : Кроме всего прочего будет стерта ваша конфигурация сборки (.config), ваш набор инструментов (toolchain) и все прочие исходные коды. Используйте с осторожностью!
Адреса используемых репозиториев находится в файле feeds.conf.default
Настройки для подключения к роутеру с OpenWrt(dropbear должен быть включен)Настройка TFTP-сервера tftpd-hpa
Установим пакет tftpd-hpa:
содержащий настройки сервера. Приведём его к следующему виду:
TFTP_USERNAME="tftp"TFTP_DIRECTORY="/var/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--ipv4 --secure --create --umask 027 --permissive"
В настройках указаны дополнительные опции:
create разрешает серверу создавать новые файлы,
ipv4 предписывает ему ожидать подключений только на адресах IPv4,
umask предписывает сбрасывать бит записи для группы и все биты доступа для остальных пользователей,
permissive предписывает не проводить никаких проверок прав доступа к файлу сверх производимых операционной системой.
Создадим каталог для tftp-сервера, дадим серверу доступ к каталогу:
sudo mkdir /var/tftp
sudo chown tftp:tftp /var/tftp
Можно также поменять домашний каталог пользователя tftp в файле /etc/passwd на /var/tftp.
Теперь просто прописываем нужные нам ip адреса через gnome network manager и все.
Осталось перезапустить демона, чтобы он начал работу с новым каталогом:
stp101,
Хороший гайд ты выложил ранее по сборке. Надо вообще в разделе TP-Link тему создать по поводу сбора прошивок. Конфиги для сборки считай наполовину одинаковые для всех TP-Link-ов.
Есть вопросы.
Вот LEDEвский чаво по сборке. Ты выложил как первоначально начинать собирать.
Но как быть например если я первый раз (в примере с ледой) выбрал только профиль 841-го и русик и собрал остальное по дефолту. У меня скачался весь конструктор и папка LEDE теперь 5 с лишним гигов. Т.е. для дальнейшего сбора докачивать практически (предполагаю) ничего не надо.
Суть вопроса в том как "заводить" сборку в следующий раз в данном случае? Т.е. уже при имеющемся конструкторе на жёстком.
Например надумал я на следующий день (или через неделю) собрать прошивку с изменениями. С чего начинать?
И в добрый путь? Или ещё какие команды освежить?
Приступаем к сборке: Для 4х-ядерного процессора команда будет такойmake -j3 V=-1
А с 2-х ядерным как быть? Если можно с пояснениями что это вообще за команды -j3 V=-1? Я то линуксовод ещё=>0 :blush:
Во многих случаях решить поставленную задачу можно только путем сборки прошивки 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
2. Получение исходных кодов LEDE
3. Обновление и получение списка доступных пакетов LEDE
Переходим в папку с исходными кодами. Запускаем терминал. Сначала обновляем весь список доступных пакетов
./scripts/feeds update -a
Подготавливаем все пакеты к возможности их выбора и установки
./scripts/feeds install -a
Collecting package info: done
Collecting target info: done
Installing all packages from feed packages.
4. Выбираем исходную архитектуру, модель и версию железа роутера
В пункте Target System выбираем архитектуру на которой построен ваш роутер.
В пункте Target Profile ищем и выбираем названием вашего роутера с аппаратной версией железа в нем. Могут быть версии V1, V2 и т.д.
После чего сохраняем текущую конфигурацию Save и выходим Exit. Далее пробегаемся по зависимостям пакетов от архитектуры железа:
Конфигурация автоматически сохранится. Можно переходить к следующему шагу.
5. Установка и компиляция инструментов сборки
Для сборки прошивки OpenWRT/LEDE также нужны свои встроенные в исходный код инструменты компиляции. Как правило они собираются и устанавливаются один раз, после чего сборка прошивок с разными пакетами происходит гораздо быстрее. Вводим команду и ждем результата:
make[1] tools/installmake[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[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. Выбор пакетов входящих в состав прошивки
Ну теперь можно перейти и к так называемой кастомизации.
В OpenWRT/LEDE расширения есть обязательные - это которые включены в базовый набор и являются основопологающими. Вырезать и отключить такие как правило стандартными средствами нельзя. В меню они помечены звездочкой между тире -*-. Их надо принять как должное и не заморачиваться
В случае, когда нужно встроить какой-нибудь пакет в вашу прошивку, нужно поменить его звездочкой используя клавишу пробел или Select. Пакет будет установлен в саму прошивку роутера и будет доступен в OpenWRT/LEDE сразу после прошивки.
Вы также можете собрать расширение как отдельный пакет, чтобы установить его позже через менеджер OPKG. Такой пакет надо поменить в меню как "M"
После того, как состав пакетов выбран - сохраняем текущую конфигурацию Save и выходим Exit
7. Сборка прошивки
Если вы любите смотреть как все происходит в режиме реального времени, то для вас команда:
Она будет выводить абсолютно весь ход компиляции. Глаза устанут пытаться что-то уловить. Более понятный вывод результата сборки доступен по команде:
Если у вас многоядерный процессор, то сам процесс сборки можно ускорить таким образом:
make -jN V=S
Где N - количество ядер вашего процессора + 1 поток. 3,5 и т.д. Процесс займет времени достаточно, чтобы успеть сходить выпить кофе или поиграть с котом.
После успешной сборки прошивки, в папке исходныекоды/bin/ вы сможете найти готовые файлы для последующей заливки на ваш маршрутизатор. Файл со словом factory предназначен для прошивки роутера, на котором еще стоит стандартная прошивка производителя, а файл содержащий sysupgrade может быть залит на роутер, на котором уже установлена OpenWRT / LEDE операционная система.
Надеюсь данное руководство помогло вам собрать свою первую прошивку OpenWRT LEDE для вашего роутера.
Напоминаем, что попытки повторить действия автора могут привести к потере гарантии на оборудование и даже к выходу его из строя. Материал приведен исключительно в ознакомительных целях. Если же вы собираетесь воспроизводить действия, описанные ниже, настоятельно советуем внимательно прочитать статью до конца хотя бы один раз. Редакция 3DNews не несет никакой ответственности за любые возможные последствия.
Создание собственной версии альтернативной прошивки полезно лишь в том случае, когда вас не устраивает функциональность имеющихся сборок — отсутствуют необходимые компоненты, а вместо них есть что-то совершенно ненужное. При этом объём памяти в роутере относительно невелик, а установить дополнительное ПО на внешний накопитель не всегда возможно. В принципе, ничего сложного в создании своей прошивки нет. Для OpenWRT есть утилита Image Generator, которая как раз таки может удалять или добавлять пакеты программ в уже имеющуюся сборку. Можно воспользоваться ей, а можно пойти по другому пути — скомпилировать свою прошивку с блек-джеком и. ну, вы поняли. Общее описание процесса можно найти в вики проекта.
Итак, нам понадобится компьютер с Linux/*BSD/Mac OS на борту, порядка пяти гигабайт свободного места на жёстком диске и немножечко терпения. Собирать прошивку в виртуальной машине с подходящей ОС крайне не рекомендуется, так как процесс компиляции в этом случае может излишне затянуться. В качестве примера рассмотрим работу в Ubuntu 11.10. Первым делом надо установить дополнительные утилиты и библиотеки, которые потребуются в процессе сборки. Для других ОС и дистрибутивов список нужного ПО можно посмотреть здесь. Минимально необходимый набор в нашем случае ставится такой командой.
Теперь надо создать рабочую папку, куда будут сохранены исходные тексты прошивки, её настройки, готовые образы и так далее. В пути до этой директории не должно быть пробелов. После создания каталога скачиваем в него исходные тексты OpenWRT.
Тут есть два варианта — либо взять стабильную версию, которая хорошо протестирована и надёжна до определённой степени, либо воспользоваться версией для разработчиков, в которой имеется немало новых возможностей, но вместе с тем получить ненулевую вероятность падений прошивки на ровном месте. Текущий релиз называется Backfire, а тестовая версия всегда находится в trunk. Выполните одну из приведённых ниже команд скачивания исходников из SVN-репозитория и перейдите в соответствующую папку.
Приступим к самому интересному — наполнению прошивки компонентами. Первым делом для тестовой сборки установим веб-интерфейс LuCI, чтобы лишний раз не настраивать роутер из консоли. Остальные программы ищутся тем же скриптом с параметром search и ключевым словом после него. В выводе будут имена пакетов с кратким описанием. Для установки используем ту же утилиту с параметром install. Все зависимости будут автоматически разрешены и недостающие пакеты, если таковые нужны выбранному пользователем компоненту, будут также установлены.
Для некоторых программ, возможно, захочется или придётся создать конфигурационные файлы. Для этого помещают их в каталог /files/etc/config, который надо создать в папке с исходниками. Вообще любые файлы из директории /files будут включены в прошивку. После этого можно переходить непосредственно к сборке. Выполним в консоли следующую команду.
Здесь переходим к пункту Target System (Enter) и выбираем платформу, для которой будет собрана прошивка. В списке совместимых устройств найдите вашу модель и посмотрите, какое у неё «железо». Для начала рекомендуется «потренироваться на кошках», то есть сделать x86-сборку с необходимым набором пакетов (учтите, что не для всех пакетов это удастся), а затем запустить её в виртуальной машине. А пока выходим в главное меню (Esc) и нажимаем Exit, не забывая сохранить новую конфигурацию. Чтобы получить базовые настройки для прошивки выполняем ещё одну команду.
Возвращаемся в главное меню и в Target Profile ищем свой роутер. Обратите внимание, что в некоторых моделях от версии к версии аппаратная начинка может заметно отличаться. Постарайтесь ничего не перепутать, а то в худшем случае вы получите «кирпич» вместо устройства. Если вы решили потестировать x86-сборку, то в Target Images отметьте пункты ramdisk и iso — на выходе получится загрузочный iso-образ.
А вот теперь самое муторное — ручной выбор необходимых компонентов. Установленные ранее пакеты надо включить в саму сборку, для чего придётся пройтись почти по всем разделам настроек. Для установки компонента перейдите к нему и нажмите пробел для его выбора. * означает, что он будет «вшит» в ядро, а M указывает на создание отдельного подгружаемого модуля. В ряде случаев активация компонента открывает доступ к дополнительным настройкам, связанным с ним.
В разделах Base system и Libraries находятся базовые программы и библиотеки. В Network и IPv6 помещено всё, что связано с работой в сети — Bittorrent- и VPN-клиенты, различные сервера, вспомогательные утилиты и многое другое.
В разделе LuCI настраиваются параметры веб-интерфейса, так как в качестве примера для x86-сборки был выбран именно он. Во-первых, его надо включить в Collections, а в Modules выбрать admin-core или admin-full. Подраздел Applications содержит модули для настройки тех или иных параметров роутера. Дополнительно надо установить локализации (Translations), поддержку настроек сетевых интерфейсов (Protocols) и базовые библиотеки (Libraries).
Раздел Kernel modules содержит в основном драйвера для «железа», файловых систем, различных подсистем и так далее. Здесь тоже полезно пробежаться по подразделам и включить, например, поддержку NTFS. К сожалению, какого-то универсального руководства к действию при настройке компонентов прошивки нет. Устанавливать дополнительные утилиты и библиотеки можно, но не стоит забывать о небольшом объёме накопителя в роутере. А вот удалять то, что по умолчанию было включено, надо с осторожностью. Ознакомьтесь хотя бы с краткой справкой по компоненту, нажав H, а ещё лучше погуглите.
После выбора всех нужных модулей и компонентов необходимо сохранить конфигурацию. Непосредственно перед сборкой полезно выполнить ещё одну команду, которая покажет недостающие утилиты или библиотеки. Их надо будет доустановить с помощью apt-get install или поискать пакеты, в которых они содержатся, и тоже установить.
Процесс сборки запускается очень простой командой:
Сборка прошивки длится довольно долго. Чем больше вы «напихали» в неё, тем дольше придётся ждать. Обладатели многоядерных процессоров могут чуть облегчить свою участь, добавив к команде make параметр -j x, где x=число ядер+1. На тестовой машине с CPU AMD Phenom II X6 базовая x86-прошивка с небольшими дополнениями компилировалась в несколько потоков примерно 10-15 минут. Впрочем, иногда использование нескольких процессорных ядер может привести к ошибке во время сборки.
Готовые файлы прошивок (trx, bin, iso и другие) будут лежать в папке bin. Процесс заливки прошивки зависит от модели роутера — ищите информацию в списке совместимости и вики. Для многих моделей генерируется сразу два файла: factory и upgrade. Первый нужен для замены стандартного ПО, а второй — для обновления уже установленной OpenWRT. Если вы создали тестовую x86-сборку, то её работоспособность можно проверить в виртуальной машине. VirtualBox для этого вполне подойдёт. Создайте новую ВМ, тип ОС выберите Linux 2.6, откажитесь от создания HDD. В качестве загрузочного CD используйте образ openwrt-x86-generic-rootfs-iso.img, у которого надо поменять расширение img на iso. Первый сетевой адаптер переключите в режим «Внутренняя сеть», а второй в режим NAT или моста.
Внутри второй ВМ можно запустить какой-нибудь Live-дистрибутив, предварительно переключив виртуальный сетевой интерфейс в режим «Внутренняя сеть». Ubuntu, например, или один из многочисленных вариантов WinPE. Эта машина должна автоматически получить IP-адрес по DHCP, а к псевдороутеру можно будет подключиться через веб-интерфейс или telnet. Если всё заработало так, как нужно, то можно приступать к сборке прошивки уже под конкретную модель роутера.
Перед сборкой каждой новой прошивки рекомендуется очищать рабочую директорию, обновлять исходные коды (для trunk-релиза это особенно актуально), скачивать свежие фиды и ставить новые версии пакетов. Ну и далее по этапам сборки.
В общем, не так страшен чёрт, простите, пингвин, как его малюют. Хотя, надо признать, для рядового пользователя это не так уж просто. К сожалению, как и говорилось выше, какого-то универсального и простого руководства для сборки собственной прошивки нет. Мы постарались расписать наиболее общие шаги, но все нюансы и детали охватить просто невозможно. Ещё раз призываем наших читателей быть внимательнее во время сборки и предупреждаем, что неверные действия могут привести к «гибели» устройства и порой непростому восстановлению его работоспособности. Удачи!
В предыдущей статье было разобрано как установить уже скомпилированную прошивку. Минус такого метода в том, что после установки нам требуется настраивать вручную заново каждое устройство «от» и «до», а так же устанавливать требуемые пакеты программ.
Проект OpenWrt предоставляет возможность довольно простой компиляции прошивки со своими настройками и выбранными заранее пакетами.
Компиляция своей прошивки полезна тогда, когда у вас имеется >1 устройства, работающего на OpenWrt. Или вы — фирма, которая ставит «свои» прошивки на закупаемые устройства.
Автор не несет никакой ответственности за порчу вашего оборудования. Вы должны понимать, что Вы делаете.
В разделе Binary Releases располагаются протестированные, стабильные версии прошивок. А в разделе Development Snapshots располагаются экспериментальные прошивки для разработчиков, там прошивки автоматически собираются раз в два дня. Используя их, мы получим последние версии ядра и пакетов, но «These images are generally not tested, use them at your own risk.»
И так, для компиляции нам понадобится ОС Linux. В данный момент для десктопа я использую xubuntu 14.04. Все действия будут проводится в командной строке. Как и в предыдущей статье, прошивка делается для Tp-link ta-wa901nd v2.
Почти всё что на нужно для компиляции находится в архиве OpenWrt-ImageBuilder-*. Архив имеется для каждой архитектуры процессора поддерживаемой OpenWrt.
Так же архивы ImageBuilder есть в Development Snapshots.
Создаем каталог в домашней директории и скачиваем туда требуемый архив ImageBuilder:
Распаковываем и переходим в каталог с ImageBuilder:
tar -xvjf OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2
Теперь нужно определиться что мы хотим видеть в нашей прошивке после установки:
- Нужно, что бы устройство сразу можно было подключить к рабочей сети и оно получило настройки по DCHP. Таким образом, для начальной настройки, нам не потребуется теперь подключать устройство к сетевому интерфейсу компьютера.
- Требуется иметь общие для всех точек доступа параметры в**/etc/config/firewall, etc/config/system, /etc/config/wireless**.
- Нужно, что бы стоял пакетnano.
Для того, что бы иметь настроенные конфиги нужно создать директорию /files/etc/config и скопировать туда конфигурационные файлы network, firewall, system, wireless. Пример этих конфигов в предыдущей статье.
После установки прошивки мы получим то, что внесли в эти конфиги и т.к. это общие настройки, нужно будет провести редактирование конфигов для отдельно взятого устройства. Например, у наших точек доступа разные SSID, номер канала и.т.д.
Устаналиваем зависимости для make:
apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc
Компиляция происходит одной командой:
make image PROFILE=XXX PACKAGES=»pkg1 pkg2 pkg3 -pkg4 -pkg5 -pkg6″ FILES=files/
PROFILE — модель устройства, под которую собираем прошивку. Что бы узнать весь список устройств, под которые можно собрать прошивку используя данный архив, команудем make info
PACKAGES — перечисляем пакеты, которые хотим видеть в нашей прошивке, или наоборот, если какие-то пакеты не хотим видеть, ставим — перед наименованием пакета.
FILES — задаем место, где лежат конфиги. Мы как раз создали каталог files и положили туда конфиги.
В моем случае команда для компиляции выглядит так:
make image PROFILE=TLWA901 PACKAGES=»nano» FILES=files/
Небольшое отступление. Веб-интерфейс даёт хорошую нагрузку на устройство. Мои точки доступа используются очень активно и любая лишняя нагрузка здесь совсем не нужна. Так же задач, под который бы требовался luci у меня нет. В общем, в данном случае я не использую luci. При сборке я не указывал явное исключение -luci т.е. «из коробки» luci сам по себе не ставится.
Так вышло, что пакета nano не было в архиве ImageBuilder. В конце компиляции выдало следующее:
Очищаем каталог OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64/ bin/ от неправильно созданной прошивки:
Пробуем. Собралось. Собранная прошивка находится в каталоге OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64/ bin/ar71xx/
Как мы видим, получилось много всего полезного. Для прошивки tl-wa901nd v2 «с нуля» нам нужно openwrt-ar71xx-generic-tl-wa901nd-v2-squashfs-factory.bin
Теперь нам требуется раскидать прошивку по устройствам и провести индивидуальную корректирующую настройку каждому устройству.
После прошивки устройства, придется сначала цепляться через telnet и задавать пароль.
Для задания пароля root’у нужно положить файлы passwd и shadow в ./files/etc. Содержимое файлов можно и нужно (пароль хранится в зашифрованном виде) скопировать из устройства с уже установленным паролем у root’a.
Т.е. сначала нужно на устройстве задать пароль root’у с помощью passwd root, а потом уже скопировать файлы с зашифрованным паролем.
В этом случае, после прошивки можно подключаться сразу по ssh.
Пример содержания файлов:
Если на устройстве стоит официальная прошивка, то заходим в веб-интерфейсе в System tools\Firmware upgrade и указываем наш .bin. Скрин есть в предыдущей статье.
Если у нас уже прошита какая-либо OpenWrt, то
scp ./bin/ar71xx/openwrt-ar71xx-generic-tl-wa901nd-v2-squashfs-factory.bin [email protected]:/tmp
Этой командой мы копируем файл прошивки с нашего компьютера на устройство 192.168.5.250 в каталог tmp. Нужно будет ввести пароль root от устройства. После этого заходим на устройство:
Переходим в каталог tmp: cd /tmp
mtd -r write openwrt-ar71xx-generic-tl-wa901nd-v2-squashfs-factory.bin firmware
Это означает что нам нужно прошить файл .bin и после этого перезагрузить устройство.
Подключаемся через telnet, задаем пароль.
Вносим индивидуальные изменения. Я изменяю hostname в /etc/config/system и изменяю ssid и канал работы wi-fi в /etc/config/wireless
Перезагружаем сервисы. Например, после изменений в /etc/config/wireless просто набираем wifi и сервис wifi перезагружается и вступает в работу с новыми настройками. А для вступления в силу нового hostname: /etc/init.d/system reload
У меня используется 5 точек доступа Tp-link tl-wa901nd v2. Средняя нагрузка на точку — 7 устройств, в основном веб-серфинг. С официальной прошивкой точки часто висли или после какого-то времени просто переставали подключать клиентов.
Читайте также: