Home > Без рубрики > Компиляция прошивки роутера Asus RT-N56U

Компиляция прошивки роутера Asus RT-N56U

Появилась возможность апгрейда старого самосборного сервера-беспроводного роутера на человеческие железки: hp proliant microserver + Asus N56U.
Если с сервером был однозначный выбор, то с роутером возникли небольшие затруднения. Основная причина эта провайдер – Екатеринбуржский Кабинет. Провайдер позволяет подключится клиентам двумя способами – VPN (скорость ограничивается до 10 Мб/с) и авторизатор. Смысл авторизатора не сложен, на сервер авторизации посылается зашифрованный пароль с вашего IP и провайдер дает команду шлюзу пускать вас в интернет. Авторизатор написан компанией-провайдером как всегда под windows, но мир не без добрых людей и светлых голов, которые написали авторизатор и под *nix системы. Получается что авторизация роутера на х86 архитектуре не представляется сложной под любую систему, а вот под аппаратные роутеры уже возникают проблемы с портированием и компиляцией.

На помощь как всегда приходит комьюнити, на форуме Кабинета можно найти как готовые прошивки так и скомпилированный авторизатор для разных моделей. Все эти прошивки расчитаны на то что вы имеете роутер на Broadcom SoC чипе и прошивку *WRT. Я стал отталкиваться от этих параметров при выборе оборудования. Старое железо не хотелось брать в ущерб максимальной производительности, поэтому из всего списка подходящих роутеров осталось двое: Linksys E4200 и Asus RT-N56U. Если для первого прошивка DD-WRT уже худо бедно работает, то для второго она даже не предвидится ввиду того что в основе его лежит SoC от Ralink.           Перевес был в сторону Asus во-первых E4200 почти не возможно купить сейчас в России (вечно в стране куча говна а хорошую вещь не найти) а ждать от америкозов даже очень дешево не хотелось, во-вторых отзывы по Linksys были диаметрально противоположны, а Asus даже на прошивке от производителя работал стабильно и быстро и наконец в-третьих так как на сайте Асуса выкладываются исходники прошивки был шанс и интерес покопаться и сделать авторизатор самому.
Забегу вперед и скажу что своими силами мне это не удалось и я очень благодарен Dmitry Crash  за его терпение и знания. О компиляции авторизатора и интеграции его в прошивку будет отдельный пост, а в этом я хочу рассказать о подводных камнях с которыми я столкнулся при компиляции прошивки (даже стоковой).
Во-первых, выбор дистрибутива.  Как ни странно, но я перебрал их не один (пробовал Ubuntu 11.04, Debian 5.0.1, Fedora 15). Все они не подошли по разным причинам, debian base дистрибутивы не подошли из за командных интерпретаторов bash и dash, Fedora не подошла из за слишком нового make. Конечно все эти проблемы можно решить, но чтобы голова не пухла по лишнему поводу лучше всего использовать Fedora 13. Несмотря на несчастливое число релиза, прошивка на ней собирается замечательно.
Компиляция проходила в виртуальной машине, я взял обычный образ 32 разрядной федоры 13 netinstall и установил с галкой “Рабочий стол”. Дополнительно пришлось установить несколько пакетов:

yum install gcc gcc-c++ cpp bison zlib-devel gettext

Исходник прошивки забираем с сайта асуса. В архиве содержится toolchain (окружение для кросс компилирования), исходники загрузчика и исходники самой прошивки. Сначала надо распаковать и установить toolchain, хотя в README предложена следующая последовательность компиляции: LZMA Utility, mksquashfs utility, toolchain, надо сначала скопировать папку builroot-gcc342 в /opt и создать символическую ссылку. Если этого не сделать то при устновке mksquashfs вы получите ошибку по поводу установочных путей.
Ну вот, toolchain установлен, пути экспортированы (как пишет об этом README), следующая загвоздка в том что программисты асуса в некоторых конфигурационных файлах использовали не всегда относительные пути, а часть из них абсолютные. Поэтому чтобы у нас прошло все гладко есть два выхода из этой ситуации:

  1. Создание каталога пользователя и помещение всех исходников в него:
    mkdir -p /home/defjovi/projects/RT-N56U/source
  2. Либо создание символьной ссылки на этот каталог и папку с исходниками

После успешной компиляции готовую прошивку можно забрать в папке images.

Update:
При сборке прошивки 1.0.1.7c не собираются библиотеки vorbis потому что не могут найти библиотеку ogg (нафиг они вообще в роутере, хотя может медиа сервер требует). Костыль позволяющий это исправить: выполнение в командной строке

export PKG_CONFIG_PATH="/home/defjovi/projects/RT-N56U/source/user/libogg-1.2.2/install/lib/pkgconfig"

тем самым указав требуемый путь.

Tags: asus firmware linux router

Comments:5

  1. Alexey Ответить
    23.09.2011 at 13:04

    Спасибо за комментарий по процессу сборки. Раньше собирал для ASUS 500gp (скорее из спортивного интереса), но там все было более нетривиально

    • demonx Ответить
      23.09.2011 at 21:58

      На Ralink на порядок меньше устройств чем Broadcom и Atheros поэтому и версий прошивок так мало и собираются они с извращениями 🙂

  2. Sir-J Ответить
    10.10.2011 at 18:19

    Привет! Дмитрий, ты наверно смотрел исходники от 7.0.1.32. Там нет toolchain. Можно использовать от описанной прошивки?
    На самом деле я пробовал и эту, но ничего не получилось. Может я конечно какой-то другой дистрибутив федоры взял, но там нужно было устновить гораздо больше пакетов. ЧЕстно не хватает терпения )) Будет большой наглостью попросить тебя поделиться “готовым” образом для виртуалки?…. )

    • admin Ответить
      11.10.2011 at 15:08

      Привет. Да, asus не во все архивы вкладывает toolchain, его можно определить если прошивка весит больше 170 метров.
      Готовый образ попробую вечером выложить.

  3. Sir-J Ответить
    13.10.2011 at 13:20

    Привет! Не удобно как то напоминить о себе )) но все же, не удалось никуда залить пока образ федоры?…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *