Компиляция прошивки роутера 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), следующая загвоздка в том что программисты асуса в некоторых конфигурационных файлах использовали не всегда относительные пути, а часть из них абсолютные. Поэтому чтобы у нас прошло все гладко есть два выхода из этой ситуации:
- Создание каталога пользователя и помещение всех исходников в него:
mkdir -p /home/defjovi/projects/RT-N56U/source - Либо создание символьной ссылки на этот каталог и папку с исходниками
После успешной компиляции готовую прошивку можно забрать в папке 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