Pull to refresh

Netgear Stora MS2000 — раскрываем потенциал

Добрый день, Хабровчане!
Однажды, в мои руки попало NAS-хранилище Netgear Stora MS2000. Я был очень рад новому мигающему разными лампочками ящику, что от радости засунул в него жесткий диск на 1Tb. Диск, скажу вам, особо ничем не наполнялся, благо места в основном кладезе – компьютере, было предостаточно. Но быстрый интернет, доступные женщины торренты сделали свое грязное дело. И мне вдруг захотелось собственный отдельный блэкджек – torrent-клиент на NAS-накопителе. Как его можно установить?


Stora базируется на SoC-микросхеме Marvell 88F6281 (Overview, Datasheet) и имеет на борту:
  • ARM-ядро Marvell Sheeva CPU, работающее на тактовой частоте в 1 ГГц;
  • Объем ОЗУ 128 МБ DDR2;
  • Объем встроеной флеш-памяти 256 МБ;
  • Операционная система — linux;
  • Web-интерфейс с использованием Flash.
  • USB-порт 2.0
  • порт RJ-45 10/100/1000 Мбит/c

Вы могли прочитать в статье boomburum'a (ссылка) о возможностях устройства и наверняка заметили, что они хоть и вполне удовлетворяют потребностям домашнего пользователя, но всё же дальнейший потенциал у устройства имеется.
Вооружившись базовыми знаниями по Linux, я решил что мне просто необходима независимая от компьютера торрентокачалка.
Заранее предупрежу читателей, всё в данной статье вы делаете на свой страх и риск. Я вот, всё же как-то сумел своими далеко не прямыми руками поглумиться над устройством… Итог был таков — работоспособность устройства была нарушена.

Hard-reset


Поэтому начну с процедуры восстановления, известной как «hard-reset». Для этого выполните следующие действия:
  • Влючить устройство и отсчитать ровно 15 секунд;
  • Нажать и удерживать кнопку «Reset», синий Power-LED будет моргать (порядка 30 секунд);
  • Дождаться пока не погаснет Power-LED, а HDD1-LED загорится оранжевым;
  • Отпустить кнопку «Reset».

Больше от пользователя действий не требуется. Устройство попытается получить IP по DHCP, а после того как получит, HDD2-LED загорится на 1 секунду. Если вдруг IP не удастся получить, то диоды HDD моргнут 3 раза, а затем погаснут. На этом механизм восстановления остановится.
После того как устройство получит IP и доступ к интернет, начнется закачка и HDD-LED будут попеременно загораться. По окончании порядка 5 минут, если интернет достаточно быстр, закачка и запись образа в устройство завершится, все светодиоды загорятся на 5 секунд, устройство перезапустится.

image

Если процедура закачки и записи провалится, HDD-LED будут одновременно моргать.
Итак, работоспособность устройства достаточно просто восстановить и нужно очень постараться, чтобы получить высокотехнологичный кирпич.
После «hard-reset» я заново выполнил первичную настройку устройства – вбил Product Key, указал имя пользователя и пароль, сделал обновление прошивки через web-интерфейс — на текущий момент hbs-5032.upd.

Root


Теперь я могу приступить к установке torrent-клиента непосредственно на Стору. Для этого мне потребуется получить root-доступ к устройству по SSH.
SSH-daemon, установленный на Сторе модифицирован, получить root обычным методом у нас не получится.
Поэтому, мы воспользуемся лазейкой. Воспользуемся PuTTY в качестве SSH-клиента. Подключаемся к IP Сторы по стандартному 22 порту. В качестве имени пользователя используем указанное при первичной регистрации устройства (в нижнем регистре) и добавляем к нему «_hipserv2_netgear_XXXX-XXXX-XXXX-XXXX”, где XXXX-XXXX-XXXX-XXXX — Product Key с наклейки на нижней стороне Сторы (или с диска из комплекта), обязательно прописными.
В качестве пароля – тот, который собственноручно указывали, когда настраивали Стору.
Итак, запускаем PuTTY:
Hostname: username_hipserv2_netgear_J3QQ-4H7H-2V2H-CH4M@192.168.x.y
Port: 22
Connection type: SSH
Open
Вводим тот пароль, который мы задавали во время процедуры первичной настройки устройства и видим строку приглашения bash, в которой набираем
sudo -E -s
еще раз вводим наш пароль и получаем root. Сообщение об ошибке игнорируем.

SSHd


Теперь приступим к следующему шагу – установке нормального SSHd.
Есть простой способ и сложный. Простой заключается в распаковке sshd.tar.gz и замене исходного SSHd. Сложный – в перемещении папки /opt на жесткий диск, установке Optware и уже через него SSHd.
Я решил пойти сложным путем, в любом случае мне рано или поздно потребуется ipkg.

