Сброс настроек dns 320l

Обновлено: 04.07.2024

Хочу поделиться историей о том, как я чинил примус свой домашний NAS D-Link DNS-325.

Джедайское гугление дало надежду на подключение к последовательному порту DNS-325 и возможной диагностики. Необходимо подобраться к порту, плата легко достаётся после отключения жёстких дисков и вывинчивания 4-х винтов сзади NAS (шлицы находятся под резиновыми заглушками).

Детали о распиновке UART на плате и способе подключения можно найти здесь. Оставалась одна проблема. UART на плате DNS-325 требует TTL 3.3V и может сгореть при более высоких напряжениях. У меня не оказалось RS-232-TTL 3.3V конвертора, а заказанный кабель на eBay так и не пришёл в срок. Связавшись с продавцом, я получил ответ, мол, видимо, потерялся, бывает. Деньги он вернул, но нужно было искать другой кабель или… На помощь пришла идея использовать завалявшуюся Raspberry PI (или просто Малину), на борту которой есть 3.3V UART.

Возможно, повторюсь, рассказывая о том, как настроить Малину с «нуля», но я сам был бы рад прочитать об этом в одном месте и последовательно.

Настройка Raspberry PI

  • Собственно, сама Raspberry PI;
  • Акриловый корпус;
  • SD карта;
  • Коннектор на GPIO/UART пины, блок питания etc.

Далее навигация по меню: «8 Advanced Options» --> «A7 Serial»:

Would you like a login shell to be accessible over serial? Current setting: yes

Выбираем «No» и перезагружаемся.

Установка и настройка терминала

apt-get install minicom

Запускаем эмулятор терминала для работы с последовательным портом:

minicom -D /dev/ttyAMA0 -b 115200 -8

После того, как соответствующие пины последовательного порта DNS-325 подключены к Raspberry PI, наступает самый долгожданный момент включения устройства. Сейчас, собственно, хоть что-то станет ясно, почему NAS после включения входит в «крутое пике» и не подает признаков жизни. Скорость порта и прочие настройки установлены верно, само устройство оказалось «живым» и в консоли Малины побежал лог загрузки.
Раскрыв спойлер, можно увидеть весь лог загрузки:

** MARVELL BOARD: DB-88F6281A-BP LE

U-Boot 1.1.4 (May 16 2011 — 10:40:38) Marvell version: 3.4.14.DNS-325.03

U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CEE80

Soc: MV88F6281 Rev 3 (DDR2)
CPU running @ 1200Mhz L2 running @ 400Mhz
SysClock = 400Mhz, TClock = 200Mhz

DRAM CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6
DRAM CS[0] base 0x00000000 size 256MB
DRAM Total size 256MB 16bit width
Flash: 0 kB
Addresses 8M — 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M — 7M): Done
NAND:128 MB

CPU: Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

USB 0: host mode
PEX 0: interface detected no Link.
Net: egiga0 [PRIME]
Hit any key to stop autoboot: 0

NAND read: device 0 offset 0x100000, size 0x300000
load addr… =a00000

3145728 bytes read: OK

NAND read: device 0 offset 0x600000, size 0x300000
load addr… =f00000

NAND read: device 0 offset 0x7100800, size 0x500000
load addr… =a00000

CPU Interface
— SDRAM_CS0 . base 00000000, size 256MB
SDRAM_CS1 . base 10000000, size 256MB
SDRAM_CS2 . disable
SDRAM_CS3 . disable
PEX0_MEM . base e8000000, size 128MB
PEX0_IO . base f2000000, size 1MB
INTER_REGS . base f1000000, size 1MB
NFLASH_CS . base fa000000, size 2MB
SPI_CS . base f4000000, size 16MB
BOOT_ROM_CS . no such
DEV_BOOTCS . no such
CRYPT_ENG . base f0000000, size 2MB

Marvell Development Board (LSP Version KW_LSP_4.3.4_patch30)-- DB-88F6281A-BP Soc: 88F6281 A1 LE

Warning: Giga 1 is Powered Off

/etc/rc.sh: line 17: system_init: not found
starting pid 302, tty '': '-/bin/sh'

