У меня этот чудо девайс работает уже полтора года. Работает отлично, и особых нареканий к нему нет. Разве что стоковая прошивка совсем уж бедная по своим возможностям, и чтобы более полноценно использовать 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.
Удивительно, но покупка двух переходников на микросхеме PL2303 в Китае с доставкой в Россию оказалась намного выгоднее, чем покупка отдельных деталей и сборка своими силами. Я отдал меньше 1 доллара за каждый из переходников, а заказал я их 2 штуки — поскольку предполагал, что своими неумелыми действиями я могу спалить этот переходник. В общем, мне удалось подключить переходник к плате хранилища, и при включении питания хранилища я мог видеть все сообщения загрузки системы.
Выяснилось, что загрузчик u-boot был в полном порядке, а вот при попытке загрузки ядра выскакивало следующее сообщение:
...
starting pid 538, tty '': '/etc/rc.sh'
** Mounting /etc/fstab
umount: proc: not mounted
umount: proc: not mounted
umount: /usr/local/modules: not mounted
sh: can't open /usr/sbin/pre_usb.sh
umount: /usr/local/tmp/image.cfs: not found
umount: /usr/local/tmp: not mounted
first good block is 0
image len = 1835626867 , image checksum = 5f656761
kernel or ramdisk error
...
Образ рамдиска или ядра был битым во флеш-памяти, я мне надо было его перезаписать по новой. Говорят, как-то можно перезаписать флеш-память командами из u-boot, но я поступил по-другому.
Сначала я скачал firmware Alt-f, и с помощью утилиты dns323-firmware-tools-master извлек из firmware образ ядра и рамдиска:
splitdns323fw -k uKernel -i uInitrd -d uDefaults -s uSquashfs Alt-F-0.1RC4-DNS-320L-rev-A1.bin
На выходе получил файлы uKernel, uInitrd, uDefaults и uSquashfs (последние 2 не понадобились). Далее, развернул сервер tftp и в его корень положил полученные файлы. Потом, при загрузке хранилища в нужном месте нажал пробел и единицу, в результате получил доступ к командной строке u-boot:
** MARVELL BOARD: DB-88F6702A-BP LE
U-Boot 1.1.4 (Aug 22 2012 - 17:06:54) Marvell version: 3.6.0.DNS-320L.01
U-Boot code: 00600000 -> 0067FFF0 BSS: -> 006CFB00
Soc: 88F6702 A1 CPU running @ 1000Mhz L2 running @ 500Mhz
SysClock = 400Mhz , TClock = 166Mhz
DRAM (DDR2) CAS Latency = 5 tRP = 5 tRAS = 18 tRCD=6
DRAM CS[0] base 0x00000000 size 256MB
DRAM Total size 256MB 16bit width
Addresses 8M - 0M are saved for the U-Boot usage.
Mem malloc Initialization (8M - 7M): Done
NAND:128 MB
Flash: 0 kB
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
Marvell>>
Про «Hit any key to stop autoboot» они конечно переврали, надо нажимать строго Пробел и потом цифру 1. Дальше последовательность действий была такой:
setenv ipaddr 192.168.1.7 # прописываю IP адрес сетевого хранилища
setenv serverip 192.168.1.9 # прописываю IP адрес tftp-сервера
tftp 0xa00000 uKernel # загружаю образ ядра в формате u-boot в память по адресу 0xa00000
tftp 0xf00000 uInitrd # загружаю initrd в память по адресу 0xf00000
bootm 0xa00000 0xf00000 # запускаю операционную систему БЕЗ перешивания флеш памяти — если что-то пойдет не так, всегда можно перезагрузиться.
Через некоторое время загрузился интерфейс Alt-F по адресу http://192.168.1.7 В нем уже есть возможность полноценно залить прошивку Alt-F или D-Link во флеш-память. После перепрошивки перезагрузился — и все заработало. Правда, при перепрошивке слетели все настройки — но это уже мелочи, сетевое хранилище удалось оживить.