Устанавливаем DD-WRT на D-Link DIR-400
Возникла нужда установить прошивку DD-WRT на маршрутизатор D-Link DIR-400. Почему-то все инструкции по установке DD-WRT на маршрутизатор, которые я обнаружил в Сети гугленьем и яндексеньем, страдают неточностями и содержат лишние команды. Пишу точную инструкцию. В приведённых листингах выделены синим команды, которые нужно вводить, а синий знак параграфа ( ¶ ) стоит там, где нужно нажать Enter.
Инструкция.
sgtatham/putty/latest/x86/putty.exe, в Linux telnet обычно уже установлен).
Установите пакет tftpd: в Windows скачайте http://tftpd32.jounin.net/download/tftpd32.400.zip, распакуйте файлы из архива туда же, где расположен файл прошивки linux.bin, и запустите tftpd32.exe, затем установите в его настройке параметр «Bind TFTP to this address» — в выпадающем списке выберите адрес IP действующего интерфейса локальной сети; в Linux после установки пакета посмотрите в файле /etc/inetd.conf путь в конце строки и слинкуйте (скопируйте) туда файл linux.bin.
Подключите компьютер к маршрутизатору кабелем Ethernet, настройте на компьютере статический адрес IP 192.168.0.100 маска 255.255.255.0.
Запустите на компьютере бесконечный пинг на хост 192.168.0.1: в Linux команда «ping 192.168.0.1»; в windows — «ping -t 192.168.0.1».
Подготовьте файл, содержащий символ с кодом 03 (символ генерируется при нажатии сочетания клавиш «Сtrl-C»): в Linux в окне терминала выполните команду «printf «\003» > ctrl-c.txt»;
для пользователей Windows я подготовил этот файл, качайте с моего FTP.
В окне консоли Windows (терминала Linux) подготовьте команду putty -telnet -m ctrl-c.txt -P 9000 192.168.0.1 — наберите строку, но не нажимайте enter.
Включите маршрутизатор (подключите кабель питания).
Дождитесь появления в окне ping строки «Reply from 192.168.0.1» или «Ответ от 192.168.0.1» и быстро нажмите Enter в окне с командой putty -telnet -m ctrl-c.txt -P 9000 192.168.0.1 . Через 1-2 секунды увидите в открывшемся окне Putty текст:
== Executing boot script in 1.140 seconds — enter ^C to abort»
^C
RedBoot>
Это приглашение к вводу отладочной консоли (DBG-console) «RedBoot».
В консоль RedBoot последовательно введите команды, после каждой дожидайтесь появления строки «RedBoot>» (время выполнения некоторых команд — несколько минут).
«fis init» — команда форматирования флеш-памяти (очистка и инициализация файловой системы маршрутизатора). RedBoot спросит подтверждения перед выполнением форматирования, подтвердите (введите «y»). Результат:
RedBoot> fis init¶
About to initialize [format] FLASH image system — continue (y/n)? ¶
*** Initialize FLASH Image System
And a descriptor for the configuration data size = 10000
. Erase from 0xbffe0000-0xbfff0000: .
. Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
RedBoot>
«load -r -b 0x80041000 -v -h 192.168.0.100 linux.bin» — команда загрузки файла linux.bin с сервера tftp, который работает на компьютере с адресом 192.168.0.100. Если файл прошивки назван по-другому, нужно указывать правильное имя вместо linux.bin. Команда не требует подтверждения и выполняется быстро. Если в ответ на ввод команды нет ничего — либо сервер tftp не работает по указанному адресу, либо он работает, но в его каталоге нет файла linux.bin, из-за этого придётся снова выключать маршрутизатор, ждать ответа на ping, запускать putty и т. д.
Результат выполнения команды:
RedBoot> load -r -b 0x80041000 -v -h 192.168.0.100 linux.bin¶
Using default protocol (TFTP)
|
Raw file loaded 0x80041000-0x803b9fff, assumed entry at 0x80041000
«fis create linux» — команда создаёт в файловой системе маршрутизатора файл linux из образа, записанного ранее в память (командой load). Результат:
RedBoot> fis create linux¶
. Erase from 0xbfc40000-0xbffb9000: . .
. Program from 0x80041000-0x803ba000 at 0xbfc40000: . .
prog_ok
flash_addr = 0xbfc40000
mem_addr = 0x80041000
entry_addr = 0x80041000
length = 0x379000
img_size = 0x379000
. Erase from 0xbffe0000-0xbfff0000: .
. Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
«fconfig» — команда редактирования конфигурации загрузчика маршрутизатора. Требует множества ответов. Процесс выполнения:
RedBoot> fconfig¶
Run script at boot: true ¶
Boot script:
.. fis load -l vmlinuz.bin.l7
.. exec
Enter script, terminate with empty line
>>
Введите три строки: «fis load -l linux», «exec» и пустую строку (в третьей строке просто нажмите Enter):
>> fis load -l linux¶
>> exec¶
>> ¶
Boot script timeout (1000ms resolution): 2
Эту и последующие подтвердите (просто нажмите Enter):
Boot script timeout (1000ms resolution): 2 ¶
Use BOOTP for network configuration: false ¶
Gateway IP address: ¶
Local IP address: 192.168.0.1 ¶
Local IP address mask: ¶
Default server IP address: 192.168.0.100 ¶
Console baud rate: 9600 ¶
GDB connection port: 9000 ¶
Force console for special debug messages: false ¶
Network debug at boot time: false ¶
Update RedBoot non-volatile configuration — continue (y/n)? ¶
Подтвердите (введите «y»):
Update RedBoot non-volatile configuration — continue (y/n)? y¶
. Erase from 0xbffe0000-0xbfff0000: .
. Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
«reset» — команда перезагрузки:
RedBoot> reset¶
Перепрошивка WiFi-роутера от D-Link прошивкой dd-wrt из-под Linux.
Стал у бедного админа виснуть роутер от D-Link, модель DIR-400.
И стал админ искать пути решения проблемы.
Погуглив полчаса наткнулся на прошивку от dd-wrt.com.
Поглядел на её возможности, обрадовался, и стал искать мануалов — как же всё таки эту прошивку залить (ибо стандартный прошивальщик, ребятами из D-Link писаный, не годится).
Нашёл мануал по заливке прошивки через DBG-console. Но вот беда — мануал на виндовых юзеров рассчитан, а винды под рукой нету, только Линукс праведный…
Ну, да ладно. Разобрался админ. Детали — под катом.
DBG-console
Есть у продутов от D-Link такая интересная фича — при включении железки в электросеть загрузчик на 2 секунды (значение по-умолчанию) поднимает сервер telnet на порту 9000.
Если за 2 секунды успеть залогиниться и послать железяке ‘^C’ — процесс загрузки остановится и мы получим доступ в инженерную консоль, в которой можно всякие интересные штуки делать — например, залить неофициальную похаченую linux-based прошивку. Приступим.
Подготовка
Немного теории:
Оговорюсь сразу — я дёргал питание роутера раз 20, с паузами 10-20 секунд, пока смог таки заставить железяку отдать мне инженерную консоль. В принципе это безопасно — достаточно дождаться полной загрузки роутера, и питание можно снова выдёргивать.
Ещё нюанс — линуховая версия telnet напрочь отказывается слать ‘^C’ по нажатию Ctrl-C вв момент подключения, пришлось включать моск — слать не один символ, а два, примерно так: при нажатом Ctrl жмём сначала V, потом C, отпускаем Ctrl.
И ещё — не бойтесь опечататься в инженерной консоли, все команды проходят валидацию, консоль просто не даст вам опечататься.
Приступим к практике:
Во-первых нам понадобится tftp сервер.
Ставим, кто как умеет (я юзал yum):
yum -y intall tftp-server
По-умолчанию tftp дёргается из xinetd, посему нужно немного подредактировать /etc/xinetd.d/tftp: выставить параметр disable = no и по вкусу отредактировать корневую директорию сервера (по-умолчанию — /tftpboot/, я её не менял).
Не забываем рестартануть xinetd.
Далее, идём сюда: dd-wrt.com/dd-wrtv3/dd-wrt/downloads.html
Там внизу — нечто вроде файлового менеджера, идём в директорию /stable/dd-wrt.v24 SP1/Consumer/Dlink/DIR-400 и качаем файлы linux.bin и dir400-firmware.bin в директорию /tftpboot/ (ну или на что вы там её изменили в конфиге).
Выдёргиваем из подопытного роутера все Ethernet-кабеля, отключаем всех WiFi-клиентов, втыкаемся в один из LAN-портов железки.
Назначаем своей машине статический IP 192.168.0.2, роутеру — 192.168.0.1.
Начинаем веселье
Дальнейшие действия требуют сосредоточенности.
Набираем в консоли
telnet 192.168.0.1 9000 (Enter пока не жмём, просто набираем для экономии времени — помните про 2 секунды?)
Выдёргиваем питание из роутера, ждём пару секунд, втыкаем питание, считаем до трёх, жмём Enter…
Далее идёт мой telnet session transcript, жирным выделено то, что я вводил в консоли, курсивом — мои комментарии.
Как перепрошить роутер d link dir 400
Репутация: 

