'Torrent'에 해당되는 글 1건

  1. 2012.09.19 Pogoplug를 Torrent Client 로 만들기 2

 

 

개인 클라우드를 꿈꾸며 구매했던 포고 플러그..생각보다 성능이 좋질 않아... 거의 놀고 있었다...

 

제가 써본 포고 플러그는

 

1. 외장하드 연결시 HDD 검사 같은 프로세싱을 거치는 관계로 마운트까지 상당 시간이 걸린다.

2. 안드로이드 계열은 덜한데 iOS계열에서 연결시 접속 시간이 꽤 걸린다.

 (이 점은 이해가 안감. 왜 Mobile Device 별로 시간이 다르게 걸리는지..)

3. 동영상 파일을 온라인으로 보기에는 현실적으로 불가능함 ( Local에서 wifi 환경에서도 불가능 )

 

그런 상황에서 우연히 알게된 포고 플러그 커스터마이징해서 쓰기...

 

Embeded Linux 인 관계로.. 이것 저것 고쳐 쓰는 분들이 꽤 계셨다..

어떤 분은 분해까지 해서 쓰시던데... 전 그냥.. PKG 설치 정도에서 마무리..

 

지금부터 설명하는 것은 Pogoplug를 Torrent Client로 만드는 과정이다.

 

즉 특정 디렉토리에 Torrent Seed 파일을 넣어두면 자동으로 Download하게 만드는 형식이다.

토렌토를 위해 PC를 안켜도 된다는 것이죠...

 

 

구축 환경


준비물

 

1. Pogoplug Mobile
2. USB 외장하드디스크
3. SD Memory card


구축 단계

 

1. ipkg 설치
2. torrent client 설치
3. torrent 설정

 

** 주의 사항

 

1. 본 포스팅은 http://aaronrandall.com 을 참조하여 정리한 것입니다.
2. 본 포스팅을 따라하다가 발생되는 그 어떤 문제점도 저는 책임 질 수 없습니다

 

** 설치 위치에 따른 안내

 

1. 저는 외장 하드디스크에서 Torrent 데이타를 저장하고 SD Memory card에 Torrent Clinet를 설치하는 방식을 선택하였습니다.
2. SD Memory Card는 FAT로 마운트되는 관계로 심볼릭 링크가 안생겨 추가적인 작업이 필요합니다. 
3. 만약 Torrent Clinet를 NTFS로 마운트된 외장 하드에 설치시에는 심볼릭 링크 관련된 문제점이 없을 수도 있습니다.

 

 

 

 

Part I. PKG 설치

 

 


* 중요 : 1단계는 NTFS로 마운트된 곳(외장하드) 에서 실행하시기 바랍니다.


1. http://my.pogoplug.com에서 SSH 접속 설정을 enable 시킨다.

 

 [ Account Setting ] > [ Security ] > [Enable SSH access for this Pogoplug device] 설정


2. SSH로 pogoplug 접속

 

 # ssh [ Pogoplug IP ]
 User : root
 Password : 암호  ( 1번에서 넣은 암호 입력 )


3. / 파티션 재마운트

 

 # mount -o remount,rw /


4. opt 디렉토리 생성 및 외장 하드 디스크 마운트

 

/opt는 패키시 설치시 파일들이 복사되는 위치이다.

 

 # mkdir /opt

 

아래 마운트 포인트는 장비마다 다를 수 있으므로 df를 통해 확인하시기 바랍니다.

여기서 일단 USB로 연결된 외장하드를 /opt에 마운트 한다.

 # mount /tmp/.cemnt/sdb1 /opt


