воскресенье, 30 декабря 2012 г.

Востанавливаем „убитый“ FritzBox




Автор:    Alex Gilz
11.04.2011 22:07

Вариант 1, Recovery.exe

      AVM предлагает программы восстановления боксов различных моделей, с помощью которых можно восстановить Box который не отвечает на запросы. В интернете можно найти программу recovery.exe (ftp://ftp.avm.de) которая поможет вам в этом начинании. Найти необходимый имидж на сервере довольно просто, в папке для нужной модели лежит актуальная бета прошивка для скачивания, а в самораспаковывающемся архиве найдется также подходящий файлик для восстановления  Box’a.
   Для восстановления необходимо подключить бокс напрямую к компьютеру. При первом старте recovery.exe изменяет один параметр в реестре и просит перезапустить компьютер. Изменения в реестре касаются DHCP-Mediasensing что позволяет ускорить обмен сетевых настроек. После рестарта компьютера программа предложит включить FritzBox, далее следует попытка распознания сетевого физического интерфейса и пробное соединение с Bootloader ADAM2 бокса. 
    Иногда приходится повторять этот шаг несколько раз, не отчаивайтесь, если не получилось с первого раза. Так как во время восстановления полностью стирается Flash и все предидущие установки стираются.

Вариант 2. Ручная установка.


      Все действия которые проделывает программа восстановления можно провести в ручном режиме, но только в том случае если recovery.exe не помогла либо вы являетесь специалистом и знаете на что идете. Дело в том что во время старта Bootloader ADAM2 включает, на короткий промежуток времени (несколько секунд), FTP-Server который доступен по адресу 192.168.178.1. Трюк заключается в том что бы отослать команду FTP-Connect в нужное время, если же во временном интервале не последовало FTP команды на соединение, то Bootloader  передает управление в Linux FritzBox. 
      Кстати эту процедуру можно опробовать и на рабочем боксе, тогда в критической ситуации у вас уже будет навык и чувство времени когда надо делать подключение. Перед началом надо убедится что сетевые установки компьютера верны. 

Итак IP: 192.168.178.2, сетевая маска 255.255.255.0 

Запускаем CMD  и задаем ftp 192.168.178.1, после этого включаем FritzBox. Как только на компьютере в первый раз появится „сетевое соединение“ нажимаем Enter. Если вы получили приглашение на ввод имени пользователя значит у вас получилось, в противном случае придется повторить процедуру сначала. Имя  пользователя и пароль „adam2“.
Так же как и в первом варианте предварительно не мешало бы отключить DHCPMediaSense, для этого необходимо добавить в ключ

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

Новую переменную REG_DWORD с именем DisableDHCPMediaSense и значением 1. 
После этого необходимо перестартовать ПК.  Этот трюк позволяет несколько увеличить временной интервал на который включается FTP сервер. Что именно изменяется в системе с изменением параметра в регистре я описывать не буду, это можно найти в интернете, но после успешного восстановления желательно удалить этот ключ из реестра.
Перед тем как начать работу с  ADAM2 рассмотрим устройство системы FritzBox’a.

mtd0: Filesystem, root, 3 bis ca. 6 MByte
mtd1: Linux Kernel, 704 KByte
mtd2: ADAM2 Bootloader, 64 KByte
mtd3, mtd4: 2 блока по 128 или 256 KByte (TFFS) для записи конфигурации

Следующая команда показывает расположение блоков с стартовыми и конечными адресами на рабочем боксе если вы зайдете на бокс через telnet.

cat /proc/sys/dev/adam2/environment

в некоторых моделях объеденены блоки файловой системы mtd0 и ядра mtd1, в этом случае стартовые и конечные адреса идентичны и их размер равен 0.  mtd1 в данном случае заметно больше по объему.

И так мы уже залогинились в  ADAM2 при помощи команды

quote GETENV mtd0   можно посмотреть размер блока mtd0.

      В принципе теперь просто необходимо переписать блоки 0 и 1 рабочим имиджем. Как это сделать?
Решение довольно простое. Оба блока имеются в наличии в имидже который вы скачали с сервераAVM.  Несмотря на то что скачаный файл имеет расширение .image
    По своей структуре это обыкновенный .tar файл. Переименуем его в tar и откроем допустим WinRar’ом. Нам необходимы два файла kernel.image и  filesystem.imageВ моделях где 2 блока объединены размер filesystem.image равен 0.
Теперь необходимо залить в нужное место флеш-памяти  эти два файла.

Заливаем Kernel-Update.

      В боксах в которых файловая система и ядро разделены на 2 блока, как минимум заливка ядра проходит без проблем. Последовательность команд следуюшая:

debug
bin
quote MEDIA FLSH
put kernel.image “kernel.image mtd1“

      Не паникуйте если не увидите никакой реакции на экране, команде put требуется порядка 30 сек и более, перед тем как начнется заливка блок должен быть подготовлен (стерт). После этого начинается сама заливка и все происходит за считанные секунды. 
     Далее следует заливка для 2 блока (файловая система). Тот кто думает что все пройдет также легко, глубоко ошибается. Во первых блок намного больше по размеру соответственно чистка флеша займет больше времени, за это время FTP-Client оборвет соединение по timeout’у, кроме того ADAM2-FTP переваривает только небольшие пакеты не более 1 Mbyte, при передаче более емких пакетов он просто загибается. 
     Но и тут имеется решение, необходимо разделить весь filesystem.image на дольки которые бы можно было передать не опасаясь обрыва соединения. Для дележки можно использовать HJSplit. На практике очень хорошо себя показали дольки по 512 Kbyte и так делим весь файл на части по 512, получится порядка 6 частей. Перед тем как мы начнем заливку в бокс необходимо рассчитать стартовый и конечный адрес для каждой части в отдельности.
Наберите комманду

qoute GETENV mtd0

с помощью ее мы узнаем длинну всего блока, например (0x900C0000 bis 0x903C0000)  но перед тем как загружать части нашего имеджа надо, проведем корректировку, так как мы записываем не весь блок целиком, а только его часть. 
Стартовый адрес остается 0x900C0000 , но конечный теперь 0x9014000Соответственно необходимо поменять и системную переменную с помощью команды

quote SETENV mtd0,0x900C0000,0x9014000

Теперь можно загрузить первую часть

debug
bin
quote SETENV mtd0,0x900C0000,0x90140000
quote MEDIA FLSH
put filesystem.image.001 “filesystem.image.001 mtd0“

Для второй части имиджа производим вычисление следующего блока и смешаем стартовый и конечный адреса соответственно.
Полный набор команд для второй части имиджа выглядит для данного примера следующим образом.

debug
bin
quote SETENV mtd0,0x90140000,0x901C0000
quote MEDIA FLSH
put filesystem.image.002 “filesystem.image.002 mtd0“

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

Это свободный перевод статьи из журнала techchannel.