openwrt в metarouter mikrotik

На сайте mikrotik можно скачать рабочий образ для metarouter, однако дополнительных пакетов там нет. В сети есть отдельные репозитории, но и в них список пакетов довольно скуден. В частности, я нигде не нашёл udpxy. Почему скуден, мне стало понятно после самостоятельной попытки что-то собрать. Ну чтож — собираем?

Итак, главное — нам нужна редакция r29684!!! Я, понаивности, попробовал собрать из свежего транка, промучался день и плюнул — не собиралась даже начальная конфигурация.

Поехали:

svn co -r29684 svn://svn.openwrt.org/openwrt/trunk/
cd trunk
wget http://www.mikrotik.com/download/metarouter/openwrt-metarouter-1.2.patch
patch -p0 <openwrt-metarouter-1.2.patch
make menuconfig

Выбираем платформу для сборки — Mikrotik MetaROUTER MIPS or Mikrotik MetaROUTER PowerPC и генерим конфиг по умолчанию:

make defconfig
make menuconfig

Выбираем нужные пакеты и собираем. Не надо сейчас собирать дополнительные пакеты! Убедитесь сначала, что у вас всё собралось «в чистую». Если сборка прошла успешно — качаем все дополнительные пакеты и собираем и их.

./scripts/feeds update -a
./scripts/feeds install -a

Ну чтож, идеальный вариант, описанный выше у вас прошёл только до сборки без дополнительных пакетов? При попытке собрать что-то из feeds начинают вылетать ошибки? Отлично. Читаем дальше…

Беда свежего транка в том, что он — впереди планеты всей, т.е. в пакетах лежат конфиги для сборки версий, исходников для которых просто нет в каталоге download сайта, часть конфигов откровенно сырая, конфликтуют версии, отсутствуют нужные патчи и т.д. Например, свежий cups желает версию 1.5.4, однако на http://downloads.openwrt.org/sources/ лежит максимум 1.4.4.
Итак, мы всё же хотим свежие пакеты? Ну хотя бы частично? Отлично. Тогда качаем в отдельную папку последний транк.

svn co svn://svn.openwrt.org/openwrt/trunk/
cd trunk
./scripts/feeds update -a

Из свежего транка, в каталог для микротика переносим
./scripts/feeds (позволит вытащить свежие пакеты, а не указанной ревизии, ну и там ещё по мелочи)
./feeds.conf.default
./include/autotools.mk (исправит ошибку — Unsupported libtool version)
./tools/libtool — каталог целиком
Для сборки пакетов, требующих glib2 придётся сделать ещё один финт ушами — скачать транк из ветки backfire

svn co svn://svn.openwrt.org/openwrt/branches/backfire
cd backfire
./scripts/feeds update -a

Из этого транка, забрать пакеты libiconv-full, gettext-full и положить их в каталог packages (ну или в родное местоположение в feeds) к микротику. Заменить uclibc++,glib2 версией из backfire.
В конфиге, надо выбрать libiconv-full, libintl-full.
Возможно придётся ещё вытащить пакет libnfnetlink и некоторые другие. Ну как — у вас ещё не пропало желание собирать последние версии?
Как бы то ни было, я собрал, что смог. Получившийся Франкенштейн лежит здесь.
Особенность сборки — никаких лишних сервисов типа httpd, dnsmasq и иже с ними. Однако, в busybox включены некоторые сетевые утилиты — ip, netcat, ftp*, uuencode и т.п. Но большинство пакетов вам придётся ставить самим. Или же можете воспользоваться прошивкой от микротика — пакеты полностью совместимы. Наверно…

P.S. Добавлю описание пары багов и фич:
1. Самба — вылетает с ошибкой

'/tmp' does not exist or
permission denied when connecting to [IPC$]. Error was permission
denied.

Никакого отношения к каталогу tmp проблема не имеет! Решение:

cd ~root
chmod 755 .*

2. Фича — в конфигураторе не отображаются пакеты, для которых не выбраны пакеты-зависимости! Т.е. если пакет ushare зависит от пакета libffmpeg и тот не выбран — ushare даже не будет присутствовать в списке доступных для сборки.

3 Комментарии。

  1. Аноним

    > Или же можете воспользоваться прошивкой от микротика — пакеты полностью совместимы. Наверно…

    Неа, не совместимы.

  2. Круто! Только человеку далекому от всего этого трудно понять в каком ОС да и в каких приложениях все это нужно делать. Читать по аглицки устал уже. Пока не понятно.

    • google.com Roman Dmitriev

      Вот http://wiki.openwrt.org/ru/doc/howto/build — русская справка по сборке openwrt (собирать проще всего в ubuntu — в сети достаточно пошаговых руководств), а так — я писал чисто себе на память. Это просто заметка.

Яндекс.Метрика