Показаны сообщения с ярлыком rtorrent. Показать все сообщения
Показаны сообщения с ярлыком rtorrent. Показать все сообщения

четверг, 14 октября 2010 г.

Western Digital My Book World Edition II: настройка, установка rtorrent

На этот раз я разбирался с устройством, которое декларирует себя как NAS. До взрослого NAS-а ему далековато, но кое что все же коробочка может.

Итак, что я сделал для использования этого хозяйства? Работает на linux, архитектура arm, есть сайт, с которого стоит начать знакомство с внутренностями после покупки: http://mybookworld.wikidot.com/.

Первым делом я подключил nfs, в "белой" редакции это делается через веб-интерфейс. Затем включил доступ по ssh. С ssh надо быть осторожным, если ваша сеть не является закрытой. Да и в таком случае лучше быть осторожным ;).

По-умолчанию коробочка запускает одного демона nfsd, в рекомендациях по производительности написано это число поменять на то, что будет лучше для вас. Я решил, что 1 - мало по любому, поэтому поставил сразу 4. Делается это следующим образом:

1. Заходим по ssh на коробочку (root'ом с логином welc0me):

kilork@phoenix ~ $ ssh wdmybookip -l root
root@wdmybookip's password: 

~ # 

2. Редактируем /etc/init.d/S80nfsd:

~ # vi /etc/init.d/S80nfsd

Строку
/usr/sbin/rpc.nfsd

заменяем на
/usr/sbin/rpc.nfsd 4

Вместо 4 можно поставить ваше любимое число. Ну или можно этого не делать, мне кажется лучше, когда демонов больше, но конкретных замеров я не проводил на одновременную работу с коробочкой при разном числе демонов.

Далее, по инструкции ставим на коробочку пакетный менеджер ipkg. Для установки rtorrent достаточно сделать:
/opt/bin/ipkg install rtorrent

Далее, запуск через:
/opt/bin/rtorrent

Настройка в файле .rtorrent.rc. Вот мой:
directory = /shares/Public
session = /shares/Public/session
schedule = watch_directory,5,5,load_start=/shares/Public/torrent/*.torrent
port_range = 40890-40890
#port_random = no
#check_hash = yes
session_save = yes
encryption = allow_incoming,enable_retry,prefer_plaintext
use_udp_trackers = no
dht = auto
dht_port = 6881
encoding_list = UTF-8
bind = wdmybookip
ip = external_ip
scgi_port = localhost:5000
upload_rate = 100
download_rate = 1000
max_peers = 30
max_uploads = 10
max_uploads_global = 20
max_downloads_global = 60
send_buffer_size = 1M
receive_buffer_size = 1M
max_memory_usage = 128M

wdmybookip и external_ip - адрес коробочки в локальной сети и адрес внешний. Порты 40890 и 6881 должны быть проброшены с внешнего адреса на коробочку.

Вот и все, можно скачивать и сохранять пентабайты данных?

К сожалению, все не так просто. Дело в том, что метод соединения по-умолчанию через epoll у меня не заработал, и два - падает на больших торрентах. Обе проблемы известные, первая решается передачей параметра окружения для выбора метода select, вторая - через компиляцию libtorrent. Первое весьма просто:
export RTORRENT_POLL=select
/opt/bin/rtorrent

А вот второе уже сложнее. Для этого нам понадобится на другой машине выкачать репозитории ipkg и самостоятельно все собрать/поправить. Я сделал скрипт, который все делает, главное, на что надо обратить внимание - это удаление define'ов USE_EPOLL и USE_MADVISE:

#!/bin/bash
mkdir wd
cd wd
svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware
cd optware
make cs05q1armel-target
cd cs05q1armel
make directories ipkg-utils toolchain
make libtorrent
cd builds/libtorrent
sed -i '/USE_EPOLL/ d;/USE_MADVISE/ d' config.h
make
cd -
make libtorrent-ipk
mv builds/libtorrent*-1_arm.ipk builds/libtorrent.ipk

Полученый файл wd/optware/cs05q1armel/builds/libtorrent.ipk необходимо скопировать на коробочку, после чего на ней уже запустить команду:
/opt/bin/ipkg install path/to/libtorrent.ipk
.

Теперь все хорошо и запускать можно без всяких переменных окружения: /opt/bin/rtorrent. С чем я всех и поздравляю.

З.Ы. Скачать готовый скрипт и пакет.