Запуск OpenWRT 14.07 на Mikrotik и пример сборки Аsterisk c дополнительным модулем

4cea4df461784455be8973ced1ab021a.png       В интернете много статей по запуску openwrt на устройствах Mikrotik через metarouter. Во всех них для сборки используется ревизия r29684 с официальным патчем, поддерживающим процессоры. Для более поздних версий данный патч уже не подходит. Из этого следует то, что все пакеты openwrt достаточно старые и собрать обновленное ПО почти нереально. А в новых версиях openwrt появилось много новых пакетов и библиотек.       Поискав в интернете, не получилось ли у кого запустить свежий openwrt под metarouter, наткнулся на нужную заметку. Данная статья как раз полностью копирует ее содержание, плюс маленький бонус по сборке пакетов. Приступим (пример для debian\ubuntu систем): Поставим нужные пакеты для работы: $ sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk git ccache gettext libssl-dev xsltproc zip Создадим директорию для сборки (нужно около 12 гигабайт свободного места): $ mkdir openwrt & cd openwrt Скачаем патч для openwrt и сами исходники openwrt, и применим патч: $ wget http://openwrt.naberius.de/barrier_breaker/mr-mips/openwrt_metarouter_1407.patch $ git clone git://git.openwrt.org/14.07/openwrt.git barrier_breaker $ cd barrier_breaker $ patch -p1 -i …/openwrt_metarouter_1407.patch Приступим к настройке образа: $ make defconfig $ make prereq $ make menuconfig        Далее, нужно выбрать в пункте target system тип процессора Mikrotik MetaROUTER MIPS. Также можно пройтись по дополнительным пакетам, которые будут в образе, или исключить ненужные. Можно приступать к сборке и пойти погулять: $ make -j $(nproc) Если сборка удачна, то появится готовый образ barrier_breaker/bin/mr-mips/openwrt-mr-mips-rootfs.tar.gz       Загружаем готовый образ на флешку (можно как на встроенную так и на внешнюю) mikrotik’a, заходим в web интерфейс mikrotik’a и во вкладке, metarouter выбираем Import Image, указываем наш только что созданный образ и нужное кол-во оперативной памяти. На этом все. Остается запустить виртуалку, зайти в консоль нашего образа и приступить к настройкам (более подробное описание настройки можно найти в интернет, поэтому не буду дублировать).

Сборка и запуск Openwrt

Основной образ готов и лежит в bin/mr-mips/, можно приступить к сборке дополнительных пакетов. Через меню конфигуратора выбираем нужное ПО, установим для примера, Asterisk11: $ ./scripts/feeds update -a $ ./scripts/feeds install -a $ make menuconfig Сборка доп.пакетов 3dd084984a0c47379c41f0b9036f405c.png21f32dbc98bd443d8c3f273cfb98f065.png Пакеты к установке готовы, можно попить чаю и запустить сборку (чтобы видеть ошибки и процесс сборки, запускаем с параметром V=s)

$ make -j $(nproc)        Дополнительные пакеты появились в папке bin/mr-mips/packages/ — для установки скопируйте их в систему (например, через scp) и выполните opkg install name_paccket.ipk.Данная процедура необязательна, так как можно установить пакеты из репозитария. Для чего же тогда нужно собирать пакеты? Ответ простой: если нужных пакетов нет в репозитарии или если нужны дополнительные модули к определенному пакету.       Попробуем собрать модуль для asterisk’a, которого нет в репозитарии. На форумах, где обсуждают asterisk, запущенный на openwrt, можно найти жалобы на то, что отсутствует модуль для очередей app-queue. Попробуем его собрать. Правильный вариант — прочитать мануал openwrt и собрать по нему. Я решил попробовать напролом и сразу залез в make-файл /barrier_breaker/package/feeds/telephony/asterisk-11.x/Makefile, в котором в конце нашел строки, отвечающие за сборку модулей. $(eval $(call BuildAsterisk11Module, pbx-lua, Lua, provides Lua resources for Asterisk,+libpthread +libc +liblua,/etc/asterisk/extensions.lua, extensions.lua, pbx_lua,))

Комментарии к выбору собираемых модулей # Params:# 1 — Package subname# 2 — Package title# 3 — Module description# 4 — Module dependencies# 5 — Full path to multiple conffiles# 6 — conf files# 7 — module files# 8 — sound files# 9 — binary files

В комментариях дается описание каждой строчки. Для модуля app-queue нет сторонних зависимостей, поэтому строчка довольно компактна. $(eval $(call BuildAsterisk11Module, app-queue, Distribution queue call to agent, Each dynamic agent in each queue is now stored in the astdb,,, app_queue,)) Добавляем ее в make-файл к другим модулям и запускаем сборку нашего модуля. $ make menuconfig $ make -j $(nproc) Включаем наш модуль в сборку e5e0432a06ef48988c72d6cfafbbf6e6.png        Если все прошло удачно, то остается поставить только что собранный нами пакет. Готовые образы можно взять у автора патча. На этом все.

© Habrahabr.ru