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 даже не будет присутствовать в списке доступных для сборки.

Обсуждение закрыто.