[Из песочницы] Продолжаем ставить OpenWrt на всё что угодно. D-link DNS-320L

Приобрел я этот NAS с четкой целью, он должен работать на OpenWRT. Сам я в linux не силен, так что собирал информацию по крупицам с интернета. В русскоязычной части ничего не было найдено, поэтому решил написать инструкцию для народа + сохранить что-то, так как памяти своей я не доверяю.В итоге получился NAS, который загружает прошивку с внутренней памяти и монтирует жесткий диск, подключенный по usb, как основную память.Человек по имени Andreas Böhler написал патч для openwrt ревизии 39746 для возможности компилирования прошивки. Следующие действия выполняются в ОС Debian под VirtualBox.

Устанавливаем пакеты для компиляции:

sudo apt-get install subversion git g++ libncurses5-dev zlib1g-dev gawk

Скачиваем исходники прошивки: svn co -r 39746 svn://svn.openwrt.org/openwrt/trunk dns320l

Применяем патчи: cd dns320lwget www.aboehler.at/hg/linux-dns320l/raw-rev/223820522d49 -O patch.diffpatch -p0 < ./patch.diff

Ну и компиляция прошивки.Проверка установленных компонентов:

make prereq

Если появилось такое окно, выбираем в Target System строку Marwell Kirkwood и в Target Profile строку D-Link DNS320L: 26ccda81031047bfa1c9b1f0fc02b596.PNG

Если такое этого не произошло, и нет ошибок, нужно выполнить:

make menuconfig

Собственно, этого достаточно для чистой изначальной рабочей прошивки. При желании можно побегать по меню и установить нужные пакеты. Я установил Base System → block-mount и Kernel Modules → FileSystem → kmod-fs-ext4, так как я планирую перенести корневой каталог на жесткий диск. Я использовал внешний USB жесткий, но с таким же успехом можно использовать sata жесткий или флешку.Запускаем компиляцию:

make

Если у вас многоядерный компьютер, то: make –j5

где 5 — количество ядер +1Оставим компиляцию, это дело медленное. Далее нужно подключиться к консоли NAS. Для этого есть 4 пина на палате, находятся возле usb и сетевой, я припаял к ним палочки для легкого подключения, использую вот такой адаптер, можно использовать любой адаптер на PL2303, например, кабель от сименса dca-510:

c35541a45ee440119f09d25a9ebc4ab0.PNG

Пины на плате DNS320L такие (с сайта jamie.lentin.co.uk/devices/dlink-dns325/):

0993b2e3954746868f7131f1bdec3756.PNG

Выводы платы нужно подключить в соответствующие выводы адаптера USB-TTL. Если не заработает, то поменять местами RX и TX, 3.3v подключать не нужно! Я подключал и спалил 2 адаптера.

9dce3d3222d74484870a2e16ed2148ce.jpg

После подключения открываем Putty и устанавливает порт подключения (порт можно посмотреть в Диспетчере устройств → Порты COM и LPT) скорость 115200.

b3078734bd054fe081c1fb6a720a056e.PNG

В категории serial Data bits — 8, Flow Control — None.

caa313ac364b4115839aab11c07069bb.PNG

Нажимаем Open — открывается Пустая консоль. Подключаем питание NAS и нажимаем кнопку включения, пошла загрузка, ждем надпись: If you want to stop u-boot booting, then press space then 1 when prompted to press any keyБыстро жмем «Пробел», потом »1». Получаем строку ввода: Marvell>(Извините, забыл сделать скрины)Далее запускаем tftp сервер.Для этого качаем tftpd32.jounin.net/download/tftpd32.450.zipРаспаковываем и в эту же папку скидываем файлы openwrt-kirkwood-dns320l-jffs2-nand-2048–128k.img и openwrt-kirkwood-uImage скомпилированной прошивки. Подключаем NAS к компу Патч-кордом, даем ip адрес компьютеру 2.66.66.32 и запускаем tftp32:

28a4bd93e01040998189ea67801f6b98.PNG