BusyBox v1.11.2 (2010-11-17 11:44:30 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

Для доступа в shell необходимо ввести код 5784468 .
После беглого осмотра в консоли стало ясно, что NAS загрузился в single-user mode. Ничего не смонтировано кроме корневой системы.
Очевидно, что процесс загрузки не продолжается именно из-за проблем с монтированием основного файлового дерева из squash образа:
SQUASHFS error: Major/Minor mismatch, trying to mount newer 4.0 filesystem
SQUASHFS error: Please update your kernel
mount: wrong fs type, bad option, bad superblock on /dev/loop0,

Сам файл, в котором squash образ, выгружается из внутренней flash в файл /usr/local/tmp/image.cfs с помошью nanddump .
mount -o loop /usr/local/tmp/image.cfs /mnt приводило к такой же ошибке, что и при загрузке.

После чего U-Boot грузил образ другого, более старого ядра: Image Name: Linux-2.6.22.18

Забегая вперёд, хотелось бы отметить, что область "mini firmware" внутренней flash, откуда загрузился образ с ядром в аварийном режиме, по-видимому, предназначена для подобных ситуаций. Если бы у меня стояла более ранняя прошивка, загрузка бы прошла успешно и я бы и не узнал о повреждении. Но в прошивке 1.04 новое ядро 2.6.31.8 и поэтому монтирование образа сжатой файловой системой (опять же, нового формата) на старом ядре завершалось ошибкой.

Гугление не дало готового решения, но вдохновило на jugaad, а именно: используя возможности U-Boot перезаписать uImage образ во внутренней flash памяти с помощью вырезанного образа из стоковой прошивки.

Достаём образ uImage с ядром из прошивки

Скачиваем стоковую прошивку с сайта D-Link: DLINK_DNS325.1.04b05 (на тот момент у меня стояла именна эта версия).
Каким-то образом необходимо было достать образ с ядром и попробовать перезаписать в повреждённую область.
Очень полезным инструментом оказался binwalk :


Вырезанный uImage образ попробуем записать во внутреннюю flash память начиная с адреса 0x100000 .

Установка и настройка Kermit

Для того, что передавать бинарные файлы в U-Boot нам понадобится достаточно древний протокол Kermit.

apt-get install ckermit

Создаём .kermrc с таким содержимым:

Загрузка расширенного U-Boot

Чтобы попасть в U-Boot командную строку, необходимо успеть прервать процесс загрузки нажав Пробел и «1» в момент, когда в консоли minicom на эту операцию отводится 2 секунды:
PEX 0: interface detected no Link.
Net: egiga0 [PRIME]
Hit any key to stop autoboot: 1

К сожалению, я не обнаружил в стоковом U-Boot команды loadb , которая позволяет загружать бинарный файл по указанному адресу в памяти.
Поэтому прийдётся скачать и сконфигурировать утилиту для загрузки расширенного U-Boot через последовательный порт.

Необходим компилятор для сборки на Малине:
apt-get install gcc

(Если вы подключились с помощью кабеля USB-Uart-TTL и производите сборку на x86 платформе, необходимо установить ARM-компилятор: export CROSS_COMPILE=arm-linux-gnueabi- )

Запускаем утилиту для передачи U-Boot:
root@raspberrypi:

Всё готово к передаче, выключаем NAS, ждём 10 с, включаем и следим за процессом передачи u-boot.kwb .
Процесс займёт несколько минут. В консоле вы сможете видеть процесс передачи в виде бегущих точек.
По окончании передачи необходимо прервать загрузку в момент Hit any key to stop autoboot: 4 (см. выше).
Выйдем из программы с помошью Ctrl+/ затем "c"

Передача образа и запись во flash


Запускаем kermit на Малине и инициируем передачу файла uKernel, который мы вырезали ранее из прошивки:
root@raspberrypi:


Здесь, в командной строке U-Boot, даём команду на приём файла по адресу 0x000000 (загружаем мы временно для перезаписи, поэтому базовый адрес не важен):

U-Boot переходит в режим ожидания файла, а мы выходим в командную строку Kermit нажатием Ctrl+\ и "c" и передаем файл:

(/root/) C-Kermit>send uKernel


Через несколько минут файл передан и готов к записи во flash:

=> nand erase 0x100000 0x300000 - Очистка flash области 0x100000-0x300000
=> nand write 0x000000 0x100000 0x300000 - Запись из памяти со смещением 0x000000

ВСЁ. можно перезагрузиться.
NAS успешно загрузился с установленными дисками и USB флешкой как ни в чём не бывало.
Для перестраховки я загрузил последнюю версию прошивки стандартным путём через страничку управления.

NAS служил файлопомойкой, стоял raid 1 с двумя WD Red 1TB.
Как-то ночью выключался свет. И все бы ничего, но мой 320 мигал синим светодиодом как гирлянда и не запускался. Поискав в инете и найдя кучу инфы принялся его восстанавливать.

Что имеем:
Мигающий и почти бесполезный D-Link DNS-320



Xubuntu 15.10
утилита dns323-firmware-tools-master
прошивка Alt-F-0.1RC4.1-DNS-320-rev-A1A2.bin под мою ревизию платы, скачана с sourceforge
Windows 7
tftpd под вин
putty под вин
USB to TTL адаптер

Сразу скажу что во всем этом не силен, делалось все методом проб и ошибок, читая мануалы за чашкой кофе.

1. Для начала на убунте поставим ruby и ffi:

apt-get install ruby
apt-get install ruby2.1-dev
gem install ffi

2. Скачаем утилиту dns323-firmware-tools:

3. Копируем прошивку Alt-F-0.1RC4.1-DNS-320-rev-A1A2.bin в папку скачанной утилиты dns323-firmware-tools, мне было удобно через WinSCP.

4. Извлекаем из прошивки образ ядра и рамдиска:

./splitdns323fw -k uKernel -i uInitrd -d uDefaults -s uSquashfs Alt-F-0.1RC4.1-DNS-320-rev-A1A2.bin 5. После успешного окончания в той же папке появятся нужные нам файлы uKernel и uInitrd. Качаем tftpd на win7, распаковываем, и в эту папку копируем файлы uKernel и uInitrd.

6. Запускаем tftpd32.exe, выбираем нашу сетевую карту с нашим ip, у меня 192.168.0.70

7. Подключаем пины через USB to TTL адаптер к нашему nas и вставляем в комп с win7:

На моей плате это разъем JP3.
Пины справа на лево:
1pin (квадратный) TXD
2pin отсутствует
3pin 3.3V НЕ ПОДКЛЮЧАЕМ (на хабре автор жаловался, что спалил несколько TTL адаптеров, подключив этот пин. Я не подключал и без него все работает)
4pin GND
5pin RXD

Если у вас не выходит, поменяйте RX и TX местами, в статьях эти пины отображены наоборот.

8. Открываем putty, устанавливаем порт подключения (посмотреть в Диспетчере устройств -> Порты COM и LPT) скорость 115200
В категории serial Data bits – 8, Flow Control — None. Жмем Open.

9. Подключаем питание NAS, подключаем LAN, и нажимаем кнопку включения. Пошла загрузка, ждем надпись: If you want to stop u-boot booting, then press space then 1 when prompted to press any key
Быстро жмем «Пробел», потом «1». Получаем строку ввода:

admin94:

привет!

я смогу на нём держать сервера counter strike 1.6?

А они есть под Linux? Если только под винду, то нет.

Если существуют под Linux, скомпилированные под процессоры ARM (. ) либо в виде исходников, то теоретически возможно, но придётся повозиться.

Для ваших целей скорее имеет смысл купить/собрать недорогой комп.

Лицей БГУ Team. Eric A1018s-Eric R520m-SE T630-SE K800i-HTC HD2-HTC Sensation-iPhone 5-iPhone 7-iPhone 12 Pro

купил такую штуку потестить, уж очень мало про неё негатива в отзывах на просторах интернета

плюсы
1.стабилен - ни виснет, не портит файлы ни прочие неудобства не доставил за неделю негуманного с ним обращения
2.много настроек
3.возможность добавления приложений
4.приём около 25 мегабАйт\отдача 30 мегабАйт в сек

минусы
1.шумный вентилятор охлаждения
2. глюки при добавлении второго винта - если в dns-320 сначала жил один винт и через некоторое время вы решили добавить второй, процесс его форматирования для работы отдельным диском зависает, нужны танцы с бубном

Планирую купить как торрент-качалку. Кто-нибудь юзал для этого?

Использую. Родной клиент ни о чем, при установке Transmission все намного лучше + появляется удаленное администрирование качалки.

А какие венники в него посоветуете из представленных в каталоге онлайнера на 3 Тб. планирую хранить фильмы, музыку. и как в нем DLNA работает? не криво?)

