Запуск OpenWRT 14.07 на Mikrotik і приклад складання Аsterisk c додатковим модулем


       В інтернеті багато статей по запуску 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 конфігураційного меню

       Далее, потрібно вибрати у пункті 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 вибираємо Image Import, вказуємо наш тільки що створений образ і потрібне кількість оперативної пам'яті. На цьому все, залишається запустити віртуалку, зайти в консоль нашого способу і приступити до налаштувань (це все докладно описується в інтернеті, тому не буду дублювати).

Монтаж і запуск Openwrt




Основний образ готовий і лежить в bin/mr-mips/, можна приступити до складання додаткових пакетів. Через меню конфігуратора вибрати потрібне. Встановимо для прикладу Asterisk11.
$ ./scripts/feeds update-a
$ ./scripts/feeds install-a
$ make конфігураційного меню

Збірка дод. пакетів



Пакети до встановлення готові, можна попити чаю і запустити збірку (щоб бачити те, що збирається і помилки, запускаємо з параметром V=s )
$ make-j $(nproc)

       Дополнительные пакети з'явилися в папці bin/mr-mips/packages/. Щоб поставити їх, потрібно скопіювати їх в систему(наприклад, через scp) і виконати opkg install name_paccket.ipk.
Ця процедура необов'язкова, так як можна встановити пакунки з репозиторію. Для чого ж тоді потрібно збирати пакети? Відповідь проста: якщо потрібних пакетів немає в репозитарії або якщо потрібні додаткові модулі до певного пакету.
       Попробуем зібрати модуль для asterisk'a, якого немає в репозитарії. На форумах, де обговорюють asterisk, запущений на openwrt, можна знайти скарги на те, що в стандартній збірці 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 now is stored in the astdb,,,,app_queue,))

Додаємо її в make файл до інших модулів і запускаємо збірку нашого модуля.
$ make конфігураційного меню
$ make-j $(nproc)

Включаємо наш модуль в збірку

       Если все пройшло вдало, то лишається поставити тільки що зібраний нами пакет. Готові образи можна взяти у автора патча. На цьому все.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.