субота, 1 січня 2011 р.

Ставимо прошивку dd-wrt на роутер dir-400


Опис як ставити dd-wrt на роутер dir-400 з-під вінди (англійською) є на сайті dd-wrt. Нижче є його переклад українською і адаптація під Лінукс, а саме Ubuntu 10.10.
  1. Скачуємо власне прошивку з сайту dd-wrt.
  2. Встановлюємо клієнт телнет: putty (на відміну від вінди це добро ставиться з репозиторію).
  3. Встановлюємо TFTP сервер: tftpd-hda (теж є в репозиторії).
  4. Заливаємо linux.bin (є у скачаній прошивці) у /var/lib/tftpboot.
  5. Перевіряємо, чи сервер піднявся: пишем в терміналі ps -ef | grep tftpd Якщо є щось на зразок цього
    root      2357     1  0 10:05 ?        00:00:00 /usr/sbin/in.tftpd --listen --user tftp --address 0.0.0.0:69 --secure /var/lib/tftpboot
    то все добре, інакше - рестартуєм машину.
  6. Змінюємо локальну IP адресу на 192.168.0.2, маску підмережі на 255.255.255.0. Для цього можна зробити нове мережеве з’єднання, а у з’єднанні по замовчуванню вимкнути опцію "з’єднувати автоматично". Після закінчення усієї процедури достатньо буде увімкнути цю опцію назад.
  7. З’єднуємо комп’ютер езернетівським кабелем з WAN портом роутера.
  8. Готуємо телнетівську сесію (але не запускаємо її!) - стартуєм термінал і і пишемо таку команду putty -telnet -P 9000 192.168.0.1 (просто пишемо, Enter в кінці не тицяєм).
  9. Вмикаємо живлення на роутері і чекаєм, поки він не завантажиться (близько 30 секунд).
  10. В новому вікні терміналу починаємо пінгувати роутер: ping 192.168.0.1 відповіді на пінг бути не повинно.
  11. Вимикаємо і вмикаємо ще раз живлення на роутері. Уважно слідкуємо за терміналом з пінгом і тримаємо термінал з телнетом напоготові.
  12. Після другого успішного пінгу запускаємо телнет сесію (Enter). Після цього термінал з пінгом уже не потрібен, далі все робиться у терміналі з телнетом.
  13. Якщо все зроблено правильно, термінал з телнетом покаже таке:
    == Executing boot script in 1.140 seconds - enter ^C to abort
    ^C 
    RedBoot>
  14. Вводимо в терміналі команду ip_address -l 192.168.0.1/24 -h 192.168.0.2. Тремінал повинен виглядати так:
    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
  15. Далі - fis init:
    RedBoot> fis init
    About to initialize [format] FLASH image system - continue (y/n)?
  16. Приймаємо пропозицію - y:
    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 0x80ff0000-0x81000000 at 0xbffe0000: .
  17. Вводимо load -r -b 0x80041000 linux.bin:
    RedBoot> load -r -b 0x80041000 linux.bin
    Using default protocol (TFTP)
    Raw file loaded 0x80041000-0x803bafff, assumed entry at 0x80041000
    Відповідь буде не відразу. Потрібно почекати, можливо, навіть кілька хвилин.
  18. Вводимо fis create linux:
    RedBoot> fis create linux
    ... Erase from 0xbfc40000-0xbffba000: ........................................................
    ... Program from 0x80041000-0x803bb000 at 0xbfc40000: ........................................................
    prog_ok
    flash_addr = 0xbfc40000
    mem_addr = 0x80041000
    entry_addr = 0x80041000
    length = 0x37a000
    img_size = 0x37a000
    ... Erase from 0xbffe0000-0xbfff0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . 
    Тут знову ж таки відповідь буде не відразу. Треба бути терплячим і чекати десь до 10-ти хвилин. У жодному разі не можна вимикати живлення на роутері, бо роутер може перетворитись на брухт!
  19. Вводимо fconfig:
    RedBoot> fconfig 
    Run script at boot: true 
  20. Погоджуємося (Enter):
    Run script at boot: true
    Boot script:
    .. fis load -l linux
    .. exec
    Enter script, terminate with empty line
  21. Вводимо fis load -l linux:
    >> fis load -l linux
  22. Вводимо exec:
    >> exec
  23. Далі - просто Enter:
    >> 
    Boot script timeout (1000ms resolution): 2 
  24. Знову Enter:
    Use BOOTP for network configuration: false
  25. Ще раз Enter:
    Gateway IP address: 
  26. І ще раз Enter:
    Local IP address: 192.168.0.1
  27. І ще раз Enter:
    Local IP address mask: 255.255.255.0
    У мому випадку значення маски було відсутнє, тому я його ввів вручну.
  28. І ще раз Enter:
    Default server IP address: 192.168.0.100 
  29. І ще раз Enter:
    Console baud rate: 9600 
  30. І ще раз Enter:
    GDB connection port: 9000 
  31. І ще раз Enter:
    Force console for special debug messages: false  
  32. І ще раз Enter:
    Network debug at boot time: false 
  33. І ще раз Enter:  
    Update RedBoot non-volatile configuration - continue (y/n)? 
  34. Погоджуємося - y:
    Update RedBoot non-volatile configuration - continue (y/n)? y
    ... Erase from 0xbffe0000-0xbfff0000: .
    ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
  35. Вводимо reset:
    RedBoot> reset
  36. Перепід’єднумо комп’ютер до LAN-порта роутера.
  37. Знову активуємо мережеве з’єднання по замовчуванню. Або змінюємо локальну IP адресу на 192.168.1.2, маску підмережі на 255.255.255.0
Усе. Роутер знаходиться за адресою http://192.168.1.1/

Свій роутер я вирішив перепрошити, бо рідна D-Link-івська прошивка кепська. Особливо, коли йдеться про торенти з великою кількістю пірів (як от образ поточної версії Ubuntu). Роутер висне і без ребуту на відвисає :(
Під dd-wrt роутер став зовсім новою людиною :) Протягом кількох тижнів він не вимикався взагалі. Ну, якщо бути зовсім відвертим, по вимикався, коли... у наших рідних електромережіах припинявся рух електронів (так, це камінь в бік Львівобленерго). Одним словом, прошивка мені дуже сподобалась, і я відправив її розробникам кілька баксів (як пожертву).

    Flattr this

    Немає коментарів:

    Дописати коментар

    Translate