Цель
Оказание помощи при компиляции 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