OpenWRT на D-Link DIR-300 rev A1

15.04.2012

Железо

CPU Ram Flash Network USB Serial JTag
AtherosAR2317@182MHz 16MB 4MB 4x1 No Yes Yes

MMC карты поддерживает http://tinyhack.com/2010/04/04/d-link-dir-300-serial-port-and-sd-mod/

Установка из исходников.

Скачиваем исходники, из SVN, предпочитаю стабильные:

# svn co svn://svn.openwrt.org/openwrt/branches/backfire backfire_dir-300 && cd backfire_dir-300

Так же можно проверить чего не хватает, набрав в корне дерева с исходниками вот это:

# make prereq

Устанавливаем исходники дополнительных пакетов и делаем возможным их включение в прошивку:

# ./scripts/feeds update -a && ./scripts/feeds install -a

Далее проверяем, установлены все необходимые пакеты для создания прошивки и собираем toolchain, т.к. процессор в роутере MIPS, то и софт нужен этой же архитектуры:

# make prereq && make tools/install && make toolchain/install

Создаём конфиг для сборки

# make menuconfig

Теперь после как настроили конфиг для сборки, можно настроить ядро, особой необходимости нету, т. к. основные модули ядра можно включить в конфиге сборки.

# make kernel_menuconfig

После всех настроек запускаем саму сборку, -j2 — 1 процессор +1:

# make -j2

Довольно часто бывает, что во время сборки появляется ошибка. В таком случае запускаем make с выводом отладочной информации:

# make V=99

Итог сборки будет 2 файла, которые нас интересуют, остальные это для других маршрутизаторов: openwrt-atheros-vmlinux.lzma - ядро и openwrt-atheros-root.squashfs - файловая система. Объём этих файлов суммарно не должен превышать 3.6Мб.

Установка на свежий роутер.

Нам понадобится образ RAM и ROM dd-wrt.
Находим тут http://www.dd-wrt.com/site/support/router-database# или ap61.ram http://www.dd-wrt.com/routerdb/de/download/D-Link/DIR-300/A1/ap61.ram/2049 и ap61.rom http://www.dd-wrt.com/routerdb/de/download/D-Link/DIR-300/A1/ap61.rom/2050

Установка на роутер с загрузчиком dd-wrt.

Итак, теперь нужно попасть в загрузчик dd-wrt.

Указываем адрес на котором работает tftp сервер(Если в сборке не указали свой адрес)
DD-WRT> ip_addr -h 192.168.1.2
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.2
DD-WRT> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
DD-WRT> fis list
Name              FLASH addr  Mem addr    Length      Entry point
DD-WRT           0xBFC00000  0xBFC00000  0x00030000  0x00000000
FIS directory     0xBFFE0000  0xBFFE0000  0x0000F000  0x00000000
DD-WRT config    0xBFFEF000  0xBFFEF000  0x00001000  0x00000000

Заливаем ядро

DD-WRT> load -r -b %{FREEMEMLO} openwrt-atheros-vmlinux.lzma
Using default protocol (TFTP)
Raw file loaded 0x80040800-0x801007ff, assumed entry at 0x80040800
DD-WRT> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7
... Erase from 0xbfc30000-0xbfcf0000: ............
... Program from 0x80040800-0x80100800 at 0xbfc30000: ............
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
DD-WRT> fis list
Name              FLASH addr  Mem addr    Length      Entry point
DD-WRT           0xBFC00000  0xBFC00000  0x00030000  0x00000000
vmlinux.bin.l7    0xBFC30000  0x80041000  0x000C0000  0x80041000
FIS directory     0xBFFE0000  0xBFFE0000  0x0000F000  0x00000000
DD-WRT config    0xBFFEF000  0xBFFEF000  0x00001000  0x00000000

Подсчет оставшегося свободного места (Вот САМОЕ ГЛАВНОЕ МЕСТО)

DD-WRT> fis free
  0xBFCF0000 .. 0xBFFE0000
Дальше с помощью калькулятора, переключив его в инженерный вид, в шеснадцатиричном режиме вычесть
BFFE0000 - BFCF0000 = 2F0000

Заливка rootfs

DD-WRT> load -r -b %{FREEMEMLO} openwrt-atheros-root.squashfs
Using default protocol (TFTP)
Raw file loaded 0x80040800-0x802c07ff, assumed entry at 0x80040800

Тут указывается оставшееся свободное место
DD-WRT> fis create -l 0x2F0000 rootfs
... Erase from 0xbfcf0000-0xbffe0000: ...............................................
... Program from 0x80040800-0x802c0800 at 0xbfcf0000: ........................................
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

Процедура будет выполняться несколько минут. Не следует выключать питание до ее завершения. Ничего страшного с роутером не произойдет, просто тогда придется процедуру заливки новой прошивки начинать сначала.

DD-WRT> fis list
Name              FLASH addr  Mem addr    Length      Entry point
DD-WRT           0xBFC00000  0xBFC00000  0x00030000  0x00000000
vmlinux.bin.l7    0xBFC30000  0x80041000  0x000C0000  0x80041000
rootfs            0xBFCF0000  0x80040800  0x002F0000  0x80040800
FIS directory     0xBFFE0000  0xBFFE0000  0x0000F000  0x00000000
DD-WRT config    0xBFFEF000  0xBFFEF000  0x00001000  0x00000000

В завершение настройка скриптов

DD-WRT> fconfig boot_script_timeout 5
boot_script_timeout: Setting to 5
DD-WRT> fconfig bootp false
bootp: Setting to false
DD-WRT> fconfig
Run script at boot: true
Boot script:
.. fis load -l vmlinux.bin.l7
.. exec
Enter script, terminate with empty line
>> fis load -l vmlinux.bin.l7
>> exec
>>
Boot script timeout (1000ms resolution): 5
Use BOOTP for network configuration: false
Gateway IP address:
Local IP address: 192.168.1.1
Local IP address mask: 255.255.255.0
Default server IP address:
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages:false
Network debug at boot time: false
Update DD-WRT non-volatile configuration - continue (y/n)? y
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
Перезагрузка роутера
DD-WRT> reset

Литература.

  1. https://openwrt.org/
  2. http://www.dd-wrt.com
  3. http://www.dd-wrt.com/wiki/index.php/%D0%9F%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B0_DIR-300
  4. http://wiki.openwrt.org/toh/d-link/dir-300
  5. http://iemm.narod.ru/openwrt/
  6. http://www.lan23.ru/forum/showthread.php?t=2133
  7. http://tinyhack.com/2010/04/04/d-link-dir-300-serial-port-and-sd-mod/
Hosted by uCoz