Винты ставь на свой цвет и вкус, DLNA работает.

появился вопрос на счет проца и оперативы. хватит ли их если у меня будет под 6ТБ музыки фильмов и прочего мультимедиа хлама, чтобы хоть половину всего этого он держал на раздаче через торрент?

ASID
А сколько там USB портов?
У меня 2 внешних усб веника, хочу подключить к нему оба (на вениках NTFS). Он сможет только читать их содержимое?

DimaStorm, c прошивки 2.01 поддерживаются 3тб диски. После установки Transmission все будет отлично с раздачей.

jo_klassik, отлично с Transmission

DimaStorm, c прошивки 2.01 поддерживаются 3тб диски. После установки Transmission все будет отлично с раздачей.

jo_klassik, отлично с Transmission

Да я тоже поставил трансмишн. Уже скачал 1тб при помощи него. Если не больше)

Планирую взять для домашнего хранилища фильмов. Какой лучше винт, на 5000 или 7000? И можно ли ставить один на 5000 а второй на 7000?

Люди есть вопрос потянет ли 2 винта по 3 ТБ?

Внешний доступ работает, правда с нашим Белтелекомом только через 443 порт и по SSL. Из-за низкой исходящей грузится не особо быстро, но терпимо.

всем привет!
dsn-320 + gigabit switch = скорость записи

8mb-s
ничего не качаю, не раздаю, не смотрю с него.

. та же ситуация если качаю торрент 6mbit-s + смотрю с dsn на плазме HD фильм

может, кто подскажет, что можно сделать?
уже 3 суток заливаю на него инфу со скоростью 8 mb-s