5. 패키지 설치

 

 #cd /opt
 # wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/ipkg-opt_0.99.163-10_arm.ipk
 # tar -xOvzf ipkg-opt_*_arm.ipk ./data.tar.gz | tar -C / -xzvf -
 ( FAT 나 NTFS로 연결된 곳에서 실행시 이 부분에서 일부 파일이 tar로 안 풀립니다. tar 과정에서 보여진 파일 실제 디렉토리에 있는지 확인하시기 바랍니다. 저의 경우 외장하드에서는 정상이였고, SD 메모리카드에서는 일부 파일이 없었습니다. )
 
 # mkdir -p /opt/etc/ipkg
 # echo "src cross http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable" > /opt/etc/ipkg/armel-feed.conf
 # echo "src native http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/native/unstable" >> /opt/etc/ipkg/armel-feed.conf

 

6. ipkg 버전 확인

 

 # busybox | head -n1

 
7. ipkg 버전이 “BusyBox v1.7.0″ 이면

 

 # /opt/bin/ipkg update

 

8. ipkg 버전이 “BusyBox v1.16.1″ 이면

 

 (아마 국내에서 구매하신 분은 여기에 속하실 것이라 생각됩니다.)

 

 # cd /tmp/
 # wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/stable/wget_1.12-2_arm.ipk
 # tar xvzf wget_1.12-2_arm.ipk
 # tar xzvf data.tar.gz -C /
 # mv /usr/bin/wget /usr/bin/wget.old
 # ln -s /opt/bin/wget /usr/bin/wget

 # /opt/bin/ipkg update
 
 이부분에서 저는
 
 /opt/bin/ipkg: error while loading shared libraries: /opt/lib/libipkg.so.0: file too short

 또는
 
 퍼미션 에러가  발생하였습니다. 
 
 # cd /opt/lib 를 가 보니..
 
 /opt/lib # ls -la
 -r-xr-xr-x    1 root     root            42 Sep 17 08:24 libipkg.so
 -r-xr-xr-x    1 root     root            42 Sep 17 08:24 libipkg.so.0
 -rwxr-xr-x    1 root     root        150260 Feb 15  2012 libipkg.so.0.0.0
 
 되어 있더군요.. 아무래도 libipkg.so.0.0.0가 진짜 라이브러리 같아서
 
 /opt/lib # mv libipkg.so.0 libipkg.so.0.org
 /opt/lib # cp libipkg.so.0.0.0 libipkg.so.0
 
 해 주었더니넘어가네요...
 
 
 # /opt/bin/ipkg update
 
 Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/PackagesUpdated list of available packages in /opt/lib/ipkg/lists/cross
 Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/native/unstable/PackagesUpdated list of available packages in /opt/lib/ipkg/lists/native
 Successfully terminated.

 # /opt/bin/ipkg install libnsl
 Installing libnsl (2.5-4) to root...
 Downloading http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/libnsl_2.5-4_arm.ipk
 Configuring libnsl
 Successfully terminated.

 

 이 부분에서는 아래 표기한 블로그 원문에는 없었던 절대경로 /opt/bin을 추가해줘야 합니다.


 이렇게 성공 메세지가 떨어집니다..

 

 만약 /opt가 FAT로 마운트 되어 있다면 심볼릭 링크 관련 에러가 발생할 것입니다.

그럴 경우 아래와 같이 복사해 줍니다.
 
 # cp libnsl-2.5.so libnsl.so    
 # cp libnsl-2.5.so libnsl.so.1
 

 

여기까지는 NTFS로 연결된 외장하드에서 작업을 했고, 원래 설치 장소인 SD 메모리로 복사를 해 준다.

 

필자의 경우

 

외장하드 : /tmp/.cemnt/mnt_sda1

SD 메모리 : /tmp/.cemnt/mnt_mmcblk0p1

 

였는데

 

외장하드에 설치된 디렉토리들 ( bin, etc, lib, mans, var, share 등 )을 모두 mv로 옮겨 주었다.

 

# cd /opt (실제는 /tmp/.cemnt/mnt_sda1 )

# mv {상기 디렉토리} /tmp/.cemnt/mnt_mmcblk0p1

# umount /opt

# mount /tmp/.cemnt/mnt_mmcblk0p1 /opt

 

그럼 이제부터는 /opt는 SD 메모리 카드로 마운트 된 상태이다.

 

 

 

Part II. BITTORRENT PACKAGE 설치

 

 

 

1. transmission PKG 설치

 

 #/opt/bin/ipkg install transmission


만약 /opt가 FAT로 마운트 되어 있다면 심볼릭 링크 에러 발생하기 때문에 원래는 심볼릭 링크로 연결되어야 하는 파일들을 아래와 같이 복사 작업 진행

 

 # cp libcrypto.so.0.9.8 libcrypto.so
 # cp libcrypto.so.0.9.8 libcrypto.so.0
 
 # cp libssl.so.0.9.8 libssl.so
 # cp libssl.so.0.9.8 libssl.so.0
 
 # cp libcurl.so.4.2.0 libcurl.so
 # cp libcurl.so.4.2.0 libcurl.so.4
 
 # cp libz.so.1.2.5 libz.so
 # cp libz.so.1.2.5 libz.so.1
 
 # cp libevent-2.0.so.5.1.8 libevent-2.0.so.5
 # cp libevent-2.0.so.5.1.8 libevent.so     
 
 # cp libevent_core-2.0.so.5.1.8 libevent_core-2.0.so.5
 # cp libevent_core-2.0.so.5.1.8 libevent_core.so     
 
 # cp libevent_extra-2.0.so.5.1.8 libevent_extra-2.0.so.5
 # cp libevent_extra-2.0.so.5.1.8 libevent_extra.so
 
 # cp libevent_openssl-2.0.so.5.1.8 libevent_openssl-2.0.so.5
 # cp libevent_openssl-2.0.so.5.1.8 libevent_openssl.so
 
 # cp libevent_pthreads-2.0.so.5.1.8 libevent_pthreads-2.0.so.5
 # cp libevent_pthreads-2.0.so.5.1.8 libevent_pthreads.so


2. transmission을 구동하여 기본 설정화일을 생성

 

 # /opt/bin/transmission-daemon

 # killall transmission-daemon


3.  configuration 디렉토리 생성

 

 # mkdir /opt/config


4. 생성된 설정파일을 Config 디렉토리에 옮긴다.

 
 # mv /root/.config/transmission-daemon /opt/config/


5. transmission configuration의 복사본을 만들어 준다.

 

 # cd /opt/config/transmission-daemon/

 # cp settings.json settings.json.backup


6. transmission configuration을 설정한다.

 

필자는 Pogoplug의 외장 하드 디스크에

 

torrents 디렉토리와 Movies 디렉토리를 만들어서 Seed파일과 데이타 파일을 저장하고자 했다.

 

따라서 Pogoplug의 실제 저장 위치는

 

시드 파일 : /tmp/.cemnt/mnt_sda1/torrents

데이타 파일 : /tmp/.cemnt/mnt_sda1/Movies
 

가 된다.

 

설정 파일을 열어 디렉토리 설정을 변경한다.


 # vi /opt/config/transmission-daemon/settings.json

 

아래 “download-dir”, “incomplete-dir” 내용을   
  
/tmp/.cemnt/mnt_sda1/Movies
  
로 변경


7. 수정한 Config를 통해 Transmission client 구동

 

 # /opt/bin/transmission-daemon --config-dir /opt/config/transmission-daemon


8. Transmission 구동 확인

 

 웹 브라우져에서

 

 http://pogoplug IP:9091/transmission/web/

 

입력해 보면...웹 페이지가 뜬다.
 
9. 접근 허용 IP 추가

 

데몬 보안 정책에 의해 10번 과정에서 인증되지 않은 IP라고 나올 것이다.
 접근할 수 있는 IP 대역을 추가해 준다.

 

 # vi /opt/config/transmission-daemon/settings.json
 

 "rpc-whitelist": "127.0.0.1",  // 이 부분을
 
 "rpc-whitelist": "127.0.0.1,192.168.*.*",  // Client IP 대역을 추가해 준다.


 
 그 뒤에 transmission-daemon에 변경된 설정을 적용한다.
 