Перемещение папки /opt на жесткий диск

Боязно мне как-то постоянно перезаписывать NAND-флеш Сторы, после того как на одном из роутеров во время перепрошивки… Ну не будем о грустном.
Убедимся что мы под рутом
Sudo -E –s
Затем, скопируем содержимое папки /opt в новое место. Я выбрал /home/opt:
cd /
cp -r /opt /home/opt

Переименуем старую папку в opt-old и на ее месте сделаем символическую ссылку на /home/opt
mv opt opt-old
ln -s /home/opt /opt


Установка Optware

Идем в домашнюю папку, создаем каталог ipkg и скачиваем в нее wget’ом наш пакет:
cd ~
mkdir ipkg
cd ipkg
wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/ipkg-opt_0.99.163-10_arm.ipk

По окончании закачки распакуем нужные нам файлы:
tar -xzf ipkg-opt_0.99.163-10_arm.ipk
cp ./data.tar.gz /data.tar.gz
cd /
tar -xzf data.tar.gz
rm data.tar.gz

Настроим и установим ipkg:
echo src cs08q1armel http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable >> /opt/etc/ipkg.conf
/opt/bin/ipkg update

Если всё удачно, то увидим вот такое:
Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/Packages
Updated list of available packages in /opt/lib/ipkg/lists/cs08q1armel
Successfully terminated.


Установка редактора Nano и прописка пути в PATH

Чтобы не писать постоянно /opt/bin/ipkg для вызова ipkg, пропишем путь к нему в переменную PATH. Нам понадобится редактор nano:
/opt/bin/ipkg install nano
Отредактируем файл /etc/environment, скорее всего он у вас пустой
/opt/bin/nano /etc/environment
Копируем туда вот эту строчку
PATH=/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/sbin:/opt/sbin:/usr/sbin:/sbin
В PuTTY вставка из буфера обмена производится кликом правой клавиши мыши. Ctrl+X для выхода из nano, “Y” для подтверждения изменений и Enter для подтверждения имени файла.
Теперь, если переподключиться по SSH, ipkg и другие установленные программы будут вызываться без необходимости указания пути.

Подмена SSHd при помощи Optware

У данного способа есть большой недостаток. Так как файлы хранятся на жестком диске, то при его выходе из строя будет невозможно зайти по SSH из-за прописанных нами символических ссылок во флеш-памяти. Плюсы Optware в том, что у нас всегда будут свежие бинарники из репозитория.
После переподключения по SSH не забудьте
sudo -E -s
Качаем SSHd
ipkg install openssh
Переименовываем старый sshd на случай, если что-то вдруг пойдет не так:
cd /usr/sbin
mv sshd sshd.old

После этого, создадим символическую ссылку на новый sshd и сделаем её исполняемой
ln -s /home/opt/sbin/sshd /usr/sbin/sshd
cd /usr/sbin
chmod a+x sshd

Для проверки попробуйте подключится вторым PuTTY, используя короткий логин. Если все в порядке — смело закрывайте сессию SSH. Установка успешна.

Торрент-клиент transmission


Скачаем и установим используя Optware:
ipkg install transmission
Теперь скопируем бинарник transmission-daemon из /opt/bin/ в /usr/local/bin, где он и будет у нас лежать:
cd /opt/bin
cp transmission-daemon /usr/local/bin

На всякий случай зададим атрибут на выполнение, если вдруг потерялся:
chmod +x /usr/local/bin/transmission-daemon
Web-интерфейс положим в /usr/share/transmission:
cd /opt/share/transmission/
cp –r web /usr/share/transmission

Теперь нам нужно создать скрипт запуска службы, в котором нам нужно будет поменять следующие переменные:
  • $TRANSMISSION_HOME – место где будут лежать файлы конфигурации;
  • $DAEMON_USER – пользователь, под которым будем запускать службу.

Лично я сделал домашней папкой /home/.config/transmission-daemon:
mkdir -p /home/.config/transmission-daemon
и сделаем $DAEMON_USER её владельцем, в данном случае – username:
chown -R username username /home/.config/transmission-daemon
Затем создадим скрипт через редактор nano:
nano /etc/init.d/transmission-daemon
и скопируем туда следующие строки:
#!/bin/bash
#
# chkconfig: - 16 84
# description: Start up transmission-daemon
#
# processname: transmission-daemon
# config: /etc/sysconfig/transmission

# source function library
. /etc/rc.d/init.d/functions

# Get network config
. /etc/sysconfig/network

[ "${NETWORKING}" = "no" ] && exit 0

export PATH=/usr/local/sbin:/usr/local/bin:$PATH

