В интернете много статей по запуску openwrt на устройствах Mikrotik через metarouter. Во всех них для сборки используется ревизия r29684 с официальным патчем, поддерживающим процессоры. Для более поздних версий данный патч уже не подходит. Из этого следует то, что все пакеты openwrt достаточно старые и собрать обновленное ПО почти нереально. А в новых версиях openwrt появилось много новых пакетов и библиотек.
       Поискав в интернете, не получилось ли у кого запустить свежий openwrt под metarouter, наткнулся на нужную заметку. Данная статья как раз полностью копирует ее содержание, плюс маленький бонус по сборке пакетов. Приступим (пример для debianubuntu систем):
Поставим нужные пакеты для работы:
$ 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, указываем наш только что созданный образ и нужное кол-во оперативной памяти. На этом все. Остается запустить виртуалку, зайти в консоль нашего образа и приступить к настройкам (более подробное описание настройки можно найти в интернет, поэтому не буду дублировать).
Основной образ готов и лежит в bin/mr-mips/, можно приступить к сборке дополнительных пакетов. Через меню конфигуратора выбираем нужное ПО, установим для примера, Asterisk11:
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ make menuconfig
Пакеты к установке готовы, можно попить чаю и запустить сборку (чтобы видеть ошибки и процесс сборки, запускаем с параметром 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,))
# 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)
       Если все прошло удачно, то остается поставить только что собранный нами пакет. Готовые образы можно взять у автора патча. На этом все.
Автор: beho1der