Компиляция DD-WRT из исходного кода
Цель
Оказание помощи при компиляции DD-WRT
Область применения
Создание собственной модификации прошивки.
Изменение состава опций и модулей включенных в прошивку.
Расширение функционала DD-WRT модулями подготовленными сторонними разработчиками.
Устранение ошибок в исходном коде посредством применения патчей.
Общая информация
Компиляции DD-WRT будем производить на примере версии для маршрутизатора Asus RT-N16.
Требования
Рабочая станция под управлением операционной системы Linux 64bit.
Свободное дисковое пространство размером 30 Gb.
Установленные пакеты svn, make, gcc.
Инструментарий кроскомпиляции.
Папка bin инструментария кроскомпиляции должна быть включена в переменную PATH.
Получение исходного кода
Для выполнения компиляции необходимо выполнить получение копии исходного кода DD-WRT. Учитывая что существует много редакций DD-WRT, рекомендую скачивать редакцию рекомендуемую на сайте DD-WRT. Для маршрутизатора Asus RT-N16 на 17 сентября 2010 года рекомендуется версия 14896. Команда на получение копии исходного кода будет выглядеть следующим образом:
svn checkout svn://svn.dd-wrt.com/DD-WRT --revision 14896 trunk-rn16 cd trunk-rn16
Следует обратить внимание что размер исходного кода составляет более 20Gb.
Создание конфигурационных файлов
Конфигурационный файл ядра Linux
cp src/linux/brcm/linux-2.6.23/.config_std src/linux/brcm/linux-2.6.23/.config
Конфигурационный файл системных утилит Linux (busybox)
cp src/router/busybox/.config_micro src/router/busybox/.config
Конфигурационный файл программного обеспечения включаемого в прошивку
cp src/router/configs/broadcom_K26/.config_mini.v24-K26 src/router/.config
Изменение конфигурационных файлов
В конфигурационном файле «src/router/rules/bird.mk» раскоментируем строку «bird-configure» и удаляем опции «—build» и «—no-create». Пример приведен ниже
bird-configure:
cd bird && ./configure --host=$(ARCH)-linux --prefix=/usr --disable-client --with-sysconfig=sysdep/cf/linux-22.h --localstatedir=/tmp/bird --sysconfdir=/tmp/bird --no-recursion CC=$(ARCH)-linux-uclibc-gcc bird_cv_c_endian=big-endian
В файле «src/router/Makefile.brcm26″ после сроки «$(MAKE) -C $(LINUXDIR) oldconfig» добавляем строку «rm $(LINUXDIR)/include/linux/config.h». Обратите внимание что в начале строки должен стоять символ TAB.
$(MAKE) -C $(LINUXDIR) oldconfig
rm $(LINUXDIR)/include/linux/config.h
$(MAKE) -j 4 -C $(LINUXDIR) vmlinux
$(MAKE) -j 4 -C $(LINUXDIR) modules
В конфигурационном файле «src/router/.config» комментируем строку CONFIG_SPUTNIK_APD. Пример ниже
# # Base Features # # CONFIG_SPUTNIK_APD=y CONFIG_EOP_TUNNEL=y
В конце конфигурационного файла «src/linux/brcm/linux-2.6.23/drivers/net/wireless/Kconfig» комментируем четыре строки «source». Пример ниже
Netgear WG111v2
Thanks to Realtek for their support!
# source "drivers/net/wireless/hostap/Kconfig"
# source "drivers/net/wireless/bcm43xx/Kconfig"
# source "drivers/net/wireless/zd1211rw/Kconfig"
# source "drivers/net/wireless/madwifi/Kconfig"
endmenu
Компиляция вспомогательных утилит
В процессе подготовки прошивки потребуется утилита trx. Скомпилировать утилиту следует следующей командой:
gcc opt/tools/trx.c -o opt/tools/trx
Компиляция и сборка прошивки
Переходим в рабочую папку
cd src/router/
Выполнение скриптов configure
make -f Makefile.brcm26 configure
Очистка каталогов от предыдущей компиляции кода
make -f Makefile.brcm26 clean
Компиляция кода
make -f Makefile.brcm26 all
Сборка прошивки
ln -s ../../opt/sstrip sstrip make -f Makefile.brcm26 install
Собраная прошивка лежит в папке «src/router/mipsel-uclibc»
Дополнительно
Желающие выполнить компиляцию прошивки для ядра 2.4 могут это сделать если в командах «make» не буду казывать имя Makefile. Например, вместо «make -f Makefile.brcm26 configure» следует дать команду «make configure» . Исключение составляет команда «install». В обычном Makefile этот раздел не до конца описан и рекомендую использовать «make -f Makefile.brcm26 install».
В процессе компиляции ядра 2.4 подребуются «toolchain-mipsel_gcc3.4.6″. Данный тулчейн я брал тот что генерируется в процессе компиляции OpenWRT.
Ссылки
Пост послуживший отправной точкой для написания статьи
Текущая версия инструментария кроскомпиляции
Создание мода прошивки DD-WRT средствами firmware_modkit под Yota
make -f Makefile.brcm26 configure
Цитата:
— Следует обратить внимание что размер исходного кода составляет более 20Gb.
Вопрос: Это столько будет слито или ОНО на столько распахнется? Если первое, то где можно забрать одним манюсеньким файликом?
Ответ: «Это будет слито».
Мне не известно способа забрать исходный код одним файлом.
а собрать прошивку под неподдерживаемый девайс возможно?
модем dsl-2500U официально не поддерживается.
но есть все исходники стандартной прошивки на фтп длинка, соответсно тулчейн.
Да, собрать можно. Тулчейн нужно использовать с сайта DD-WRT или тот что собирается из исходного кода OpenWRT (я его предпочитаю).
Потребуется правильно указать под какую аппартную платформу требуется компилить. Тока одно «но», то что оно собется не дает гарантии что оно там заработает.
Попробовал собрать по этому руководству прошивку. 26 собралась в конце концов без больших проблем. 24 отказывается собираться совершенно.
Есть какое то руководство более подробное для 24? Нужно собрать прошивку для для dir-320.
@Дмитрий вам поможет следующий пост. Сам собрал прошивку по этой инструкции, работает.
А на 32 битной системе возможно?
@buriy, можно, но потребуется дополнительно решить несколько вопрсоов со сборкой вспомогательных пакетов.
Не подскажешь как это дело для dir 615 (Atheros ar7240 — mips) модифицировать?
В прямой аналогии не катит…
@avb , попробуйте для начала собрать прошивку OpenWrt для dir 615 (Atheros ar7240 – mips). Это на порядок легче. После того как это Вам участься, то будете в шаге от успешной сборки DD-WRT для dir 615.