В putty пишем (информация на сайте http://www.aboehler.at/cms/projects-a-hacks/50-dns320l с ошибками)

setenv bootargs_openwrt 'console=ttyS0,115200 earlyprintk root=/dev/mtdblock2 rootfstype=jffs2' setenv bootcmd_openwrt 'setenv bootargs $(bootargs_openwrt); nand read.e 0xa00000 0×100000 0×400000; bootm 0xa00000' setenv to_openwrt 'setenv mainlineLinux yes; setenv bootcmd \'run bootcmd_openwrt\'; saveenv; reset' tftpboot 0×6400000 openwrt-kirkwood-uImage nand erase 0×100000 0×400000 nand write.e 0×6400000 0×100000 0×400000 tftpboot 0×6400000 openwrt-kirkwood-dns320l-jffs2-nand-2048–128k.img nand erase 0×500000 0xfb00000 nand write.e 0×6400000 0×500000 0×200000 run to_openwrt После этого NAS перезапустится и запустится OpenWRT.Разберем подробнее setenv bootargs_openwrt 'console=ttyS0,115200 earlyprintk root=/dev/mtdblock2 rootfstype=jffs2' Аргументы — как выводить консоль, путь / файловая система jffs2 setenv bootcmd_openwrt 'setenv bootargs $(bootargs_openwrt); nand read.e 0xa00000 0×100000 0×400000; bootm 0xa00000' Комманды загрузки — Читаем с nand адреса 0×100000 длиной 0×400000 в RAM по адресу 0xa00000, затем загружаемся по адресу 0xa00000 tftpboot 0×6400000 openwrt-kirkwood-uImage Загружаем по tftp с компа openwrt-kirkwood-uImage в ram по адресу 0×6400000 nand erase 0×100000 0×400000 Чистим nand для записи uImage nand write.e 0×6400000 0×100000 0×400000 Записываем с 0×6400000 ram в 0×100000 nand длиной 0×400000 tftpboot 0×6400000 openwrt-kirkwood-dns320l-jffs2-nand-2048–128k.img Загружаем по tftp с компа openwrt-kirkwood-dns320l-jffs2-nand-2048–128k.img в ram по адресу 0×6400000 nand erase 0×500000 0xfb00000 Чистим nand для записи uImage nand write.e 0×6400000 0×500000 0×200000 Записываем с 0×6400000 ram в 0×500000 nand длиной 0×200000 run to_openwrt Сохранение параметров и перезагрузка в OpenWRT После загрузки OpenWRT нужно поменять некоторые файлы. vi /etc/opkg.conf — путь для установки пакетовИзменить строку:#src/gz barrier_breaker downloads.openwrt.org/snapshots/trunk/kirkwood/packagesНа строку: src/gz barrier_breaker downloads.openwrt.org/attitude_adjustment/12.09/kirkwood/generic/packages

vi /etc/config/network — настройка сети, жирным выделено настройка dhcpconfig interface 'lan’option ifname 'eth0'option proto 'dhcp’option defaultroute '1'# option type 'bridge'# option proto 'static'# option ipaddr '192.168.1.1'# option netmask '255.255.255.0'# option ip6assign '60'

Далее: passwd

Вводим пароль рута: reboot

И после загрузки запустится openwrt получит ip адрес по сети, можно подключаться по ssh.Далее жесткий, на котором будет / форматируем в ext4, разархивируем на него openwrt-kirkwood-dns320l-rootfs.tar в NAS

opkg install kmod-usb-uhci kmod-usb-storage block-mount kmod-fs-ext4устанавливает нужные пакеты для переноса на usbvi /etc/config/fstab

config mountoption target /overlayoption device /dev/sda1option fstype ext4option options rw, syncoption enabled 1option enabled_fsck 0

sda1 меняем на раздел диска, на котором будет / и вы распаковали архив.После перезагрузки, если все сделано правильно, получаем OpenWRT с корнем на диске.Осталось только 2 полупроблемы:1. кулер не крутится, решил это подключением к питанию в обход платы;2. диски не паркуются, временное решение — UPS от внезапной потери света

Файлы с прошивкой, которые я использовал, лежат на Яндекс.Диск.

P.S. если увидели ошибку, не стесняемся писать в личку, исправлю как только смогу.

© Habrahabr.ru