/opt/bin/transmission-daemon --config-dir /opt/config/transmission-daemon 의 PID를 확인한 후,
 # ps     // PID 확인
 # kill -HUP PID

 

해주면 적용 완료된다.
 
다시 웹브라우져에서 
 
http://pogoplug IP:9091/transmission/web/
 
웹  페이지가 뜨는 것을 확인한다.
 
 

 


Part III. Torrent 전송 기능 추가하기

 

 

이제 마지막 과정이다.

 

1. the transmission scheduler script 생성

 

본 과정은 torrents 디렉토리에 seed 파일을 넣어두면, transmission 데몬에게 전달해주는 스크립트를 만들어주는 과정이다. 아래는 필자의 설정 값이다.

 

시드 파일 위치 : /tmp/.cemnt/mnt_sda1/torrents/
Pogoplug IP : 192.168.120.2

 

스크립트 파일을 생성해주고,

 # touch /opt/bin/transmission-scheduler.sh

VI로 열어 스크립트를 입력한다.

 

# vi /opt/bin/transmission-scheduler.sh
 

#!/bin/sh                                                                                                                          
                                                                                                                                   
 pathToTorrentFolder='/tmp/.cemnt/mnt_sda1/torrents/'                                                                               
 transmissionUrl='http://192.168.120.2:9091/transmission'                                                                           
                                                                                                                                   
 for f in $pathToTorrentFolder*.torrent ;                                                                                           
        do /opt/bin/transmission-remote $transmissionUrl -a "$f"; rm "$f";                                                         
 done 

 
2. 스크립트로 실행 권한을 부여한다.

 

 # chmod +x /opt/bin/transmission-scheduler.sh
 
3. 스크립트 테스트

 

torrents 디렉토리에 실제로 seed파일을 복사해 넣고 되는지 확인한다.

 

# cp *.torrent /tmp/.cemnt/mnt_sda1/torrents/

# cd /opt/bin
# ./transmission-scheduler.sh
192.168.120.2:9091/transmission/rpc/ responded: "success"

 

위 스크립트 실행결과가 위와 같이 나오면 성공한 것이다.

 

웹 브라우져에서

 

http://pogoplug IP:9091/transmission/web/

 

입력해보면 아래와 같이 토렌토 다운로드 상황을 확인해 볼 수 있다.

 

 

 

 

 

여기까지 오면 모든 설치는 끝난다. 마지막으로 seed 파일을 넣어주면 주기적으로 체크해서 다운로드 할 수 있게 cron을 설정한다.

 

4. crontab 설정

 

# mkdir -p /opt/var/spool/cron/crontabs
# ln -s /opt/var/spool /var/spool
 

블로그에선

 

 # crontab -e

 

로 편집이 가능하다고 하는데 필자의 Pogoplug mobile에는 해당 명령어가 없었다.

 

따라서 아래와 같이 진행했다.
 
 # cd /var/spool/cron/crontabs
 # touch root
 # vi root
 

 

 */5 * * * * /opt/bin/transmission-scheduler.sh

 

 

 

5. crond 실행


 # busybox crond
 

 

이제부터는 네트워크 드라이브 또는 웹에서 연결된 torrents 디렉토리에 seed 파일을 넣어두면

Movies 디렉토리에 영상 파일들이 다운로드 되어 있을 것이다..

 

즐거운 라이프 되시길...

 

 

 

참조

 

1단계 : http://aaronrandall.com/blog/customising-your-pogoplug/

2단계 : http://aaronrandall.com/blog/installing-a-bittorrent-client-on-the-pogoplug/

3단계 : http://aaronrandall.com/blog/adding-torrents-via-my-pogoplug-com/

 

 

 

Posted by 카프러브