четверг, 4 декабря 2014 г.

[Из песочницы] Продолжаем ставить 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 dns320l

wget http://ift.tt/1wt4vWa -O patch.diff

patch -p0 < ./patch.diff



Ну и компиляция прошивки.

Проверка установленных компонентов:



make prereq





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


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



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:



Пины на плате DNS320L такие (с сайта http://ift.tt/1wt4tO9):



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



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



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



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

Быстро жмем «Пробел», потом «1». Получаем строку ввода:

Marvell>

(Извините, забыл сделать скрины)

Далее запускаем tftp сервер.

Для этого качаем http://ift.tt/1vllgfq

Распаковываем и в эту же папку скидываем файлы openwrt-kirkwood-dns320l-jffs2-nand-2048-128k.img и openwrt-kirkwood-uImage скомпилированной прошивки. Подключаем NAS к компу Патч-кордом, даем ip адрес компьютеру 2.66.66.32 и запускаем tftp32:



В putty пишем (информация на сайте http://ift.tt/1vllfYW с ошибками)



setenv bootargs_openwrt 'console=ttyS0,115200 earlyprintk root=/dev/mtdblock2 rootfstype=jffs2'
setenv bootcmd_openwrt 'setenv bootargs $(bootargs_openwrt); nand read.e 0xa00000 0x100000 0x400000; bootm 0xa00000'
setenv to_openwrt 'setenv mainlineLinux yes; setenv bootcmd \'run bootcmd_openwrt\'; saveenv; reset'
tftpboot 0x6400000 openwrt-kirkwood-uImage
nand erase 0x100000 0x400000
nand write.e 0x6400000 0x100000 0x400000
tftpboot 0x6400000 openwrt-kirkwood-dns320l-jffs2-nand-2048-128k.img
nand erase 0x500000 0xfb00000
nand write.e 0x6400000 0x500000 0x200000
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 0x100000 0x400000; bootm 0xa00000'
Комманды загрузки - Читаем с nand адреса 0x100000 длиной 0x400000 в RAM по адресу 0xa00000 , затем загружаемся по адресу 0xa00000
tftpboot 0x6400000 openwrt-kirkwood-uImage
Загружаем по tftp с компа openwrt-kirkwood-uImage в ram по адресу 0x6400000
nand erase 0x100000 0x400000
Чистим nand для записи uImage
nand write.e 0x6400000 0x100000 0x400000
Записываем с 0x6400000 ram в 0x100000 nand длиной 0x400000
tftpboot 0x6400000 openwrt-kirkwood-dns320l-jffs2-nand-2048-128k.img
Загружаем по tftp с компа openwrt-kirkwood-dns320l-jffs2-nand-2048-128k.img в ram по адресу 0x6400000
nand erase 0x500000 0xfb00000
Чистим nand для записи uImage
nand write.e 0x6400000 0x500000 0x200000
Записываем с 0x6400000 ram в 0x500000 nand длиной 0x200000
run to_openwrt
Сохранение параметров и перезагрузка в OpenWRT







После загрузки OpenWRT нужно поменять некоторые файлы.


vi /etc/opkg.conf — путь для установки пакетов

Изменить строку:

#src/gz barrier_breaker http://ift.tt/1vllgfr

На строку:

src/gz barrier_breaker http://ift.tt/1wt4vWn






vi /etc/config/network – настройка сети, жирным выделено настройка dhcp

config 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

устанавливает нужные пакеты для переноса на usb

vi /etc/config/fstab


config mount

option target /overlay

option device /dev/sda1

option fstype ext4

option options rw,sync

option enabled 1

option enabled_fsck 0





sda1 меняем на раздел диска, на котором будет / и вы распаковали архив.

После перезагрузки, если все сделано правильно, получаем OpenWRT с корнем на диске.

Осталось только 2 полупроблемы:

1. кулер не крутится, решил это подключением к питанию в обход платы;

2. диски не паркуются, временное решение — UPS от внезапной потери света


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


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


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий