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 секунд, устройство перезапустится.



Если процедура закачки и записи провалится, 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 <a href="http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/ipkg-opt_0.99.163-10_arm.ipk">ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/ipkg-opt_0.99.163-10_arm.ipk</a>

По окончании закачки распакуем нужные нам файлы:
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 <a href="http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable">ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable</a> >> /opt/etc/ipkg.conf
/opt/bin/ipkg update

Если всё удачно, то увидим вот такое:
Downloading <a href="http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/Packages">ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/Packages</a>
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.
<b>TRANSMISSION_HOME=/home/.config/transmission-daemon</b>

# User to run the daemon "DAEMON_USER"
<b>DAEMON_USER="username"</b>
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 порту
<a href="http://192.168.x.y">192.168.x.y</a>: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.


2 комментария

avatar
Статья класс. Все работает. Вот только вопрос, как сделать так что были метки как в uTorrent? А то качается все в одну кучу.
avatar
Автор не углядял шпиена в данном девайсе.

я обнаружил, что девайс ставит VPN туннель на сервер zuul.axentra.com.
Изначально в девайсе используется модифицированный ssh который позволяет логинится пользователю с логином след вида: user__hipserv2_netgear_XXXX-XXXX-XXXX-XXXX где: user=Имя пользователя указанное вами при регистрации устройства, а XXXX-XXXX-XXXX-XXXX=Product Key. Так же при регистрации Устройство требует наличия интернет соединеня, через которое может отправить данный логин и возможно даже пароль.


Делаем выводы.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.