Дух
Группа: Пользователи
Сообщений: 22
С нами с: 1-October 09

Краткое руководство по прошивке DD-WRT в D-Link DIR-400
Перед тем, как приступить к загрузке, учтите, что:
— загрузка сторонних прошивок лишает вас фирменной гарантии D-Link;
— ни авторы руководств, ни переводчик не несут никакой ответственности за все, что может произойти с вашим устройством при выполнении нижеописанной процедуры.
Что вам потребуется:
— Файл linux.bin, который можно скачать из папки прошивки для DIR-400;
http://depositfiles.com/files/thrv4l8hs
— Сервер TFTP, который можно скачать оттуда же (или другой, например, PumpKIN);
http://depositfiles.com/files/jzd5u4whj
— PuTTY — телнет-клиент, который можно скачать с сайта www.putty.org (или другой; однако использование встроенного телнет-клиента Windows не рекомендуется). Распакуйте сервер и поместите его в папку по вашему выбору.
http://depositfiles.com/files/7l8zuh7si
1. Соедините сетевым кабелем сетевой разъем вашего компьютера и порт WAN (!) DIR-400. Однако если на маршрутизатор когда-либо устанавливалась бета оригинальной прошивки версии 1.02В07, что потребовало перепрошивки RedBoot, то маршрутизатор будет открывать 9000 порт на LAN интерфейсе и в данном случае компьютер нужно подключить к LAN соответственно. (Питание маршрутизатора пока не включайте.)
2. Установите IP-адрес вашего компьютера 192.168.0.2 и маску подсети 255.255.255.0
Определение момента входа в телнет
В отличие от DIR-300, у DIR-400 нет обходных способов входа в телнет. Старый фокус с нажатием и удержанием кнопки Reset дает вход не в телнет, а в веб-сервер аварийного восстановления. Нам придется определить, в какой момент следует входить в телнет, ибо временной интервал, в течение которого возможен такой вход, составляет всего лишь две секунды.
1. Откройте окно командной строки.
2. Выдайте команду непрерывного пингования DIR-400:
ping -t 192.168.0.1
3. Включите питание DIR-400.
4. Определите, сколько времени прошло от момента включения питания до первого успешного пинга.
Способа гарантированного попадания в Redboot, к сожалению, нет. У меня получилось, что от включения питания до появления ответа на пинг проходит примерно 10 секунд. Имейте в виду, что я не пользовался секундомером, а считал секунды вслух.
Соединение с RedBoot
Теперь, когда у нас есть результат предыдущего эксперимента, мы готовы соединиться телнетом с DIR-400. Процесс достаточно прост:
— включите питание DIR-400;
— запустите телнет-сессию на адрес 192.168.0.1 и порт 9000 через примерно то же время после включения, которое вы определили ранее (т.е. время от включения питания до первого успешного пинга).
Может быть, вы сочтете нужным открыть несколько окон PuTTY и запускать соединение в каждом из них по очереди — какое-нибудь да соединится. Когда вы подключитесь к RedBoot, вы увидите на экране примерно следующее:
== Executing boot script in 1.140 seconds — enter ^C to abort
^C
RedBoot>
Альтернативный способ подключения к RedBoot
— подготовьте в PuTTY телнет-сессию на адрес 192.168.0.1 и порт 9000.
— Откройте рядом с PuTTY окно командной строки и запустите в нем команду непрерывного пингования адреса 192.168.0.1
ping 192.168.0.1 -n 9000 -t
— Включите питание DIR-400, дождитесь второго успешного пинга и немедленно после этого запустите телнет-сессию.
— Нажмите Ctrl-C, как только вы увидите на экране сообщение о выполнении бут-скрипта (если у вас PuTTY версии 0.60 или более поздней, то это необязательно).
Запуск сервера TFTP
Запустите сервер TFTP и положите файл linux.bin в его папку.
Я использовал PumpKIN(ссылка ниже)
Конфигурирование клиента PuTTY
1. Щелкните правой кнопкой мыши по заголовку окна PuTTY.
2. Выберите пункт «Change Setings. »
3. В окне «PuTTY Reconfiguration» установите для параметра «Close window on exit» значение «Never».
4. Нажмите кнопку «Apply» («Применить»)
В этом разделе описано, как загрузить прошивку DD-WRT в DIR-400. Помните, что некоторые команды требуют значительного времени (до 5 минут) для завершения. Поэтому НЕ ВЫКЛЮЧАЙТЕ устройство во время выполнения команд fis create.
== Executing boot script in 0.130 seconds — enter ^C to abort
^C
RedBoot> ip_address -l 192.168.0.1/24 -h 192.168.0.2
IP: 192.168.0.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.0.2
RedBoot> fis init
About to initialize [format] FLASH image system — continue (y/n)? y
*** Initialize FLASH Image System And a descriptor for the configuration data size = 10000
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×80ff0000-0×81000000 at 0xbffe0000: .
RedBoot> load -r -b 0x80041000 linux.bin
Using default protocol (TFTP)
Raw file loaded 0×80041000-0×803cffff, assumed entry at 0×80041000 RedBoot> fis create linux
… Erase from 0xbfc40000-0xbffcf000: …………………………………………………
… Program from 0×80041000-0×803d0000 at 0xbfc40000: …………………………………………………
prog_ok
flash_addr = 0xbfc40000
mem_addr = 0×80041000
entry_addr = 0×80041000
length = 0×38f000
img_size = 0×38f000
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×80ff0000-0×81000000 at 0xbffe0000: .
RedBoot> fconfig
Run script at boot: true
Boot script:
.. fis load -l vmlinux.bin.l7
.. go
Enter script, terminate with empty line
>> fis load -l linux
>> exec
>>
Boot script timeout (1000ms resolution): 2
Use BOOTP for network configuration: false
Gateway IP address:
Local IP address: 192.168.0.1
Local IP address mask:
Default server IP address: 192.168.0.100
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration — continue (y/n)? y
… Erase from 0xbffe0000-0xbfff0000: .
… Program from 0×80ff0000-0×81000000 at 0xbffe0000: .
RedBoot> reset
Теперь у вас новый DIR-400!
Все вышеописанные манипуляции делал сам,если возникли проблемы пишите..
