1 Attachment(s)
Установка rTorrent "на пальцах".
Установка rTorrent + WebUI на Asus WL-500g Premium
Важное дополнение здесь!
Важное дополнение к важному дополнению: в связи с внезапным, сайт по ссылке проработает столько, сколько проработает бесплатно. Как только господа барыги потребуют денег - сайт исчезнет до тех пор, пока не найду альтернативу. Если у кого-то есть варианты - прошу высказываться. Варианты на платной и бартерной основе не рассматриваются.
Преамбула
По многочисленным просьбам сваял эту инструкцию для тех, кто, как и я, о Linux'е слышал только название и что это «крутая ось».
Данная инструкция является «компиляцией» тем «инструкция по настройке WL-500g deluxe с нуля», «Еще раз про rTorrent и web-морду к нему.» и многих других. Oleg’у, Novik’у и всем остальным авторам огромное спасибо за их труд. Без них у нас ничего не заработало бы.
Амбула
Что хотим:
- чтобы роутер качал и раздавал торренты при отключенном большом компьютере;
- иметь актуальную и наглядную информацию о том, как идёт процесс.
Что имеем:
- роутер Asus WL-500gP c обновлённой прошивкой (у меня работает на WL500gp-1.9.2.7-10 от Олега, за что ему огромное спасибо!) и настроенным доступом в Интернет;
- PC-комп с Win XP (Большой Брат, ББ), подключенный к роутеру через один из LAN-портов, или через Wi-Fi;
- внешний HDD Seagate FreeAgentGo 120 Gb;
- древняя флешка на 256 Мб;
- много желания.
NB: если у Вас другой набор компонентов, либо Вы что-то настраивали по-своему - адаптируйте инструкцию под себя.
Что будем делать:
1. Подключим внешний HDD и флешку в роутер.
2. Создадим на HDD и флешке файловые системы ext3. Половину флешки задействуем под swap.
3. Установим вспомогательный софт и проведём некоторую предварительную подготовку роутера.
4. Установим web-сервер lighttpd с наворотами, чтобы обеспечить работу web-интерфейса.
5. Установим торрент-клиент rTorrent.
6. Установим web-интерфейс, предложенный уважаемым Novik, для rTorrent чтобы можно было из браузера на ББ любоваться процессом.
Воизбежание дальнейшего недопонимания: это не учебник по Linux! Это лишь последовательность шагов, приводящая к желаемому результату, с краткими комментариями для тех, кто хочет хоть отчасти понимать что он делает. Это должно помочь человеку разумному, в большинстве случаев, понять где и в чём он ошибся, если ожидаемый результат не был получен.
Обычно вся процедура занимает меньше времени, чем требуется на прочтение данного опуса.
Несколько замечаний перед тем как приступать:
Замечание 1. Если Ваш внешний HDD, как у меня, регулярно «засыпает» (типа энергию экономит и ресурс механизма бережёт) при отсутствии обращений к нему в течение какого-то промежутка времени, рекомендую найти для него утилиту, которая может изменять время бездействия до перехода в режим «спячки» и выставить максимально возможное время. Лучше всего - Never.
Дело в том, что после того, как HDD «ушёл в себя» на приведение его снова в рабочее состояние, требуется время 30-60 секунд (по паспорту). Всё это время процессы, обратившиеся к данным на этом носителе, получают от системы сообщение об ошибке ввода/вывода, а не призыв обождать. Соответственно работа прекращается, несмотря на то, что всё исправно и доступно.
Потребляемая жёстким диском мощность 5В х 0.5А х 2(питание от двух USB-портов) = 5 Вт! Что мы экономим?
Насчёт ресурса, сдаётся мне, как инженеру-электромеханику (в прошлом), что при режиме работы «старт-стоп» механизм разболтается быстрее, чем при постоянном равномерном вращении. А головки прыгают одинаково независимо от данной настройки. Так что в каком режиме HDD прослужит дольше - ещё неизвестно.
Шум меня не беспокоит. Во-первых само устройство на удивление тихое, а во-вторых всё это у меня смонтировано в прихожей.
Замечание 2. Внешний HDD - достаточно прожорливая штука в плане электропитания (если сравнивать с обычными USB-устройствами - мышки, флешки, клавиатуры, кардридеры etc.). И USB-порт роутера вполне может не справиться с такой нагрузкой. Характерный признак нехватки питания - щёлканье головками. Но, даже, если Вам повезло и мощности встроенного порта хватило для того, чтобы HDD благополучно завёлся при подключении, не факт, что это надолго. Были случаи, когда такой «благополучный» драйв не заводился после выкл./вкл., или не «просыпался» после ухода в «спячку». А посему - покупаем USB-hub с блоком питания, обеспечивающим ток не менее 1,5А. У меня работает на Genius "UH-402 Mini" (б/п 5В 2А).
Замечание 3. Linux различает прописные и строчные буквы в именах файлов и в командах. Поэтому внимательно следите за регистром символов, вводимых с клавиатуры.
Замечание 4. В приведённых ниже командах нет ни одного лишнего символа. Особенно это касается символов "/" в конце строки. Самый простой способ избежать ошибок/опечаток - копирование и вставка.
Замечание 5. Последовательность шагов чаще всего имеет значение. Поэтому, если не знаете что делаете, рекомендую строго придерживаться порядка, в котором эти шаги изложены ниже.
Погнали!
1. Подключение.
Выключаем роутер из электросети. Вставляем флешку в верхний USB-разъём роутера. USB-hub - в нижний. Сам USB-hub - в электрическую сеть. Внешний HDD - в USB-hub. Включаем роутер в электросеть.
Заходим с ББ через браузер на страничку настроек роутера, лезем в пункт USB Applications => FTP Server и убеждаемся, что напротив пункта Enable FTP Server выставлено Yes, или Yes, LAN Only. Если стоит No, меняем и перезагружаем роутер.
На ББ скачиваем терминальную программу PUTTY.
Распаковываем её на жёсткий диск ББ и запускаем PUTTY.EXE (кстати рекомендую сразу сделать где-нибудь в удобном месте ярлык на неё - часто будет нужна).
В поле Host Name (or IP Address) вписываем внутренний IP-адрес роутера (тот что в настройках забит в IP Config => WAN & LAN => LAN IP Setting => IP Address).
В Connection Type выбираем Telnet, а в Close window on Exit - Never или Only on clean exit (это предотвратит закрытие окна при перезагрузках).
Жмём кнопку [Open].
Появившийся чёрный экранчик - это и есть наш терминал. Он же - консоль. (Технически это неверно, как и многое в этом произведении, но, для наших целей, такое определение сойдёт.)
На запросы вводим login и пароль, как задавали при первоначальной настройке роутера.
2. Подготовка дисков.
Пишем в терминал:
и нажимаем [Enter]
Убеждаемся, что оба диска видны системе. Вот что выдало у меня:
Disk /dev/scsi/host0/bus0/target0/lun0/disc: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/scsi/host0/bus0/target0/lun0/part1 1 14593 117218241 xxx
Disk /dev/scsi/host1/bus0/target0/lun0/disc: 257 MB, 257949696 bytes
8 heads, 62 sectors/track, 1015 cylinders
Units = cylinders of 496 * 512 = 253952 bytes
Device Boot Start End Blocks Id System
/dev/scsi/host1/bus0/target0/lun0/part1 1 1015 251689 xxx
Запоминаем строчки:
/dev/scsi/host0/bus0/target0/lun0/part1 - HDD на 120 Gb.
/dev/scsi/host1/bus0/target0/lun0/part1 - флешка на 256 Mb.
Это то, как система видит мои накопители.
Кроме того, они автоматически монтируются системой при загрузке как:
/tmp/mnt/disc0_1/ - HDD
/tmp/mnt/disc1_1/ - флешка
Тоже запоминаем.
NB: Иногда, по невыясненным причинам, роутер воспринимает диски наоборот:
/dev/scsi/host0/bus0/target0/lun0/part1 - флешка
/dev/scsi/host1/bus0/target0/lun0/part1 - HDD
В этом случае в следующие команды подставляйте правильные строчки и будьте внимательны в п.3. Есть нюансы.
Чтобы переразбить и отформатировать диски, надо сначала их отмонтировать. Лезем в настройки роутера в браузере USB Application => FTP Server и жмём кнопку [Eject] в пункте Force to Eject USB Disk. Кто умеет пользоваться Linux'овской командой umount - делайте как Вам удобнее.
Далее - опять в терминале:
Code:
fdisk /dev/scsi/host0/bus0/target0/lun0/part1
d - удалить существующие разделы (ориентируйтесь на подсказки fdisk).
n - создать новый раздел
p - создать primary partition
1 - первую partition
[Enter] - default 1
[Enter] - default 14592 - выделяем под первый раздел всё доступное пространство на HDD
w - сохранить новое разбиение диска и выйти из fdisk
В ответ должно выдать что-то вроде:
...
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
Установка rTorrent "на пальцах". 2/3
Если получили ошибку вроде этой:
...
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
то переразбиения не произошло. Скорее всего диск оказался примонтированным. Такое наиболее вероятно, если раньше производились какие-то настройки и устанавливались программы, работающие с этим диском. В этом случае разбирайтесь с процессами, убивайте активно работающие с диском, отмонтируйте диски и повторяйте процедуру.
Переразбиваем второй диск (флешку):
Code:
fdisk /dev/scsi/host1/bus0/target0/lun0/part1
d - удалить существующие разделы (ориентируйтесь на подсказки fdisk).
n - создать новый раздел
p - создать primary partition
1 - первую partition
[Enter] - default 1
[Enter] - default 1014 - выделяем под первый раздел всё доступное пространство на флешке
w - сохранить новое разбиение диска и выйти из fdisk.
Форматируем диски.
Сначала флешку:
Code:
mke2fs -j /dev/scsi/host1/bus0/target0/lun0/part1
Теперь надо создать и включить swap, т.к. памяти роутера не хватает на форматирование больших объёмов.
Подмонтируем флешку как папку /opt:
Code:
mount -o sync,noatime,rw /dev/scsi/host1/bus0/target0/lun0/part1 /opt
Создаём swap-file 128 Mb на флешке:
Code:
dd if=/dev/zero of=/opt/swap.file bs=1M count=128
mkswap /opt/swap.file
Кому надо больше/меньше - можете поменять число после "count=". По моим наблюдениям, в обычном режиме работы торрента, нужно не менее 1 Мб на торрент. Сколько при хешировании - не отловил. Подозреваю, что больше. 50 торрентов на 128 Мб swap'а крутятся без проблем.
По отзывам, создавать swap необходимо только тем, кто не увеличивал объём памяти роутера до 128 Мб.
Включим swap:
Code:
/sbin/swapon /opt/swap.file
Теперь можно форматировать HDD:
Code:
mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1
По окончании, на всякий случай, перезагружаемся:
(или, через web-интерфейс, кому удобнее) и снова входим на роутер через терминал (PUTTY).
3. Настройка.
Снова вручную монтируем флешку как папку /opt:
Code:
mount -o sync,noatime,rw /dev/scsi/host1/bus0/target0/lun0/part1 /opt
Создаём на флешке папку для заливки файлов по FTP:
Нюанс: пробуем зайти на роутер по FTP. Если видим папку backup, то переходим непосредственно к копированию файлов (см. ниже). Те, у кого, как у меня, флешка по умолчанию не видна по FTP, временно (после перезагрузки всё вернётся на свои места) монтируем её на место HDD:
Code:
mount -obind /opt /tmp/mnt/disc0_1
Скачиваем архив из первого поста этой темы. У кого архив оказывается "битым", скачайте другим браузером. Причина этого явления мне неизвестна.
Через FTP копируем в папку backup все файлы из архива, приложенного к этому посту. Файлы из архива не открывайте (вернее не сохраняйте) в Windows, а то они потом работать не будут.
Создаём очень важную папку:
Code:
mkdir -p /usr/local/sbin
и копируем в неё наши конфигурационные файлы:
Code:
cp /opt/backup/post-boot /usr/local/sbin/
cp /opt/backup/post-firewall /usr/local/sbin/
cp /opt/backup/pre-shutdown /usr/local/sbin/
Ещё нюанс: если накопители определились как у меня, то командуем:
Code:
cp /opt/backup/post-mount1 /usr/local/sbin/post-mount
Если наоборот (см. п.2), то
Code:
cp /opt/backup/post-mount2 /usr/local/sbin/post-mount
Делаем их исполняемыми:
Code:
chmod +x /usr/local/sbin/p*
Копируем ещё один очень нужный файлик:
Code:
cp /opt/backup/.files /usr/tmp/local/
Сохраняем всё, что наваяли, в памяти роутера и перезагружаемся:
Code:
flashfs save && flashfs commit && flashfs enable && reboot
В итоге флешка будет использоваться как накопитель для установленных программ и файла подкачки, а HDD будет работать исключительно для хранения данных пользователя.
Такой выбор обусловлен, в частности тем, что Oleg в своей теме предупреждает, что если вынуть из роутера накопитель, на котором смонтирован раздел swap, машинка зависнет. В данном случае мы создаём swap-раздел (вернее swap-файл) на флешке, которую вынимать из роутера ни к чему - объём её, по сегодняшним меркам, мизерный, на ней только установленные программы, настройки и swap. Зато HDD можно отключать, и заменять когда заблагорассудится (только не забудьте отмонтировать диск перед отсоединением кабеля).
Swap оформлен как файл, а не раздел, исходя из соображений гибкости. Захочется уменьшить/увеличить/выкинуть - не надо переразбивать и форматировать накопитель (да и не каждая флешка позволит сотворить с собой такое). Достаточно убить swap-файл и создать новый.
Внимание! Есть наблюдения (редкие, но есть), что активное использование flash-памяти очень сильно сокращает срок её службы. Были случаи, когда новая флешка выходила из строя за два месяца работы. У меня, на момент написания этих строк, всё работает уже десятый месяц без сбоев. Зависимости срока службы флешки от её новизны, объёма, производителя флешки не выявлено. Если боитесь за флешку - переносите swap на HDD.
Снова запускаем терминал.
Настраиваем установщик программных пакетов:
Code:
mkdir -p /opt/tmp/ipkg
ipkg.sh update
ipkg.sh install ipkg-opt
ipkg update
Сохраняем изменения и перезагружаемся:
Code:
flashfs save && flashfs commit && flashfs enable && reboot
4. Установка web-сервера.
В терминале:
Установка собственно web-сервера lighttpd:
Code:
ipkg install lighttpd
Установка php для web-интерфейса:
Code:
ipkg install php-fcgi
Копируем подправленные конфигурационные файлы в соответствующие папки:
Code:
cp /opt/backup/lighttpd.conf /opt/etc/lighttpd/
cp /opt/backup/10-php-fcgi.conf /opt/etc/lighttpd/conf.d/
Ну и как обычно:
Code:
flashfs save && flashfs commit && flashfs enable && reboot
После перезагрузки роутера идём в браузере на ББ по адресу: http://ip.router:8081, где ip.router - IP-адрес Вашего роутера. Должно появиться сообщение «lighttpd server is running.»
5. Установка torrent-клиента.
Создаём нужные папки:
/tmp/harddisk/torrent/dl - в эту папку кладутся .torrent-файлы
/tmp/harddisk/torrent/work - здесь будут сами скачиваемые/раздаваемые файлы.
/tmp/harddisk/torrent/session - рабочая папка для rTorrent.
Code:
mkdir -p /tmp/harddisk/torrent/dl
mkdir -p /tmp/harddisk/torrent/work
mkdir -p /tmp/harddisk/torrent/session
Устанавливаем необходимые пакеты:
Code:
ipkg install rtorrent
ipkg install adduser
ipkg install procps
ipkg install grep
ipkg install screen
ipkg install gawk
Создаём домашнюю папку для пользователя p2p, от имени которого будет запускаться и работать rTorrent:
Code:
mkdir -p /opt/home/p2p
Добавляем в систему самого пользователя p2p:
Code:
adduser --home /opt/home/p2p p2p
Вводим любой пароль. Может никогда не понадобиться, но задать надо.
Делаем пользователя p2p владельцем его домашней папки и рабочих папок rTorrtent:
Code:
chown p2p /opt/home/p2p
chown p2p /tmp/harddisk/torrent/dl
chown p2p /tmp/harddisk/torrent/work
chown p2p /tmp/harddisk/torrent/session
Копируем подправленные файлы в соответствующие папки и определяем для них хозяев и права доступа:
Code:
cp /opt/backup/rtorrent.conf /opt/etc/
chmod a+x /opt/etc/rtorrent.conf
cp /opt/backup/S99rtorrent /opt/etc/init.d/
chmod a+x /opt/etc/init.d/S99rtorrent
cp /opt/backup/.profile /tmp/local/root/
cp /opt/backup/.profile /opt/home/p2p/
chown p2p /opt/home/p2p/.profile
IDDQD :):
Code:
flashfs save && flashfs commit && flashfs enable && reboot
После перезагрузки снова лезем в терминал и даём команду:
Если в списке процессов есть строчка со словом rtorrent - всё хорошо. Если нет - причину можно искать долго. Возможно самым простым вариантом будет сбросить все настройки и начать установку заново, более внимательно читая сообщения от роутера.
Сохранение настроек Инета: System Setup => Setting Management => Save As a File ...
Сброс настроек всего роутера: System Setup => Factory Default => [Restore]
Восстановление настроек Инета: System Setup => Setting Management => Load From a File ...
6. Установка web-интерфейса.
В терминале:
Code:
tar -xvz -f /opt/backup/rtorrent.tar.gz -C /opt/share/www/
На ББ в браузере идём по адресу http://ip.router:8081/rtorrent/
Должен показаться web-интерфейс.
Можно пользоваться.
n. Как пользоваться.
Самый надёжный способ - залить .torrent-файл по FTP или через Samba («Сетевое окружение») в папку /torrent/dl.
Или можно воспользоваться кнопкой web-интерфейса, но тогда, в случае каких-либо неполадок, есть риск, что rTorrent потеряет закачку.
Установка rTorrent "на пальцах". 3/3
x. Дополнения.
x.1. Если rTorrent начал «падать» при запуске web-интерфейса, или происходят ещё какие-нибудь странные вещи (падает скорость, зависает роутер, web-интерфейс замирает на надписи «Загрузка» и т.п.), можно попробовать подменить некоторые файлы, на предложенные уважаемым Novik'ом.
Сначала останавливаем rTorrent:
Code:
/opt/etc/init.d/S99rtorrent stop
Затем копируем подправленный бинарник rTorrent'а:
Code:
cp /opt/backup/rtorrent /opt/bin/
и делаем его исполняемым:
Code:
chmod a+x /opt/bin/rtorrent
Копируем подправленные библиотеки:
Code:
tar -xvz -f /opt/backup/libtorrent.tar.gz -C /opt/lib/
«Спаси и сохрани»:
Code:
flashfs save && flashfs commit && flashfs enable && reboot
z. Полезности.
z.1. Рекомендую отредактировать файл /opt/etc/rtorrent.conf
В строчках
download_rate =
upload_rate =
указаны ограничения по скорости на скачивание и раздачу соответственно. На закачку лучше поставить ограничение ~80% от ширины канала. Иначе rTorrent, при активном скачивании, с удовольствием забьёт вам весь канал так, что даже по www не сможете сёрфить.
Эту же настройку можно выполнить и в web-интерфейсе, но там она не сохраняется и, поcле очередной перезагрузки роутера, ограничение скорости будет установлено на указанное в этом файле.
z.2. Какие процессы запущены у пользователя p2p:
Если в выведенном списке нет слова rtorrent, значит он упал. Перезагружайте роутер. Если rTorrent всё равно не запускается - попробуйте запустить его вручную и посмотрите что напишет.
z.3. Запуск rTorrent от имени пользователя p2p вручную:
Code:
su p2p
/opt/bin/rtorrent -n -o import=/opt/etc/rtorrent.conf
Если строка для ввода команд изчезла, а показался текстовый интерефейс rTorrent - всё в порядке. Выход - [Ctrl+q], выход из пользователя p2p:
При этом rTorrent тоже завершится.
Чтобы вручную запустить rTorrent в фоне, используйте команду:
Code:
/opt/etc/init.d/S99rtorrent start
z.4. Проверка и ремонт файловой системы (перед запуском диски надо отмонтировать):
Code:
e2fsck -f -y -v /dev/scsi/host0/bus0/target0/lun0/part1 - HDD.
e2fsck -f -y -v /dev/scsi/host1/bus0/target0/lun0/part1 - флешка.
Если выдёргивали накопитель без размонтирования - готовьтесь к потерям.
z.5. Дополнительно можно установить Midnight Commander, чтобы было проще копаться в файловой структуре и модифицировать файлы прямо на роутере:
Запуск:
z.6. Проверка свободного места на дисках:
z.7. Посмотреть процент загрузки процессора роутера rTorrent'ом:
Code:
ps -C rtorrent -o %cpu | grep -E '[0-9]'
У меня обычно ~51 при хешировании, <15 при раздаче (20 торрентов).
z.8. Какие процессы сколько процессорного времени занимают:
Выход - [Ctrl+c].
Заключение
Как обычно, я ни за что не отвечаю. =) Если, в результате проделанного, роутер у Вас родил, за алиментами просьба не обращаться. Всё делаете на свой страх и риск.
Многое из того, что тут написано, для меня так же непонятно, как и для Вас. Я просто собрал воедино разрозненную информацию. «Мотороллер не мой!!!»© А посему если будут вопросы типа «а почему так-то, а не вот так-то?», я не всегда смогу Вам ответить. Максимум - могу поделиться своими измышлизмами. Обращайтесь к общественности и авторам топиков, указанных в самом начале поста.
Будет ли всё это работать на других моделях роутеров, с другими комплектующими, другими провайдерами, другими торрент-трекерами и ещё чем-нибудь другим - я не знаю и проверить это у меня возможности нет.
К всезнающим гуру: если в этой инструкции что-то неправильно написано, что-то лишнее, что-то можно переделать для обеспечения большей стабильности, пожалуйста не поленитесь и отпишитесь. Думаю очень многие будут вам благодарны. Заранее вам спасибо.
Всем удачи!
Установка rTorrent "на пальцах".
Quote:
Originally Posted by
AlekseyA
Archim, огромное спасибо за проделаную работу, на днях воспользуюсь твоей инструкцией. После обязательно отпишусь. С люнексом у меня тоже слабо. После прочтения появилось пара вопросов:
1.
Скачал архив rt_files.zip, для проверки, внутри только один файл - rt_files. Может чего не понимаю, сразу не ругайте.
В архиве Вы увидели папку, внутри которой файлы. Ок. Перезалил архив. Теперь папки нет.
Quote:
Что подправить и как(где, чем)? Если:
На этапе установки ничего подправлять не надо. Всё уже подправлено.
Quote:
2.
Повторюсь, в архиве файлов я не увидел, а так же предположу что у многих данные файлы уже сушествуют со своими настройками, может стоит выложить их листинг с необходимыми для добавления строками.
Инструкция рассчитана на более, или менее "продвинутого" "виндузятника", который никогда не лазил в Linux и слабо себе представляет как там всё устроено. Если же человек уже что-то настраивал на своём роутере, то, думаю, он в состоянии самостоятельно заглянуть внутрь прилагаемых файлов и определить что ему нужно добавить в свои.
Если будет много подобных пожеланий, можно будет отдельно выложить список изменений в файлах, или просто расширить инструкцию.
Но, повторюсь, не вижу в этом смысла. Тот, кто понимает, уже давно нашёл все нужные инструкции в других темах. Кто не понимает - всё равно настроит так, как это сделано у меня. Какая разница: скопировать готовый, исправленный, файл, или самому вписать нужные строчки?