Собираем свою прошивку OpenWrt с помощью Image Builder

В предыдущей статье было разобрано как установить уже скомпилированную прошивку. Минус такого метода в том, что после установки нам требуется настраивать вручную заново каждое устройство "от" и "до", а так же устанавливать требуемые пакеты программ.

Проект OpenWrt предоставляет возможность довольно простой компиляции прошивки со своими настройками и выбранными заранее пакетами.

Компиляция своей прошивки полезна тогда, когда у вас имеется >1 устройства, работающего на OpenWrt. Или вы - фирма, которая ставит "свои" прошивки на закупаемые устройства.

Автор не несет никакой ответственности за порчу вашего оборудования.

Вы должны понимать, что Вы делаете.

О стабильных и экспериментальных прошивках

На странице https://downloads.openwrt.org/

2014.11.25-14.20.59

В разделе 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.

В случае tl-wa901nd это https://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2

Так же архивы ImageBuilder есть в Development Snapshots.

Создаем каталог в домашней директории и скачиваем туда требуемый архив ImageBuilder:

mkdir wa901nd

cd wa901nd

wget https://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2

2014.11.25-15.01.40

Распаковываем и переходим в каталог с ImageBuilder:

tar -xvjf OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2

cd OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64

Теперь нужно определиться что мы хотим видеть в нашей прошивке после установки:

  • Нужно, что бы устройство сразу можно было подключить к рабочей сети и оно получило настройки по DCHP. Таким образом, для начальной настройки, нам не потребуется теперь подключать устройство к сетевому интерфейсу компьютера.
  • Требуется иметь общие для всех точек доступа параметры в /etc/config/firewall, etc/config/system, /etc/config/wireless.
  • Нужно, что бы стоял пакет nano.

Для того, что бы иметь настроенные конфиги нужно создать директорию /files/etc/config и скопировать туда конфигурационные файлы network, firewall, system, wireless. Пример этих конфигов в предыдущей статье.

2014.11.25-16.31.21

После установки прошивки мы получим то, что внесли в эти конфиги и т.к. это общие настройки, нужно будет провести редактирование конфигов для отдельно взятого устройства. Например, у наших точек доступа разные 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/ от неправильно созданной прошивки:

rm -r /bin/ar71xx

Скачиваем недостающий пакет из https://downloads.openwrt.org/barrier_breaker/14.07/ar71xx/generic/packages/packages/ и помещаем в каталог OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64/packages/

Пробуем. Собралось. Собранная прошивка находится в каталоге OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64/bin/ar71xx/

2014.11.27-12.14.42

Как мы видим, получилось много всего полезного. Для прошивки tl-wa901nd v2 "с нуля" нам нужно openwrt-ar71xx-generic-tl-wa901nd-v2-squashfs-factory.bin

Теперь нам требуется раскидать прошивку по устройствам и провести индивидуальную корректирующую настройку каждому устройству.

Я не знаю как задать изначально в конфигах пароль root`у. Поэтому после прошивки устройства, придется сначала цепляться через telnet и задавать пароль.

UPD 7.04.15 Для задания пароля root'у нужно положить файлы passwd и shadow в ./files/etc. Содержимое файлов можно и нужно (пароль хранится в зашифрованном виде) скопировать из устройства с уже установленным паролем у root'a.

Т.е. сначала нужно на устройстве задать пароль root'у  с помощью passwd root, а потом уже скопировать файлы с зашифрованным паролем.

В этом случае, после прошивки можно подключаться сразу по ssh.

Пример содержания файлов:

/etc/passwd

/etc/shadow

 

Прошивка устройств

Если на устройстве стоит официальная прошивка, то заходим в веб-интерфейсе в System tools\Firmware upgrade и указываем наш .bin. Скрин есть в предыдущей статье.

Если у нас уже прошита какая-либо OpenWrt, то

scp ./bin/ar71xx/openwrt-ar71xx-generic-tl-wa901nd-v2-squashfs-factory.bin root@192.168.5.250:/tmp

Этой командой мы копируем файл прошивки с нашего компьютера на устройство 192.168.5.250 в каталог tmp. Нужно будет ввести пароль root от устройства. После этого заходим на устройство:

ssh root@192.168.5.250

Переходим в каталог tmp: cd /tmp

И даем команду:

mtd -r write openwrt-ar71xx-generic-tl-wa901nd-v2-squashfs-factory.bin firmware

Это означает что нам нужно прошить файл .bin и после этого перезагрузить устройство.

2014.11.27-13.06.21

Подключаемся через 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 устройств, в основном веб-серфинг. С официальной прошивкой точки часто висли или после какого-то времени просто переставали подключать клиентов.

Нестабильные прошивки от OpenWrt тоже сбоили, но реже.

Выпуск 14.07 работает просто замечательно. Без нареканий.

Полезные ссылки:

  1. ImageBuilder на wiki OpenWrt
  2. Статья на Autohome "Своя прошивка openwrt с помощью Image Generator (Image Builder)"
Закладка Постоянная ссылка.

Отправить ответ

avatar
  Subscribe  
Notify of