WD My Cloud Gen1 에 v4 순정 펌웨어 위에 chroot 를 설치 , chroot 상에 miniDLNA, transmission 을 올려서 기존 WD My Cloud 의 기능을 보완하는 내용을 설명한다.
이 방식의 장점은 기존 WD My Cloud 의 모든 기능을 그대로 사용 가능하며, clean linux ( debian jessie ) 나 Synology DSM 5.2 를 올렸을때 발생하는 SMB 네트워크 속도 저하 문제가 없다.
WD Community 의 러시아 유저 Fox_exe 가 만든 repository 를 활용하는 방법으로
영어 원문의 내용을 한글로 정리한 것이다.
불필요한 설명 없이 원문을 보고 설치할 분은 아래 링크로 가서 다운받고 설명대로 진행해도 동일한 결과를 얻을 수 있다.
https://drive.google.com/drive/folders/0B_6OlQ_H0PxVRXF4aFpYS2dzMEE
ㄴ WDMyCloud-Gen1
ㄴ Chroot
ㄴ Info_EN.txt
* 모든 내용은 반드시 WD My Cloud Gen1 , v4 버전의 펌웨어에서 진행해야한다
Repository with software worked on v4 firmware
( https://community.wd.com/t/repository-with-software-worked-on-v4-firmware/94532 )
* WD My Cloud 의 최신 펌웨어는 아래 링크에서 다운로드 받을 수 있다.
https://support-en.wd.com/app/products/product-detail/p/126#WD_downloads
Downloads -> SOFTWARE FOR GPL/FIRMWARE -> Current Firmware-Firmware release 04.xx.xx-xxx -> 최신펌웨어
* 구버전 펌웨어는 아래 링크에서 다운로드 받을 수 있다.
https://community.wd.com/t/wd-my-cloud-v3-x-v4-x-and-v2-x-firmware-versions-download-links/148533
* Fox_exe repository 관련한 모든 자료는 아래에서 다운로드 받을 수 있다
http://anionix.ddns.net/WDMyCloud/
https://drive.google.com/drive/folders/0B_6OlQ_H0PxVRXF4aFpYS2dzMEE ( Google drive , mirror )
( 위 두개의 링크는 동일한 내용이며 anionix 가 원본, google drive 가 mirror 이므로 되도록이면 google drive 를 이용하자 )
Nov '14 by Fox_exe
WARNING: This software only for WDMyCloud 1nd generation official v4 firmware (Kernel/Software with PageSize=64k)!
이 글은 2014 년 Fox_exe 에 의해 최초 작성, 공개된 WDMyCloud Gen1 firmware v4 용 software Repository 사용법과 prasadasokan 의 댓글 참조하여 작성됨.
ㅇ Connect via SSH and install Chroot env:
SSH로 접속 후 Chroot 를 설치하기 위해 아래 커맨드들을 실행
SSH 접속을 하기 위해서는 WD My Cloud 제어판에서 SSH 접속을 활성화해야하며,
접속 id와 암호는 root / welc0me 이다.
(0 는 영문자 O 가 아니라 숫자 0 이다 )
최초 로그인을 하면 새로운 root password 를 지정해주어야한다.
SSH 접속 터미널 프로그램은 PUTTY 를 추천한다.
아래 명령어들은 그냥 copy & paster 하면 된다.
1. Download chroot
wget http://anionix.ddns.net/WDMyCloud/WDMyCloud-Gen1/Chroot/chroot-j64k.sh |
또는
wget http://anionix.ddns.net/WDMyCloud/WDMyCloud-Gen1/Chroot/chroot-jessie-64k_fix_v1.sh mv chroot-jessie-64k_fix_v1.sh chroot-j64k.sh |
* google drive 의 WDMyCloud > WDMyCloud-Gen1 > Chroot 폴더에 2019년 6월 26일자로 chroot-jessie-64k_fix_v1.sh 가 올라와있는데 무언가 좀 더 나은 수정사항이 반영되어있을것으로 기대하고 분문은 이것을 다운로드 받아서 chroot-j64k 로 변경해서 사용했다. 위 wget 에서 chroot-j64k.sh 파일명만 변경해서 사용하면 된다. 별다른 에러는 없었으며 chroot-jessie-64k_fix_v1.sh 에 대한 추가적인 설명 내용은 찾지 못했다.
1-1. 파일에 실행 권한 부여
chmod a+x chroot-j64k.sh |
2. Install chroot
./chroot-j64k.sh install |
After this you can go inside chroot and install any of available software.
위 작업을 한 후 chroot 로 소프트웨어 설치 가능
3. Enable Autostart and mount proc etc
chroot 설치, 마운트 작업.
/DataVolume/debian/chroot_debian.sh install cd /DataVolume/debian mount -t proc proc proc/ mount -t sysfs sys sys/ mount -o bind /dev dev/ |
(주 - 원래 4 다음 4-1 설명이 나오지만 chroot 하기 전에 resolv.conf 파일을 복사해두어야하므로 순서를 변경함 )
4-1. To update anything I had to do this to get DNS servers (at system, not chroot):
cp /etc/resolv.conf /DataVolume/debian/etc/ |
( 4-1 을 안하면 5 를 작업하기 전에 재부팅 필요. 그래도 package upgrade 가 안되면 WD My Cloud 를 한번 재부팅한 후 ssh 접속 -> chroot 후 5. 번 진행 )
Chroot:~# cat /etc/resolv.conf
nameserver 203.248.252.2
nameserver 164.124.101.2
(주 - nameserver 는 kt , lg , 등 사용하는 dns 에 따라 나오는 값이 다를 수 있음 )
4. Enter into chroot
프로그램 설치 전에 chroot
chroot /DataVolume/debian /bin/bash |
5. Upgrade packages
(apt-get 에서 주소를 가져오지못하는 오류가 발생할 경우 4-1 을 빼먹지 않았나 다시 확인. )
apt-get update && apt-get upgrade |
* Current software list ( http://anionix.ddns.net/dists/jessie-64k/ )
현재 repository 의 주요 package 현황
---------------------------------------------------------------------
Transmission-daemon
MC (Midnight Commander)
MiniDLNA
Openssh-server + client
Samba v3.6.6
rSync
pyLoad (Download manager)
Aria2
Python
Perl
Corosyncapt-
Apache2
PHP5 (Curl, GD, MCrypt)
MySQL 5.5 Server & Client
ffmpeg
Pacemaker
HTop
Locales
Build-essential && Patched binutils
Base system & all base tools (For make chroot or build system from scratch)
----------------------------------------------------------------------------------
ㅇ List available apps:
Fox_exe repository 포함된 모든 package 리스트를 출력
apt-cache dumpavail | grep Package |
* chroot 설치가 완료되면 아래 앱들을 설치하기 전에 재부팅을 한번 해야한다.
그렇지않으면 chroot 에서 /mnt 폴더에 /DataVolume 이 마운트 되지 않아 transmission 설정등을 마무리 할 수 없다.
* Chroot control script (For start/stop/install/uninstall):
모든 작업은 반드시 chroot 상태에서 진행해야한다
/DataVolume/debian/chroot_debian.sh
A. Transmission:
트랜스미션
Inside chroot:
(chroot 상태에서 실행한다 )
chroot /DataVolume/debian /bin/bash |
a1. Install Transmission
트랜스미션 설치
apt-get install transmission-daemon |
a2. Start Transmission
정상적으로 설치 완료되고 실행중인지 체크. (설치하자마자 실행됨)
/etc/init.d/transmission-daemon status |
( If you are seeing permission denied errors, edit user to root in file /etc/init.d/transmission-daemon )
transmission 실행중 에러가 나면 /etc/init.d/transmission-daemon 파일에서 실행 권한을 root 로 변경해야한다.
실행시 에러가 나지 않아도 어차피 파일, 폴더 권한 문제때문에 root 로 변경할 것이므로 상관 없다.
모든 transmission 설정을 변경하기 위해서는 반드시 transmisson 을 정지하고 작업해야한다.
/etc/init.d/transmission-daemon stop
/etc/init.d/transmission-daemon start
/etc/init.d/transmission-daemon status
아래에서 선택 1/2 중 하나 진행
선택1 ) a3. transmission 실행시 권한 오류 처리를 위해 /mnt 폴더에 transmission 전용으로 모든 권한 허용 폴더 생성 후 setting.json 을 이쪽 폴더도 설정
cd /mnt/Public
mkdir torrent
mkdir -p torrent/done
mkdir -p torrent/seed
mkdir -p torrent/incomplete
chown -R nobody:1000 torrent
chmod -R 777 torrent
선택2 ) a3. transmission 실행시 권한 오류 처리를 위해 transmission 실행 계정을 root 로 변경 ( transmission-daemon 수정 )
기본적으로 transmission은 chroot 상에서 debian-transmission 계정으로 실행되는데 이경우 권한때문에 공유 폴더에서 자유로운 폴더/파일 복사/이동이 여려워져 모두 root 로 변경한다.
nano /etc/init.d/transmission-daemon |
실행해서 보면
USER=debian-transmission 부분을 USER=root로 변경합니다.
저장하고 나옵니다.
USER=root |
트랜스 미션 관련 파일,폴더 권한 변경
chown root:root /etc/transmission-daemon/settings.json chown root:root /etc/init.d/transmission-daemon chown -R root:root /var/lib/transmission-daemon/info chown root:root /var/lib/transmission-daemon/downloads chown :root /etc/transmission-daemon |
a4. modify settings.json
transmission setting 파일 수정
nano /etc/transmission-daemon/settings.json |
* 각자 취향에 따른 토렌트 폴더경로가 다르므로 해당 내용은 개인에 맞게 변경해서 사용한다.
chroot 에는 /mnt 에 파티션4 (데이타 파티션) 가 올라와 있다.
여기에서는 /mnt/Public/torrent 밑에 아래와 같이 구성하였다.
/mnt/Public/torrent
ㄴ done <- 다운로드가 완료된 토렌트 파일
ㄴ seed <- .torrent 파일
ㄴ incomplete <- 다운로드가 진행중인 토렌트 파일
/mnt/Public/torrent/done
/mnt/Public/torrent/seed
/mnt/Public/torrent/incomplete
위 세줄을 자신이 질세로 쓰는 폴더로 변경하고 아래 settings.json 을 수정할때 " " 안의 내용을 바꿔서 사용
a3.1. transmission 접속시 id / pw 입력 생략
Disable the dashboard login -> rpc-authentication-required 를 false 로 수정한다.
Disable the RPC whitelist so you can access the Transmission GUI -> rpc-whitelist-enabled 항목을 모두 false 로 수정한다.
"rpc-authentication-required": false, "rpc-whitelist-enabled": false, |
커맨드라인상에서 sed 명령어로 settings.json 을 바꿀 수도 있다. sed -i ‘s/“rpc-authentication-required”: true,/“rpc-authentication-required”: false,/g’ /etc/transmission-daemon/settings.json sed -i ‘s/“rpc-whitelist-enabled”: true,/“rpc-whitelist-enabled”: false,/g’ /etc/transmission-daemon/settings.json * sed 명령이 putty 커맨드창으로 복사가 안되는데 ( ‘s/“ 같은 문자때문인듯 ) 직접 타이핑해서 입력하거나 nano 에디터로 수정한다 주의 : -required”: true 같이 : 뒤에 space 가 하나 들어간다. sed 의 사용법은 아래와 같다. sed 's/찾는문자열/바꿀문자열/g' 입력파일 ( 더 자세한 내용은 https://ggang-tong.tistory.com/entry/sed-%EC%82%AC%EC%9A%A9%EB%B2%95-2 에 아주 잘 정리되어있다 ) |
a3.2. seed 파일 업로드 폴더 변경
기본 .torrent 파일 업로드 폴더
/var/lib/transmission-daemon/.config/transmission-daemon/torrents/
( = /var/lib/transmission-daemon/info/torrents )
이것을 /mnt/Public/Shared Videos/[0.New]/seeds 로 변경하기 위해서 마지막에 아래 항목을 추가
, "watch-dir": "/mnt/Public/torrent/seed", "watch-dir-enabled": true |
( 항목 추가시 이전줄 마지막에 "," 를 추가한 후 작업해야하는것을 잊지말자)
a3.3. 다운로드가 완료되지 않은 임시 temp 파일 폴더 변경
"incomplete-dir": "/mnt/Public/torrent/incomplete", "incomplete-dir-enabled": true, |
a3.4. 다운로드가 완료된후 저장될 최종 downlod 폴더 변경
"download-dir": "/mnt/Public/torrent/done", |
a3.5 다운받는 와중에 생긴 폴더 ( 토렌트 파일 자체가 폴더구조인 경우 ) 권한이 777 이 아니라 윈도우에서 파일 관리의 어려움 발생할 경우 해결책
"umask": 0, |
a3.6. 다운로드 완료된 항목을 transmission 에서 삭제
토렌트가 완료되었을때 별도의 스크립트 파일 ( afterDoneToDo.sh ) 을 실행
"script-torrent-done-enabled": true, "script-torrent-done-filename": "/etc/transmission-daemon/afterDoneToDo.sh", |
/etc/transmission-daemon/afterDoneToDo.sh 파일 작성
nano /etc/transmission-daemon/afterDoneToDo.sh
내용
#!/bin/sh SERVER="9091 --auth id:password" TORRENTLIST=`transmission-remote $SERVER --list | sed -e '1d;$d;s/^ *//' | cut --only-delimited --delimiter=" " --fields=1` for TORRENTID in $TORRENTLIST do echo Processing : $TORRENTID # check if torrent download is completed DL_COMPLETED=`transmission-remote $SERVER --torrent $TORRENTID --info | grep "Done" | grep "100%"` # check torrents current state is STATE_STOPPED=`transmission-remote $SERVER --torrent $TORRENTID --info | grep "State: Seeding\|Stopped\|Finished\|Idle"` # if the torrent is "Stopped", "Finished", or "Idle after downloading 100%" if [ "$DL_COMPLETED" ] && [ "$STATE_STOPPED" ]; then # move the files and remove the torrent from Transmission echo "Torrent #$TORRENTID is completed" echo "Removing torrent from list" transmission-remote $SERVER --torrent $TORRENTID --remove else echo "Torrent #$TORRENTID is not completed. Ignoring." fi done |
afterDoneToDo.sh 파일 작성 후 cmd 창에서 아래 명령어 수행 ( 실행권한 부여, 파일 소유자 변경 )
chmod +x afterDoneToDo.sh
chown debian-transmission:debian-transmission afterDoneToDo.sh
※ 위 스크립트가 정상 작동 안될 경우 transmission-remote localhost:9091 --info
를 치면 현재 transmission 에 걸려있는 torrent의 정보가 나오는데 grep 명령어 위 조건식에 맞게 변경하여 afterdone.sh 를 수정해야한다.
원래 최초 스크립트를 참고한 사이트에서는 grep "Percent Done: 100%" 라고 되어있었는데 -info 를 볼때 전혀 검색이 되지 않아 완료된 파일들이 삭제가 안되어서 위와 같이 조건을 수정하였다.
grep 을 사용할때 AND 조건 : grep 조건1 | grep 조건2 와 같이 파이프를 연속으로 사용할 경우 조건1 AND 조건2 일때 작동. OR , NOT 조건도 사용할 수 있지만 regular expression 을 써야한다. |
※ DLNA 를 기본 Twonky로 쓸 경우 아무 문제가 없는데 MiniDLNA 로 변경 후 Torrent 작동시 WD My Cloud 가 완전히 다운되는 일이 발생하였다.
/Shared Video 밑에 토렌트임시폴더가 위치할경우 데이타를 받을때마다 MiniDLNA 가 해당 내용이 동영상인지 체크하는 과정에서 시스템이 죽는 것으로 추정되는데 , 시드와 임시파일 폴더 위치를 /Shared Video 와 다른 위치로 이동하는것을 권장한다.
B. Install MiniDLNA
MiniDLNA 설치
Wd My Cloud 에 기본 탑재된 Twonky DLNA 서버는 버전업이 되면서 자막도 나오고 쓸만해
지기는 개뿔 , 양놈들한테는 충분할지 몰라도 적어로 영어 문화권이 아닌 우리나라에서는 자막 문제때문에 사용하기 곤란하다.
[ LG 지상파 UHD 지원 셋탑 기준 ]
ㅇ .smi 자막 지원 안됨
ㅇ .srt 자막도 지원 안되는게 반 ( 원인도 알수 없이 어떤건 되고 어떤건 안되는게 더 짜증 )
ㅇ 동영상에 자막이 포함된 경우 .srt 자막 인식 안함 ( 역시 어떤건 되고 어떤건 안됨 )
ㅇ 폴더 이동 , 파일명 수정 사항 업데이트 지연 및 자막 추가 미인식, 재스캔시에도 변경 내용 반영 안되는 증상
Twonky 와 함께 해보기 위해 이런 저런 해결책들을 찾아보았지만
결론은 단 하나 , MiniDLNA 설치가 답이다.
a. Wd My Cloud 제어판에서 기본 Twonky DLNA 서버 정지
b. Wd My Cloud 에 MiniDLNA 설치
( Transmission 설치와 마찬가지로 chroot 상태에서 실행한다 )
chroot /DataVolume/debian /bin/bash apt-get install minidlna |
minidlna설치가 완료되면 서비스가 자동으로 시작되므로 설정을 변경하기 위해 서비스 정지
service minidlna stop |
c. /etc/minidlna.conf 수정
Transmission 과 달리 별다른 권한수정 없이 설정파일 변경만으로 충분하다.
nano /etc/minidlna.conf |
media_dir=/mnt/Public -> 접속 디렉토리 또는 아래와 같이 Video, Music , Pictures 를 따로 지정해서 설정 가능 media_dir=V,/mnt/Public/Shared Video -> Video 만 media_dir=M,/mnt/Public/Shares Audio -> Music 만 media_dir=P,/mnt/Public/Shared Image -> Pictures 만 friendly_name=minidlna on WD My Cloud -> 기기표시 이름 ( OPTION ) inotify=yes -> 새로고침 여부 확인 ( OPTION ) notify_interval=895 -> 새로 고침 간격 (second) ( OPTION ) root_container=. -> 폴더 보기 방식 ( V,M,P 등을 사용할 수 있음. OPTION ) |
d. miniDLNA 시작
service minidlna start |
wdmc내부ip:8200 으로 현재 MiniDLNA 의 작동 상태를 확인할 수 있다.
* Media scan in progress 라고 나오면 DLNA 폴더 내용을 스캔하여 라이브러리를 업데이트중이라는 뜻이며
커맨드상에서 minidlnad -R 명령으로 라이브러리를 강제 업데이트 할 수 있다.
'IT' 카테고리의 다른 글
WD My Cloud 온도 체크 (smartctl) (0) | 2019.10.12 |
---|---|
Putty 디렉토리 파란색 안보이는것 잘보이게 색상 변경 (0) | 2019.10.10 |
WD My Cloud Gen1,Gen2 활용법 (와일드랑님의 개별 package 설치) (0) | 2019.10.07 |
WD My Cloud 활용기 모음 (사용법 모음) (0) | 2019.10.07 |
Wd my cloud , Pogoplug , Synology , Taobao NAS 사양 비교 (0) | 2019.10.05 |