# Defaults. The place of your config files.
TRANSMISSION_HOME=/home/.config/transmission-daemon

# User to run the daemon "DAEMON_USER"
DAEMON_USER="username"
DAEMON_ARGS="-g $TRANSMISSION_HOME"

# Daemon
NAME=transmission-daemon

DAEMON=$(which $NAME)
DAEMON_PIDFILE=/var/run/$NAME.pid
DAEMON_LOCKFILE=/var/lock/subsys/$NAME
DAEMON_SCRIPTNAME=/etc/init.d/$NAME
DAEMON_LOGFILE=/var/log/$NAME.log

[ -x "$DAEMON" ] || exit 0

start() {
echo -n $"Starting ${NAME}: "
if [ -n "$TRANSMISSION_HOME" ]; then
export TRANSMISSION_HOME
fi

su - $DAEMON_USER -c "$DAEMON $DAEMON_ARGS"

sleep 2

status $NAME &> /dev/null && echo_success || echo_failure
RETVAL=$?

if [ $RETVAL -eq 0 ]; then
touch $DAEMON_LOCKFILE
pidof -o %PPID -x $NAME > $DAEMON_PIDFILE
fi

echo
}

stop() {
echo -n $"Shutting down ${NAME}: "
killproc $NAME
RETVAL=$?

[ $RETVAL -eq 0 ] && /bin/rm -f $DAEMON_LOCKFILE $DAEMON_PIDFILE

echo
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
status $NAME
;;

*)
echo "Usage: $SCRIPTNAME {start|stop|restart|status}" >&2
exit 3
;;
esac

Разрешаем запуск:
chmod +x /etc/init.d/transmission-daemon
Запускаем службу и затем проверяем, действительно ли она запустилась:
sudo /etc/init.d/transmission-daemon start
ps -ef |grep transmission-daemon

Служба создаст конфигурационные файлы в заданной нами ранее папке. Прибьем службу:
sudo /etc/init.d/transmission-daemon stop
Идем в каталог с конфигом и редактируем settings.json:
cd /home/.config/transmission-daemon
nano settings.json

Желательно для начала прочитать ссылку.

Какие строчки поменял я:

"rpc-whitelist": "127.0.0.1,192.168.1.*"
Занес диапазон своей локальной сети в белый список, чтобы меня пускали в web-интерфейс.

"rpc-port": XXXX
Порт web-интерфейса, по которому будем заходить, я оставил по умолчанию – 9091.

"watch-dir":"\/home\/username\/MyComputers\/TorrentMeta",
"watch-dir-enabled":true

Создал папку в MyComputers для того, чтобы класть .torrent-файлы, которые transmission будет автоматически обрабатывать. Не забудьте сделать владельцем папки пользователя $DAEMON_USER и разрешить запись:
chown -R username:username TorrentMeta
chmod 777 myTorrentFolder


И самое главное – поменять параметр «download-dir», чтобы указанная в нем папка была обязательно в /home, иначе transmission будет писать всё во флеш-память! Не забудьте задать ей владельца аналогичным выше способом. Я выбрал папку /home/username/MyLibrary/Torrents.

“peer-port”: YYYY
Задает порт входящих соединений. Указанный нами порт следует включить в исключения файрволла Сторы. Делаем это следующим образом
nano /etc/iptables/config
Добавляем следующие строки
TCP_OPEN_PORTS_EXT="XXXX YYYY"
UDP_OPEN_PORTS_EXT="YYYY"

, где ХХХХ – порт web-интерфейса, а YYYY – порт входящих соединений
Перезапускаем iptables
/etc/init.d/iptables restart
Настало время запустить transmission:
/etc/init.d/transmission-daemon start
Проверяем, можем ли мы зайти по 9091 порту
http://192.168.x.y:9091/
Можете попробовать скачать небольшой торрент для полной проверки.
Если все прошло успешно, то давайте пропишем службу в автозагрузку:
/sbin/chkconfig --add transmission-daemon
/sbin/chkconfig --levels 2345 transmission-daemon on


Итог


Данные модификации не оказавают влияния на работу web-интерфейса устройства и его базовые функции. Обновления ставятся без проблем, что не может не радовать. Transmission-клиент с момента установки ни разу не падал, изначально ставил пересобранную под Стору версию 1.92, но после экспериментов и хард-резета установил из репозитория Optware. Eдинственное замечание — нагрузка на процессор под 70-80% при перехешировании раздачи, но я считаю это нормальным. Одновременный просмотр видео в 1080p напрямую со Сторы при активных закачках — без задержек (локальная сеть 1 Гбит/с).
В процессе написания статьи, активно курились форумы ixbt.com, openstora.net, transmissionbt.com и etc.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.