прошивка 2.02 от 09/23/2011, 1 винт red3Tb, правый слот, скорость сети выставил 1000mbit-s

proventus:

всем привет!
dsn-320 + gigabit switch = скорость записи

8mb-s
ничего не качаю, не раздаю, не смотрю с него.

. та же ситуация если качаю торрент 6mbit-s + смотрю с dsn на плазме HD фильм

20гб

может, кто подскажет, что можно сделать?
уже 3 суток заливаю на него инфу со скоростью 8 mb-s

прошивка 2.02 от 09/23/2011, 1 винт red3Tb, правый слот, скорость сети выставил 1000mbit-s

Уверен у вас сеть не гигабитная. Сетевая в ПК, маршрутизатор/свич итд, все узлы связи должны быть гигабитными.
Запись/Чтение - последовательное?
Винт - 7200rpm или 5400rpm?
Утверждать не буду, но насколько я помню то в мануале Длинка есть список проверенных на стабильность и совместимость работы винтов и винты на 3ТБ точно не в списке.

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

25-30 метров.

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

Как видно по винту он 5400 rpm, что уже по сути снижает время доступа\записи\чтения на треть и как я говорил DNS 320 поддерживает винты до 2Tb. + Для достижения максимальных показателей используйте последовательную запись\чтение.

Я надеюсь здесь собрать все, что мне кажется интересным. Возможно, это понравится и Вам.


У меня этот чудо девайс работает уже полтора года. Работает отлично, и особых нареканий к нему нет. Разве что стоковая прошивка совсем уж бедная по своим возможностям, и чтобы более полноценно использовать D-Link DNS 320l, желательно установить на него fun_plug, или прошить альтернативной прошивкой Alt-f.

fun_plug я поставил в первую очередь, и он мне очень понравился. Можно ставить дополнительные программы, использовать всю мощь доступа по ssh, в том числе и для бэкапа важных данных через rsync. Все просто замечательно было с fun_plug, если бы не сильно урезанное ядро системы. Уж не знаю зачем, но D-Link в своем firmware из ядра выпилил модуль iptables, и без него невозможно настроить nat, маскарадинг и прочие прелести. А мне вот что-то вдруг захотелось развернуть на своем аппарате OpenVPN, и я решил таки сменить прошивку на Alt-f.

Кстати, Alt-f — молодцы, сделали весьма качественный продукт. Комьюнити проекта пока не очень большое, но оно динамично развивается. Мне прошивка в целом понравилась, но в ней есть и минусы:

1. Веб интерфейс D-Link DNS 320l в прошивке Alt-F весьма убог по сравнению с родым firmware D-Link. Это не так критично, если конфигурировать устройство через консоль, но все равно — неприятно.

2. По умолчанию после установки прошивки у меня не запустился важны демон — dns320l-daemon. Он снимает показания с датчиков температуры и без него вентилятор охлаждения просто не запустится. А это уже серьезно, поскольку чревато перегревом как процессора, так и винчестеров и выходом их из строя. Проблема эта легко устраняется, но надо знать, что проблема существует.

3. Самое раздражающее в новой прошивке — это невозможность выключить сетевое хранилище программно. Нажатие на кнопку Power не выключает его, но останавливает работу всех сервисов и переводит коробочку в режим ожидания. И выключить хранилище по расписанию уже не представляется возможным, оно просто уйдет в спячку и дальше будет гудеть своим вентилятором.

В общем, поигравшись вдоволь с прошивкой Alt-F, я все-таки решил откатиться к прошивке оригинальной D-Link. И тут случилось страшное, во время перепрошивки хранилища пропало питание — и D-Link DNS 320l перестал загружаться. Совсем. Кнопка сброса к заводским установкам не помогла — достучаться до хранилища не было никакой возможности.

Последней надеждой была возможность подключения к хранилищу через serial console, для этого надо было найти соответствующие места на плате хранилища и припаять к ним провода. Но пайка проводов — это полбеды; настоящей проблемой было найти переходник RS232-ttl или USB-ttl. Причем DNS 320l использует низковольтный ttl (3.3 вольта), поэтому далеко не факт, что подойдет переходник на 5-вольтовый TTL. У нас в городе так и не удалось найти ни одного готового переходника, или подходящего телефонного дата-кабеля для создания такого переходника. Пришлось заказывать переходник в Китае, на AliExpress.

Образ рамдиска или ядра был битым во флеш-памяти, я мне надо было его перезаписать по новой. Говорят, как-то можно перезаписать флеш-память командами из u-boot, но я поступил по-другому.

Сначала я скачал firmware Alt-f, и с помощью утилиты dns323-firmware-tools-master извлек из firmware образ ядра и рамдиска:

На выходе получил файлы uKernel, uInitrd, uDefaults и uSquashfs (последние 2 не понадобились). Далее, развернул сервер tftp и в его корень положил полученные файлы. Потом, при загрузке хранилища в нужном месте нажал пробел и единицу, в результате получил доступ к командной строке u-boot:

Про «Hit any key to stop autoboot» они конечно переврали, надо нажимать строго Пробел и потом цифру 1. Дальше последовательность действий была такой:

Оживление почти убитого D-Link DNS 320l : 91 комментарий

у меня кирпич dns-323
говорит:
** LOADER **
** MARVELL BOARD: RD-88F5182-NAS-2 LE

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz

moo, изначально у тебя было битое ядро и битый initrd. Ты успешно перезаписал новое ядро вместо старого, но initrd остался битым, поэтому ядро успешно загружается. Но оно не может найти точки монтирования, поэтому и сваливается в kernel panic.

Теперь тебе надо найти нормальный образ рамдиска (initrd) для своего устройства, и загрузить его во флеш-память. Адрес загрузки образа рамдиска для DNS 323 я не знаю, но у меня на DNS 320l он загружался по адресу 0xf00000. Возможно, у тебя адрес будет таким же.

** LOADER **
** MARVELL BOARD: RD-88F5182-NAS-2 LE

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz

posix_main begin
Detect 5182 chip
May 29 09:06:13 crond[735]: crond (busybox 1.11.2) started, log level 8

detect phy 1111
kill process
May 29 09:06:14 crond[753]: crond (busybox 1.11.2) started, log level 8

Да, отлично, почти получилось. В логах видно, что сетевая карта не получила айпишник от DHCP-сервера.

Ссылки на скачивание частей прошивки:

Отпишись потом, помогло или нет.

Спасибо за информацию.

Здравствуйте! Меня зовут Дмитрий! Я прошу у Вас помощи. У меня есть DNS-320 Rev. A1 И после прошивки его на альтернативную прошивку ALT-F он перестал загружаться. Купил на Aliexpress USB-TTL переходник и добрался до загрузки данного устройства во время включения. Вот что он выдаёт:

** MARVELL BOARD: DB-88F6281A-BP LE

U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CEE80

Soc: MV88F6281 Rev 3 (DDR2)
CPU running @ 800Mhz L2 running @ 400Mhz
SysClock = 200Mhz , TClock = 166Mhz

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

USB 0: host mode
PEX 0: interface detected no Link.
Net: egiga0 [PRIME]
Hit any key to stop autoboot: <0

3145728 bytes read: OK

Warning: Giga 1 is Powered Off

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

Hit any key to stop autoboot:

нажать на пробел, и потом на единицу. Если попадете в командную строку U-boot, ваш NAS можно попробовать оживить. Вам понадобится разобранный на части (uKernel, uRamdisk) образ прошивки (Alt-F или D-Link), еще надо будет развернуть у себя tftp-сервер и соединить NAS с сервером. А дальше по инструкции из статьи, посмотрите после слов «Hit any key to stop autoboot»

Дмитрий, я выложил свою разобранную прошивку Alt-F-0.1RC4-DNS-320L-rev-A1, которую использовал для оживления своего NAS:

Я только не уверен, что эти образы подойдут к Вашему оборудованию, все же у меня D-Link DNS 320l, там железо немного другое.

Программа splitdns323fw у меня сохранилась, код у нее открыт и она написана на Ruby. Она требует отдельно установленные модули ffi и optparse; поэтому она у Вас работать не будет, если у Вас Ruby с необходимыми модулями не установлен.

Предлагаю вот что, Вы мне даете ссылки на прошивку для Вашего оборудования (Alt-F или D-link, не важно), а я у себя локально извлеку ядро, рамдиск и файлы по умолчанию, и выложу где-нибудь у себя. Ну а Вас попрошу потом рассказать, получилось ли оживить Ваше устройство, или нет.

С уважением, Дмитрий!

Видимо, не та версия программы. Я скачал образ прошивки Alt-F-0.1RC4.1-DNS-320-rev-A1A2.bin, и вот что у меня получилось:

Здравствуйте, Ed!
Скачал, выложенные Вами файлы. Сегодня буду пробовать. Сегодня же или завтра вечером Вам отпишусь о проделанной работе. Огромное Вам спасибо за поддержку.

Но рано радоваться.

В Web-интерфейс я так и не смог войти. Проверил в роутере ip-адреса, нашёл тот, который выбрал себе NAS-сервер, попытался по нему зайти через браузер, но так и не смог. Браузер сказал, что такой страницы не существует.
Хочу привести лог своей работы:

Опять же убираю опции -d и -s, оставляю -k и -i
Ввожу снова команду:
splitdns323fw -k uKernel -i uInitrd Alt-F-0.1RC4.1-DNS-320-rev-A1A2.bin
И тот же ответ:
/usr/bin/splitdns323fw:76:in `signature’: Unparseable signature string: “\x9B|-\xE5\xE5\x83\xE3K\x00\x00\x00\x00″ (RuntimeError)
from /usr/bin/splitdns323fw:289:in `splitdns323fw’
from /usr/bin/splitdns323fw:331:in `’
============================================================
Вот так.
Итог: всё получилось, но не до конца. Осталось попасть в web-интерфейс и уже из него восстановить прошивку. Очень надеюсь на Вашу, Ed, помощь в этом.

С уважением, Дмитрий!

Дмитрий, я рад, что у Вас получилось залить прошивку.

По какому адресу Вы пытались зайти на Ваш NAS? Руками Вы прописывали 192.168.0.100 , но в процессе загрузки я заметил, что IP адрес изменился на 192.168.0.101:

Sending select for 192.168.0.101…
Lease of 192.168.0.101 obtained, lease time 7200
udhcpc: Renew: Using 192.168.0.101 for 7200 seconds
udhcpc: Updating /etc/hosts: 192.168.0.101 HOME-NAS-SERVER.localnet

И кстати, squashfs нормально подцепился во время загрузки, судя по логам:

md: Skipping autodetection of RAID arrays. (raid=autodetect will force)
RAMDISK: squashfs filesystem found at block 0
RAMDISK: Loading 2982KiB [1 disk] into ram disk… done.
VFS: Mounted root (squashfs filesystem) readonly on device 1:0.
Freeing unused kernel memory: 172K (c0468000 – c0493000)

Ed, здравствуйте! Я повторил сегодня всю процедуру с теми файлами, которые Вы мне дали. Всё произошло так же, как и вчера. Устройство появилось по адресу 192.168.0.101, но как и вчера браузер говорит, что данная страница не доступна. Так же пробовал зайти по адресу 192.168.0.100, но ответ такой же. Может после адреса через слеш / нужно что-нибудь прописать?
Все-таки меня интересует, как можно принудительно записать squashfs в память? Просканировал свою сетку санером и определил только этот адрес 192.168.0.101.
Может быть можно как-нибуть залить всю прошику целиком с помощью одной команды?

Дмитрий, а были ли воткнуты винчестер(ы) в NAS при загрузке ядра и рамдиска через tftp ?

Вообще, 2-х файлов достаточно для перепрошивки, я нигде не видел, чтобы еще пытались подсунуть squashfs или defaults.

** MARVELL BOARD: DB-88F6281A-BP LE

U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CEE80

Soc: MV88F6281 Rev 3 (DDR2)
CPU running @ 800Mhz L2 running @ 400Mhz
SysClock = 200Mhz , TClock = 166Mhz

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

Очень благодарен Вам за помощь мне! С уважением, Дмитрий!

Дмитрий, попробуйте вот что:

How to recover from Lost access after power outage

** MARVELL BOARD: DB-88F6281A-BP LE

U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CEE80

Soc: MV88F6281 Rev 3 (DDR2)
CPU running @ 800Mhz L2 running @ 400Mhz
SysClock = 200Mhz , TClock = 166Mhz

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

Show who is logged on

-a Show all
-H Print column headers

Show who is logged on

-a Show all
-H Print column headers

** MARVELL BOARD: DB-88F6281A-BP LE

U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CEE80

Soc: MV88F6281 Rev 3 (DDR2)
CPU running @ 800Mhz L2 running @ 400Mhz
SysClock = 200Mhz , TClock = 166Mhz

CPU : Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

USB 0: host mode
PEX 0: interface detected no Link.
Net: egiga0 [PRIME]
Hit any key to stop autoboot: 0

3145728 bytes read: OK

Здравствуйте, Ed!
Хочу ещё раз Вас поблагодарить за оказанную мне помощь!
Низко кланяюсь Вам! С уважением, Дмитрий.

Дмитрий, поздравляю с оживлением устройства. Рад был помочь.

доброго времени суток!

помогите советом пожалуйста,
у меня кирпич dns-320L, моргает PWR, загрузчика не вижу, либо обрыв на плате, либо сигнала нет (сдох бутлодер)

возможно у Вас есть опыт в подобных случаях.

Благодарю Вас, Ed, за быстрый ответ!

Ed, можно попробовать загрузиться через kwboot, только сперва его нужно скомпилировать

Дмитрий, я выложил свою разобранную прошивку Alt-F-0.1RC4-DNS-320L-rev-A1, которую использовал для оживления своего NAS:

uInitrd
uKernel
uSquashfs

Николай, я поправил ссылки на файлы uInitrd, uKernel, uSquashfs

Огромнейшее спасибо.
Дочка два дня назад подарила D-Link DNS 320l
уже угробил (

В память загрузил Вэб интерфейс появляется но при перепрошивке из Вэб любой родной или Alt-t доходит только до
Starting kernel …
Uncompressing Linux… done, booting the kernel.
Не грузится вобщем.
Не подскажите как загнать во флеш какие команды

Большое спасибо перепрошил на заводскую.Это он в Опере не хотел а в IE прошил на ура.

Николай, спасибо за информацию. Рад был помочь.

Alex, с такой проблемой я не сталкивался. Похоже, что флеш-память приказала долго жить. И если действительно так, то кирпич вряд ли снова оживет.

Ed посмотрите пожалуйста его лог.
Чего ему не нравится. ))))
** LOADER **
** MARVELL BOARD: RD-88F5182-NAS-2 LE

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz

$Shutting down NMB services:
$Starting SMB services: mount: /dev/sdc1 is not a valid block device

Alex, похоже на то, что система пытается прочитать конфигурацию с подключенных дисков и по каким-то причинам она этого сделать не может:

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

Soc: MV88F5182 Rev 2
CPU: ARM926 (Rev 0) running @ 500Mhz
SysClock = 166Mhz , TClock = 166Mhz

Как бы его из этого замкнутого круга вытолкнуть?! Я уже взял отформатировал диск в Ext2 и засунул обратно. Но не помогло))

Хочу поделиться историей о том, как я чинил примус свой домашний NAS D-Link DNS-325.

Джедайское гугление дало надежду на подключение к последовательному порту DNS-325 и возможной диагностики. Необходимо подобраться к порту, плата легко достаётся после отключения жёстких дисков и вывинчивания 4-х винтов сзади NAS (шлицы находятся под резиновыми заглушками).

Детали о распиновке UART на плате и способе подключения можно найти здесь. Оставалась одна проблема. UART на плате DNS-325 требует TTL 3.3V и может сгореть при более высоких напряжениях. У меня не оказалось RS-232-TTL 3.3V конвертора, а заказанный кабель на eBay так и не пришёл в срок. Связавшись с продавцом, я получил ответ, мол, видимо, потерялся, бывает. Деньги он вернул, но нужно было искать другой кабель или… На помощь пришла идея использовать завалявшуюся Raspberry PI (или просто Малину), на борту которой есть 3.3V UART.

Возможно, повторюсь, рассказывая о том, как настроить Малину с «нуля», но я сам был бы рад прочитать об этом в одном месте и последовательно.

Настройка Raspberry PI

  • Собственно, сама Raspberry PI;
  • Акриловый корпус;
  • SD карта;
  • Коннектор на GPIO/UART пины, блок питания etc.

Далее навигация по меню: «8 Advanced Options» --> «A7 Serial»:

Would you like a login shell to be accessible over serial? Current setting: yes

Выбираем «No» и перезагружаемся.

Установка и настройка терминала

apt-get install minicom

Запускаем эмулятор терминала для работы с последовательным портом:

minicom -D /dev/ttyAMA0 -b 115200 -8

После того, как соответствующие пины последовательного порта DNS-325 подключены к Raspberry PI, наступает самый долгожданный момент включения устройства. Сейчас, собственно, хоть что-то станет ясно, почему NAS после включения входит в «крутое пике» и не подает признаков жизни. Скорость порта и прочие настройки установлены верно, само устройство оказалось «живым» и в консоли Малины побежал лог загрузки.
Раскрыв спойлер, можно увидеть весь лог загрузки:

** MARVELL BOARD: DB-88F6281A-BP LE

U-Boot 1.1.4 (May 16 2011 — 10:40:38) Marvell version: 3.4.14.DNS-325.03

U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CEE80

Soc: MV88F6281 Rev 3 (DDR2)
CPU running @ 1200Mhz L2 running @ 400Mhz
SysClock = 400Mhz, TClock = 200Mhz

DRAM CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6
DRAM CS[0] base 0x00000000 size 256MB
DRAM Total size 256MB 16bit width
Flash: 0 kB
Addresses 8M — 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M — 7M): Done
NAND:128 MB

CPU: Marvell Feroceon (Rev 1)

Streaming disabled
Write allocate disabled

USB 0: host mode
PEX 0: interface detected no Link.
Net: egiga0 [PRIME]
Hit any key to stop autoboot: 0

NAND read: device 0 offset 0x100000, size 0x300000
load addr… =a00000

3145728 bytes read: OK

NAND read: device 0 offset 0x600000, size 0x300000
load addr… =f00000

NAND read: device 0 offset 0x7100800, size 0x500000
load addr… =a00000

CPU Interface
— SDRAM_CS0 . base 00000000, size 256MB
SDRAM_CS1 . base 10000000, size 256MB
SDRAM_CS2 . disable
SDRAM_CS3 . disable
PEX0_MEM . base e8000000, size 128MB
PEX0_IO . base f2000000, size 1MB
INTER_REGS . base f1000000, size 1MB
NFLASH_CS . base fa000000, size 2MB
SPI_CS . base f4000000, size 16MB
BOOT_ROM_CS . no such
DEV_BOOTCS . no such
CRYPT_ENG . base f0000000, size 2MB

Marvell Development Board (LSP Version KW_LSP_4.3.4_patch30)-- DB-88F6281A-BP Soc: 88F6281 A1 LE

Warning: Giga 1 is Powered Off

/etc/rc.sh: line 17: system_init: not found
starting pid 302, tty '': '-/bin/sh'

BusyBox v1.11.2 (2010-11-17 11:44:30 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.

Для доступа в shell необходимо ввести код 5784468 .
После беглого осмотра в консоли стало ясно, что NAS загрузился в single-user mode. Ничего не смонтировано кроме корневой системы.
Очевидно, что процесс загрузки не продолжается именно из-за проблем с монтированием основного файлового дерева из squash образа:
SQUASHFS error: Major/Minor mismatch, trying to mount newer 4.0 filesystem
SQUASHFS error: Please update your kernel
mount: wrong fs type, bad option, bad superblock on /dev/loop0,

Сам файл, в котором squash образ, выгружается из внутренней flash в файл /usr/local/tmp/image.cfs с помошью nanddump .
mount -o loop /usr/local/tmp/image.cfs /mnt приводило к такой же ошибке, что и при загрузке.

После чего U-Boot грузил образ другого, более старого ядра: Image Name: Linux-2.6.22.18

Забегая вперёд, хотелось бы отметить, что область "mini firmware" внутренней flash, откуда загрузился образ с ядром в аварийном режиме, по-видимому, предназначена для подобных ситуаций. Если бы у меня стояла более ранняя прошивка, загрузка бы прошла успешно и я бы и не узнал о повреждении. Но в прошивке 1.04 новое ядро 2.6.31.8 и поэтому монтирование образа сжатой файловой системой (опять же, нового формата) на старом ядре завершалось ошибкой.

Гугление не дало готового решения, но вдохновило на jugaad, а именно: используя возможности U-Boot перезаписать uImage образ во внутренней flash памяти с помощью вырезанного образа из стоковой прошивки.

Достаём образ uImage с ядром из прошивки

Скачиваем стоковую прошивку с сайта D-Link: DLINK_DNS325.1.04b05 (на тот момент у меня стояла именна эта версия).
Каким-то образом необходимо было достать образ с ядром и попробовать перезаписать в повреждённую область.
Очень полезным инструментом оказался binwalk :


Вырезанный uImage образ попробуем записать во внутреннюю flash память начиная с адреса 0x100000 .

Установка и настройка Kermit

Для того, что передавать бинарные файлы в U-Boot нам понадобится достаточно древний протокол Kermit.

apt-get install ckermit

Создаём .kermrc с таким содержимым:

Загрузка расширенного U-Boot

Чтобы попасть в U-Boot командную строку, необходимо успеть прервать процесс загрузки нажав Пробел и «1» в момент, когда в консоли minicom на эту операцию отводится 2 секунды:
PEX 0: interface detected no Link.
Net: egiga0 [PRIME]
Hit any key to stop autoboot: 1

К сожалению, я не обнаружил в стоковом U-Boot команды loadb , которая позволяет загружать бинарный файл по указанному адресу в памяти.
Поэтому прийдётся скачать и сконфигурировать утилиту для загрузки расширенного U-Boot через последовательный порт.

Необходим компилятор для сборки на Малине:
apt-get install gcc

(Если вы подключились с помощью кабеля USB-Uart-TTL и производите сборку на x86 платформе, необходимо установить ARM-компилятор: export CROSS_COMPILE=arm-linux-gnueabi- )

Запускаем утилиту для передачи U-Boot:
root@raspberrypi:

Всё готово к передаче, выключаем NAS, ждём 10 с, включаем и следим за процессом передачи u-boot.kwb .
Процесс займёт несколько минут. В консоле вы сможете видеть процесс передачи в виде бегущих точек.
По окончании передачи необходимо прервать загрузку в момент Hit any key to stop autoboot: 4 (см. выше).
Выйдем из программы с помошью Ctrl+/ затем "c"

Передача образа и запись во flash


Запускаем kermit на Малине и инициируем передачу файла uKernel, который мы вырезали ранее из прошивки:
root@raspberrypi:


Здесь, в командной строке U-Boot, даём команду на приём файла по адресу 0x000000 (загружаем мы временно для перезаписи, поэтому базовый адрес не важен):

U-Boot переходит в режим ожидания файла, а мы выходим в командную строку Kermit нажатием Ctrl+\ и "c" и передаем файл:

(/root/) C-Kermit>send uKernel


Через несколько минут файл передан и готов к записи во flash:

=> nand erase 0x100000 0x300000 - Очистка flash области 0x100000-0x300000
=> nand write 0x000000 0x100000 0x300000 - Запись из памяти со смещением 0x000000

ВСЁ. можно перезагрузиться.
NAS успешно загрузился с установленными дисками и USB флешкой как ни в чём не бывало.
Для перестраховки я загрузил последнюю версию прошивки стандартным путём через страничку управления.

Читайте также: