분류

레이블이 소프트웨어인 게시물을 표시합니다. 모든 게시물 표시
레이블이 소프트웨어인 게시물을 표시합니다. 모든 게시물 표시

2022년 5월 2일 월요일

DA# MARIADB, MYSQL 한글 깨짐 해결

개요 

개인적으로 공모전 준비나 DAP 시험 준비를 위해 'ENCORE-DA#'을 사용 하던 중 UTF-8 인코딩 타입의 한글이 깨지는 현상이 발견되었고, 이에 관한 기술 지원을 받기 위해 문의했으나, 상당한 시일이 걸리기도 하고, 자료를 찾는데 애먹기도 해서 정리를 해 보았습니다. 

먼저 mysql 이나 mariadb의 데이터베이스와 테이블에서 모두 utf-8로 설정이 되어있는지 확인 하신 이후에도 안될 경우에 대한 이야기 입니다. 해당 부분이 설정되지 않은 분들은 타 블로거의 글을 참조 하시기 바랍니다. 

저의 경우 utf-8을 모두 맞췄으나 da#에서 한글이 깨지는 케이스에 대한 설명 입니다. 설정이 잘 되어있기에 dbeaver 나 콘솔에선 한글이 정상으로 보이지만 da#만 깨집니다. 

utf-8 설정 참조 블로그 글


1. DA#에서 필요한 MARIADB(MYSQL) DRIVER 

WINDOWS 기반의 DA#에서 MYSQL이나 MARIADB에 접속하려면 우선 ODBC 드라이버를 설치해야 합니다. 설치하지 않은 경우 다음과 같이 데이터베이스를 선택하는 항목이 비어져 있습니다. 

DA# 리버스> DB리버스 > 데이터베이스 접속 화면

1) odbc 드라이버 선택

직접 테스트를 수행해본 결과 mysql 5.3.14(32bit) 이상의 버전이 설치 되어있어야 합니다. 처음 3.x 버전을 사용했을 경우 UTF-8 인코딩으로 테이블과 데이터베이스가 모두 설정이 되어 있어도 한글이 깨지는 현상이 발생 합니다. 또한 os가 64bit 버전이어도 da#프로그램이 32bit 버전이므로 32bit버전을 받는 것을 추천합니다. 

드라이버 다운로드 버전

MYSQL DRIVER DOWNLOAD 링크  <--- 이 부분을 클릭하셔서 정식 MYSQL ODBC 드라이버를 다운로드 받습니다. 

2) 드라이버 설치 

8. 대역의 32bit 드라이버 설치는 별다른 선택이나 옵션 없이 이루어집니다. 하지만 5.x버전 드라이버는 visual studio 패치가 이루어져야 합니다. 
visual studio 2013 x86 redistributable 설치 안내
visual studio 2013 x86 다운로드 페이지


visual-studio 다운로드 사이트
2013 x86을 선택하고 다운로드 후 설치는 그냥 다음만 누르면 되므로, 드라이버와 visual studio를 모두 설치해줍니다. 

3) odbc 설정하기 

windows 시작 버튼을 누르고 odbc를 입력하면 odbc 드라이버 설정을 수행하는 화면이 등장 합니다.  DA#에서는 32bit 버전이 필요하기에 32bit 환경 설정을 수행해 주세요 
odbc 드라이버 연결 창
ODBC 드라이버 설치 시 3.x 버전에서는 한글이 깨지는 이유는 딱 봐도 알 수 있습니다. 5.x버전 드라이버에서는 ANSI와 UNICODE 형식의 드라이버를 구분해서 지원하는 반면 3.x버전 드라이버에서는 구분이 없는 것으로 보아 둘 중 하나의 형식만을 지원 합니다. 

DA#에서는 Unicode 드라이버 형식만을 지원하는 것 같습니다? 그렇다면 3.x 버전은 ansi 만 지원 하겠네요 . 테스트를 해보면 알 일입니다. 


본인의 프로젝트 정보에 맞춰 접속 정보를 입력합니다. 여기서 Data Soruce Name 이라는 부분이 있는데 이 부분은 사용자가 사용하기 위한 명칭을 정의하는 부분입니다. 실제 db와 달라도 괜찮습니다.  IP, PORT, USER, PASSWORD를 넣고 TEST를 누르면 DATABASE 목록이 조회 됩니다. 여기서 접속할 데이터베이스를 선택하고 ok를 누르시면 환경이 저장 됩니다. 

4) da#에서 테스트 


da# 모델러를 실행 후 리버스 -> db리버스 를 누르면 생성되는 팝업창에서 mysql과 접속정보를 입력해줍니다. 데이터 소스는 사전에 odbc를 등록한 목록의 명칭이 선택창으로 나타나게 됩니다. oracle 을 리버스 할 경우 테이블을 선택하는 기능이 있는데 mysql은 이상하게 해당 기능이 보이질 않습니다. 


3.x 버전 odbc설치시 한글 깨짐 상태


mariadb odbc 5.3 windows 32bit 설치시 정상


결론 

mysql odbc는 3.x 버전에서는 한글 깨짐,

5.x 이상 버전의 windows 64bit 용 드라이버는 da#에서 인식되지 않음.

5.x 버전의 windows 32bit 용 드라이버는 unicode와 ansi 모두 한글 정상 지원 

이상입니다. 읽어주셔서 감사합니다. 


2021년 10월 17일 일요일

첫 nas 구매 6. nas4dual의 feed 다운로드 시간을 직접 정해보자.

개요

nas4dual을 사용하면서 원하는 것들에 대한 직접적인 설정 방법을 계속해서 포스팅하고 있습니다. 이번이 6회 째네요 이번에는 rssfeed에 대한 다운로드 시간을 직접 정하는 방법에 대해 기술해보겠습니다. 

feed 다운로드 시간을 직접 정해보자 

flexget 프로그램은 linux 자체의 crontab 이라는 스케줄러를 통해서 실행됩니다. 하지만 nas4dual에서는 이 crontab에 대한 지원이 너무도 적습니다. 

4개의 설정밖에 없는 rssfeed 검색 크론탭 설정

linux의 크론탭은 5개의 자리수로 구성됩니다.

                        월        요일

이런 형태의 자리수에 채워진 숫자대로 반복이 정해지는 겁니다. 따라서 목요 드라마만 다운받고 싶은데 매일 다운로드를 수행한다는 것도 자원 낭비이고, 혹은 매일 오후 3시에 돌았으면 하는데 그 시간을 설정할 수 없는 현행의 프로그램으로는 약간의 개선이 필요한 상태입니다. 

현재의 crontab은 아래와 같은 형태로 구성되어있습니다. 

명령어 : crontab -l 

결과 : 

0       *       *       *       *       /etc/rss.sh exec > /dev/null 2>&1 &
26      19      *       *       *       /sbin/hwclock -w
26      19      *       *       *       /sbin/ntpdate clock.iptime.co.kr
26      19      *       *       5       /sbin/ez-ipupdate -a 192.168.219.104 -u
이 명령줄을 각각 해석해보자면 이렇습니다. 
0       *       *       *       *      
0분   매시  매일 매월   모든요일

26      19      *       *       *  
26분  19시   매일  매월  모든요일 

26      19      *       *       5  

26분  19시  매일  매월   금요일 요일은 0-7 월-일 요일입니다. 

3시간 마다 옵션을 선택했다면 시간 부분이  */3 으로 되어있을것입니다.

저는 집에 가기 전에 오늘 볼 에니메이션을 다운받아놓고 컴퓨터가 대기했으면 좋겠습니다. 따라서 매일 오후 1시경에 시작해서 제가 보고싶은 것들을 모두 다운로드하고 영상이 기다렸으면 좋겠습니다. 하지만 이런 생각은 인터페이스에 반영되지 않았습니다. 

크론 스케줄러 파일의 위치는  /var/spool/cron/crontabs/root 파일입니다. 따라서 vi 편집기를 통해 이 녀석을 고칩니다. (원래는 crontab -e명령을 통해서 할 수 있지만 명령이 안됩니다.) 

telnete 접속후 다음 명령을 수행합니다. 

명령어 :  vi /var/spool/cron/crontabs/root 

crontab 편집화면

vi 편집기에서는 키보드의 i키나 insert키를 눌러 화면 하단에 --insert--라는 마크가 나와야 수치를 변화 시킬 수 있습니다. 또한 녹색 커서가 나오는데 이 커서의 앞 부분을 수정할 수 있습니다. 뒤쪽이 아닌 앞입니다. 보통의 편집 모드와 약간 다릅니다. 

저는 새벽에 방영한 녀석들과 낮부터 초저녁까지 방영하는 녀석들을 매일 2번 찾아보고 싶습니다. 따라서 다음과 같이 설정 하였습니다. 

저 앞의 숫자에 대한 편집이 완료 되었다면 키보드의 esc 키를 한번 누른 후  : 를 입력하고 x를 입력하고 엔터를 입력하면 저장 됩니다. 
크론 편집 화면 탈출
esc 키를 누르면 하단의 --Insert--마크가 사라집니다.  그상태에서 : 누르고 x 누르고 엔터 

크론탭에서 지원하는 문법은 쉽습니다. 다중 지정은 , 를 통해서 반복은 / 를통해서 지정할 수 있습니다. 

예를 들자면 다음과 같습니다.  
30분 마다 반복은 */30 * * * * 
10분 30분 반복은 10,30 같은 식입니다. 

제타위키를 보셔도 도움이 될 것 같습니다. 

2021년 10월 15일 금요일

첫 nas 구매 5. nas4dual의 rss 설정 제대로 알아보자.

 개요 

nas4dual의 설정 중 rss 피드를 설정하는데 정확한 정보를 찾는것이 너무 어려워 문서를 또 한장 쓰게 되었습니다. 개인적으로 이번 nas 구매에서 가장 큰 역할로 꼽은 것이 rss 다운로드 기능이기에 이것에 대한 설정을 정확히 할 수 없을 경우 여러 불편함이 발생하기 때문입니다. 


RSS 추가 및 설정 방법

일단 RSS라는 것은 토랜트의 목록을 관리하는 서버입니다. 한국 방송보다는 일본 에니메이션을 다운로드 받아 보는 것을 좋아하기에 RSS는 필수이며 관리가 필요없이 한 번 등록하고 반 영구적으로 (해당 RSS가 사라질 때 까지) 사용하는 항목입니다. 관리가 필요 없다는 것이 가장 큰 장점이기에 한번의 설정으로 가장 큰 효과를 봐야 합니다. 

가. RSS 피드 등록 

IPTIME 자체 UI의 FEED 목록
RSS 피드는 TORRENT 관리의 RSS FEED 설정을 통해서 수행할 수 있습니다. 이 RSS FEED를 관리하는 프로세스는 FLEXGET이라는 LINUX용 프로그램으로 구성되어있습니다. 인터넷에 본인이 원하는 RSS를 검색해서 추가 또는 삭제할 수 있는 인터페이스가 되어있습니다. 간단하게 주소를 추가하면 되므로 입력항에 대한 설명은 하지 않겠습니다. 또한 제목도 필요가 없습니다. 

나. FEED 필터 등록 

피드는 하루에도 수십,백 건의 자료가 올라오는데 RSS 피드만 추가 할 경우 해당 자료 전체 가 다운로드 됩니다. 방영되는 에니를 전부 보는 저로서는 피드만 추가하면 되지만 FEED 필터를 추가하는 설명도 진행하도록 하겠습니다. 

FEED 필터는 FEED에 올라오는 수많은 자료 목록 중 본인이 원하는 자료만 검색할 수 있는 포함 단어, 그리고 본인이 원하지 않는 단어를 제외하는 제외 단어 등을 여러개 등록할 수 있습니다. 파일 하나마다 허용되는 단어와 허용되지 않는 단어를 목록으로 화 해서 관리합니다. 등록된 단어는 하나 하나마다 허용 , 거부 권한을 갖는 목록으로 작성되어 TORRENT 하나당 그 내용과 제목을 기준으로 검색을 수행하게 됩니다. 

예를 들어보면 다음과 같습니다. 
포함단어 '바보', '멍청이'
제외단어 '똥개' 
라고 작성 한 경우 TORRENT의 제목이나 내용에 '바보나 멍청이'가 TORRENT는 자동으로 추가 되지만, '멍청이 똥개' 는 다운로드 되지 않습니다. 똥개가 들어가있기 때문이죠. 

뭐 RSS라는 것을 이미 알고 계신분이 FEED 등록을 하기에 불필요한 설명 이라고 생각이 되지만 처음이신 분들은 아셔야 합니다. 그리고 전 RSS를 이미 사용하고 있었음에도 불구하고 FLEXGET을 처음 써보기에 필터링 되는 방식을 알아내는데 상당한 시간을 소요했습니다. 일단 FLEXTGET이 필터링을 담당한다는 것을 알아내는 것 까지만 해도 3시간이 걸렸습니다. 

이러한 피드 필터를 등록하면 RSS 내에서 자신의 취향에 맞는 파일만 받을 수 있으므로 한번의 설정으로 필요한 파일을 지속적으로 공급 받는데 도움이 됩니다. 

feed filter 등록시 유의사항

feed filter는 매우 유용하지만 종종 오탐을 하기도 합니다. 완성된 단어를 꼭 사용해야 합니다. 영문 단어의 약어를 합친 경우 마그넷 링크를 오탐하여 원치 않는 자료가 다운로드 됩니다. 예를 들자면 나혼자 산다를 영문 약자로 'AL'이라고 했을 경우 같은 거죠. 사람도 이해하기 힘든 약어는 컴퓨터도 이해하지 못합니다. 

torrent의 설명 부분에 마그넷 링크가 있는 경우가 있기 때문입니다. 마그넷 링크는 임의 영문 숫자의 조합으로 만들어지기에 약어와 겹치는 경우가 매우 많습니다. 

다. FEED필터가 작동하는지 확인하기 

FEED 필터는 또다시 TELNET을 통해 nas4dual에 들어가야 확인할 수 있습니다. 또한 시간 단위로 crontab이라는 리눅스 자체의 스케쥴링을 통해서 작동하기 때문에 해당 시간 외엔 프로세스에서 조회할 수 없습니다. 
telnet의 사용법을 모르시는 분은 이전 게시물을 확인하시면 되겠습니다. 


따라서 크론탭에 예약되어있는 정보를 확인합니다. 

명령어 : crontab -l 

결과 : 

0       *       *       *       *       /etc/rss.sh exec > /dev/null 2>&1 &
26      19      *       *       *       /sbin/hwclock -w
26      19      *       *       *       /sbin/ntpdate clock.iptime.co.kr
26      19      *       *       5       /sbin/ez-ipupdate -a 192.168.219.104 -u

위에 보이는 결과 목록 중 /etc/rss.sh exec 가 nas4dual에서 rss 피드를 호출하는 녀석입니다. 뒤에 따라 붙은 > /dev/null 2>&1 &는 프로세스에 대한 호출 로그를 남기지 않겠다. 그리고 백그라운드 서비스로 부르겠다 라는 명령입니다. 

따라서 /etc/rss.sh exec명령을 통해 호출해보겠습니다.  

2021-10-15 21:06:03 VERBOSE  task          rss340409313    ACCEPTED: `바보 똥개.mp4` by regexp plugin because regexp '바보' matched field 'description'
2021-10-15 21:06:03 VERBOSE  task          rss340409313    REJECTED: `바보 똥개.mp4` by regexp plugin because regexp '똥개' matched field 'description'
명령을 수행하면 위와같이 목록에 있는 명령으로 각각 필터링이 이루어지는 것을 알 수 있습니다. 명령어에 보면 regexp 라는 것이 있는 것으로 보아 정규식도 활용 가능 한 것으로 보입니다. 

라. RSS 파일 및 필터 위치 

RSSFEED 파일은 torrent다운로드 폴더로 설정한 디스크의 한단계 위에 존재합니다. 저는 HDD1의 torrent라는 폴더에 다운로드 위치를 설정했는데 그 바로 위인 /mnt/HDD1/.rss_cfg/폴더에 해당 파일들이 있습니다. 
명령어 : /mnt/HDD1/.rss_cfg/
 ls
결과 :
rss340409313.yml  rss340407888.yml  received          flexget.log       db-config.sqlite  config.yml

이렇게 여러개의 파일이 있는데 db-config.sqlite는 아마도 저장이력이나 환경정보를 갖고있는 데이터 파일인것 같습니다. 

config.yml은 등록된 rss-feed 목록을 관리하는 환경 파일입니다. 등록된 rss-feed 주소 만큼 늘어나니 건들지 않는게 좋습니다. 

rss와 숫자로 이루어진 yml 파일이 필터링이 포함된 피드 파일입니다. 그중 하나를 열어보자면 내용은 이렇게 구성됩니다. 

명령어 : vi rss340409313.yml 
결과 : 
rss: https://토랜트 rss 주소/
verify_ssl_certificates: no
regexp:
accept:
- '바보'
- '멍청이'
reject:
- '똥개'
magnets: yes
exec:
auto_escape: yes
on_output:
for_failed: "/usr/python3/bin/magnet_location.sh '{{url}}' '{{task}}'"

여러 단어를 등록해야 하는경우 엑셀이나 단어장에 - '검색어' 형태의 목록을 만들어두셨다가 vi 편집기를 통해 일괄 등록하는 것도 가능합니다. 

참고 

web 인터페이스에서 보는 원본 rss 설정 파일은 이곳에 있습니다. 두곳을 모두 변경해야 합니다. 
 cd /etc/property/RSS/

마. upnp가 지원되지 않는다면 재부팅은 되도록 삼가하자 

torrent 의 자료를 제공하는 측 (peer) 가 접속하는 포트는 nas4dual이 재실행 될 때 마다 무작위로 선정됩니다. 공유기에 DMZ 설정을 해놓게 되면 보안에 취약한 nas4dual을 통해 별별 놈들이 다 들어올 수 있으므로 저는 nas를 DMZ으로 설정해놓지 않았습니다. 특정 포트만 인터넷에 공유해놓고 그마저도 포트포워딩을 통해 원본 포트와 다르게 변경을 해놓았는데 재부팅을 할 경우 해당 포트가 변경됩니다. 

포트가 변경되면 다운로드 속도가 줄어듭니다. 
upnp를 설정한 경우는 문제가 없습니다.  


transmission 시작시 무작위 포트 선택이라는 옵션은 해제할 수 없기 때문입니다. 그리고 재부팅을 하면 한번에 다운로드 받는 파일 수도 변경되므로 torrent에 대한 설정 변경을 최소화 하기위해 재부팅을 저는 안하고 있습니다. 재부팅시마다 연결 포트를 매번 변경해준다는 선택지도 있습니다. 하지만 귀찮습니다. 
2023transmission qt pc버전을 통해 무작위 포트가 해제 됩니다. 

기타 주의사항 

windows에서 토랜트의 다운로드 상태를 보려면 transmission-remote gui라는게 필요해집니다. 여기에서 토랜트에 대한 환경설정을 할 경우 대부분 무시되거나, 환경 설정이 꼬이는 경우가 발생합니다. 따라서 안드로이드나 windows 상에서 환경을 변경하시면 아니되옵니다. rss가 다운로드 되지 않을 경우 torrent다운로드 폴더를 다른 디스크 상으로 바꾸면 다시 정상 작동할 것으로 생각 됩니다. (안에 들어있는 .session 폴더나 .python 폴더 .rss_cfg 폴더의 설정이 어딘가에 중복되서 발생하는 것 같습니다. ) 

디스크 경로를 바꿀 수 없을경우 torrent 서비스를 중지하시고 .session .python .rss_cfg 3개의 폴더를 제대로 지우시고 토랜트 서비스를 재실행 하셔야 합니다. 

참고로 한 가지 설정만큼은 잘 되는 앱이 있네요 windows 10에서 torrent 다운로드 개수를 변경 할 수 있는 앱입니다. 트랜스미션bt <--한번에 다운로드 되는 개수만 늘려줍니다. 다른건 다 적용안되요. 
다만 이 다운로드 개수는 재부팅하면 다시 초기화가 됩니다. 

저는 지난번 설정에서 다운로드 속도에 대한 상향을 통해 18메가 언저리는 꾸준히 나오는데 그 이상은 잘 안나옵니다. 26메가는 아주 가뭄에 콩나는 수준으로 나와요. 회선은 500Mbps 니까 /8해서 62.5MB/s가 최대인데 반절도 못씁니다. 공유기를 바꾼 이후 더 나오면 캡처해서 올리겠습니다. archer ax73을 구매하였으나. 대한통운 택배 부분파업의 피해를 보고 있습니다. 


10개 파일을 동시 다운로드 해도 피어수가 많지 않아서인지 cpu는 20% 이내로 쓰네요. 

주의사항 
기타설정 -> 외부 접속 관리를 설정 할 경우 
종종 rss 에서 다운로드가 되지 않는 경우가 발생했습니다. 
 Unable to download the RSS for task rss340932804 (https://사이트rss.php?filter=15&minMB=2000): HTTPSConnectionPool(host='사이트, port=443
위와 같은 에러 메시지가 발생할 경우 국가 차단 설정에서 해당사이트가 필터링 되는것이라고 보시면 되겠습니다. 또한 nas4dual의 국가 차단의 IP 대역이 실제 국가와 일치하지 않는 현상이 있습니다. 

2021년 10월 11일 월요일

첫 nas 구매 3. 안드로이드에서 동영상 자막보기

 개요 

지난 목요일 설치한 NAS에서 외부에서 미디어를 보다보니 자막이 보이지 않는 불편함이 있었습니다. 따라서 이에 대한 개선책을 기술해보겠습니다. 순서는 IPDISK 설정 -> MX플레이어 설치 -> CX 파일 탐색기 설치 및 설정 순으로 진행됩니다. 불필요하거나 너무 쉬운 부분은 그냥 생략하겠습니다. 


1. IPDISK 설정

IPDISK 설정법은 여러 분들이 공유하고 있으므로 대체하겠습니다. 

IPTIME NAS설정 <-- 궁굼하면 클릭 


2.MX플레이어 설치 

이 부분도 PLAY STORE 에서 그냥 MX 플레이어를 설치하면 됩니다. 하지만 검색하면 잡다한 앱들이 같이 조회 되기에 일단 화면을 첨부합니다. 

mx 플레이어
딱 위 사진과 같은 플레이어 명칭과 제작 업체 제품을 다운로드 받아야 합니다. 


3. CX 파일탐색기 설치 및 설정 

CX 파일 탐색기 역시 설치는 동일 환경설정도 간단합니다. 

cx 파일탐색기
위 사진도 유사한 어플이 검색되는 관계로 딱 요거 다운받으라고 올려놓습니다. 

다음은 설정입니다. 설정도 어렵지 않고 인터페이스도 제법 쉽게 만들어져서 사용감이 좋은 앱입니다. 


일단 cx파일 탐색기를 구동하시고 네트워크 탭을 누르고 새 저장소를 클릭합니다. 
다음으로 본인의 ipdisk 주소와 FTP를 선택하시고 사용자명, 비밀번호를 입력하고 확인을 누릅니다. 


그러면 위와 같이 IPDISK 연동은 완료 되었습니다. 다음은 플레이어 설정입니다. 



다시 메인화면으로 돌아가셔서 오른쪽 위에 ... 을 누르면 위와같이 설정 버튼이 팝업됩니다. 



설정 창에 들어가면 동영상 플레이어에 체크되어 있는 부분을 해제하여 기본 동영상 플레이어가 작동하지 않도록합니다. 또한 위쪽의 기본앱을 눌러서 등록된 기본앱이 있을 경우 제거합니다. 


다시 메인페이지로 돌아가서 본인의 IPDISK를 눌러보면 폴더를 탐색하실 수 있고 이제 영상에서 자막이 자동으로 추가됩니다.
영상 파일과 자막 파일 

 다만 영상명칭과 자막의 명칭은 동일하게 (확장자 제외) 구성 되어있어야 합니다. 또한 자막 파일과 영상 파일은 같은 폴더 내에 있어야 합니다. 

구성이 완료되면 위와 같이 영상 파일 로드시 자막 파일이 같이 로드되어 나옵니다. 

이상입니다. 
읽어주셔서 감사합니다. 

2021년 10월 10일 일요일

첫 nas 구매 2.TORRENT 다운로드 속도 향상 시키기

개요

torrent의 속도가 이상하게 평소 pc로 받던 것보다 느려서 telnet을 통해 환경 설정을 하는 방법을 찾아보았습니다. 

 

telnet을 통한 torrent 환경 변경 

torrent를 다운로드 하는 transmission deamon의 속도를 높이려면 telnet을 통해 settings.json 파일을 변경해야 합니다. 하지만 확인 결과 환경 파일이 아닌 프로세스를 호출하는 프로그램에서 직접 파라미터로 제어하는 것이 확인 되었습니다. 따라서 이 부분 중 수정할 수 있는 부분에 대해 순차적으로 기술하도록 하겠습니다. 

torrent 설정이 잘못되었을 경우나 torrent가 실행 안될 경우 
혹은 crontab에 등록되있는 토렌트 명령 /etc/rss.sh 를 실행했을때 
아래와 같은 오류가 뜬다면 

-ash: /usr/python3/bin/flexget: not found

토렌트 다운로드 디스크에 있는 3개의 폴더를 지워야 합니다. 
.rss_cfg 
.session 
.python  
그리고 다음 명령을 통해 flexget을 다시 설치해주세요 
/bin/sh /etc/rss.sh

이후 nas 관리자 화면에서 토랜트를 중지했다가 재 시작해야 합니다. 

가. putty 다운로드 

먼저 putty라는 도구를 다운로드 받아야 합니다. 콘솔 기반의 인터페이스기에 초보자는 조금 어렵게 느껴질 수 있습니다. 

putty다운로드 링크 <--클릭

putty 다운로드 페이지

상위 링크에 가시면 windows나 arm 기반의 버전별로 다운로드를 지원합니다. 자신의 os버전에 맞게 다운로드 하셔서 설치하시기 바랍니다. 별다른게 없으니 그냥 다음 다음 누르면 끝납니다. 


나. nas4dual 관리 페이지 설정 

관리 페이지에서는 다음 일을 수행합니다. 이미 아시는분은 지나치셔도 좋습니다. 
torrent저장 폴더 생성 -> torrent 설정 -> telnet설정 

1) torrent 폴더 생성 

우선 메뉴에서 폴더/사용자 관리를 열어 폴더 관리 메뉴로 들어갑니다. 다음으로 원하는 디스크를 선택하고 새 폴더를 누르면 폴더명칭과 폴더에 할당할 서비스를 선택할 수 있습니다. 설정을 다 하신후 저장해주세요. 


저는 윈도우 공유와 ftp만 선택하였습니다. 다른 서비스는 사용하지 않습니다. 


2) torrent 설정 

다음으로 torrent 관리 -> torrent 설정으로 들어가셔서 torrent 다운로드를 실행상태로 만들고 완료목록 자동삭제, 원격 GUI지원 등을 클릭하신 후 조금 전에 만든 torrent 폴더를 다운로드 폴더로 지정하여주세요. 그리고 저장을 하면 torrent에 대한 기본 설정은 끝납니다. 

3) telnet설정 

다음으로 telnet 설정입니다. telnet을 해야 torrent의 속도를 변경할 수 있어요. 

메뉴의 시스템 설정 -> 기타 설정으로 들어가셔서 화면 중앙에 있는 telnet 부분을 클릭하시고 telnet설정을 실행으로, 그리고 root 비밀번호를 입력하신 후 저장하기를 눌러주세요. telnet은 보안에 취약하기 때문에 사용 후 다시 실행중단으로 꼭 변경해주세요 

다. putty 접속 및 torrent 환경 파일 변경 

다음으로 처음 설치한 putty를 선택하셔서 Host Name에 nas 서버 ip를 넣고 port에 23을 입력 후 접속합니다. 



위와 같이 콘솔 창이 열리면 처음에는 root라고 입력하고 엔터, 그 다음은 좀전에 설정한 비밀번호를 누르고 엔터를 치시면 됩니다. 

관리자 권한을 획득한 후 /usr/hddapp/sbin 폴더로 들어가 파일 목록을 확인합니다. 
다음 명령을 차례로 수행하면 아래와 같은 결과를 볼 수 있습니다.
su 엔터 
cd /usr/hddapp/sbin 
ls -la 
localhost> su 

/# cd /usr/hddapp/sbin

/ # ls -la
drwx------    2 root     root        12288 Jul 27 17:53 lost+found
drwxr-xr-x    8 root     root        14700 Oct  9 20:14 dev
drwxr-xr-x   19 root     root         1024 Oct  9 21:14 .
drwxr-xr-x   10 root     root         1024 Oct 10  2021 var
drwxr-xr-x    2 root     root         1024 Oct 10  2021 temp
drwxr-xr-x    3 root     root         1024 Oct 10  2021 syscache
drwxr-xr-x    4 root     root         6144 Jul 27 17:53 lib
dr-xr-xr-x  239 root     root            0 Jan  1  1970 proc
dr-xr-xr-x   12 root     root            0 Oct 10  2021 sys
drwxr-xr-x   11 root     root         1024 Oct  9 20:30 usr
-rw-------    1 root     root         1024 Oct  9 20:46 .rnd
drwxr-xr-x    3 root     root         1024 Oct  9 21:32 tmp
lrwxrwxrwx    1 root     root           11 Jul 27 17:53 linuxrc -> bin/busybox
drwxr-xr-x    4 root     root         1024 Oct 10  2021 mnt
drwxr-xr-x    2 root     root         1024 Jul 27 17:53 bin
drwxr-xr-x    7 root     root            0 Oct  9 21:32 system
drwxr-xr-x   21 root     root         3072 Oct  9 21:12 etc
drwxr-xr-x    2 root     root         1024 Jul 27 17:53 root
drwxr-xr-x   19 root     root         1024 Oct  9 21:14 ..
drwxr-xr-x    4 root     root         1024 Oct  9 18:07 home
drwxr-xr-x    2 root     root         3072 Oct 10  2021 sbin


위에 보이는 파일 목록 중 transmission-deamon 이라는 파일과 transmission-remote 라는 두개의 파일이 토랜트를 전송해주는 프로그램입니다. 그 중 remote는 원격앱을 통한 제어를 지원해주는 프로그램이고 deamon은 다운로드를 수행해주는 프로그램입니다. 

ps -ef 명령을 통해 좀 더 자세히 보겠습니다. 
18169 root      22120 S   /usr/hddapp/sbin/transmission-daemon -c /mnt/HDD1/torrent -w /mnt/HDD1/torrent -g /mnt/HDD1/torrent/.session -L 300 -l 50 -X 1 -s 100000 -S 100000 -FD -p 9091 -t -u 사용자 -v 비밀번호
호출할 때 옵션을 주는 것이 해당 파일을 호출하는 스크립트 파일을 찾아야 할 것 같습니다. 이 스크립트의 옵션은 -L 300이 최대 시드 -l이 토랜트 하나당 시드 -s가 다운로드 -S가 업로드입니다. 

기본값 인 0으로 무제한 다운로드, 업로드 속도에 대한 설정을 수행 할 경우 100,000 KB/s 가 설정 되는데 일반적인 가정 통신 속도로 환산을 해보면 100Mbps(12.5MB/s) 에 해당합니다. 원래는 설정을 변경하지 않아도 다운로드 속도가 잘 나와야 하는데. 제 nas는 느려도 너무 느립니다. 토랜트 모두를 합쳐서 10MB/s밖에 나오지 않습니다. 

torrent 다운을 담당하는 transmission의 프로세스ID는 위 그림에서 제일 위에 나온 18169 입니다. 프로세스 ID는 프로그램을 실행할 때 마다 순차적으로 자동 증가하므로 ps 명령을 통해 조회해보지 않으면 알 수 없습니다.  

토랜트 트랜스미션 프로세스 조회 커맨드: ps -ef | grep trans 

여기서 ps 는 프로세스 조회 명령 -ef 는 상세정보 | grep 는 해당 정보만 조회 trans는 transmission-deamon 중 앞자리만 쓴 것 입니다. 

여기저기 파일을 뒤적여본 결과  /etc/property/Torrent.set 파일에 토랜트의 최고 속도는 지정되지만 그외의 정보는 찾을 수 컴파일이 되어 있는지 아무리 검색을 해도 나오지 않았습니다. 그래서 vi 편집기를 통해 여러 설정을 해 보았습니다.
vi /etc/property/Torrent.set

run=1
max_down_rate=50000000
max_up_rate=0
down_folder=/HDD1/torrent
count=0
min_peer=200
pex=1
auto_delete=1
seeding=0
gui_run=1
id=사용자
passwd=비밀번호
port=9091
upnp_enable=0
102412

실제 수행은 ps -ef | grep transmission-daemon 
명령을 통해 나온 프로세스 id를 kill 명령을 통해 종료시키니 자동으로 재시작 되었습니다. 
그리고 아래와 같이 정상적으로 적용 다운로드 속도만 50Gbps로 정상적으로 추가되었습니다. 어차피 안될거 뻥튀기좀 해줍니다. 
##프로세스 삭제 
kill -9 프로세스id
##수행결과 
19055 root      46988 S   /usr/hddapp/sbin/transmission-daemon -c /mnt/HDD1/torrent -w /mnt/HDD1/torrent -g /mnt/HDD1/torrent/.session -L 300 -l 50 -X 1 -s 50000000 -S 100000 -FD -p 9091 -t -u 사용자 -v 비밀번호-A



토랜트 다운로드 속도는 web 인터페이스 상으로 합계 20MB/s 정도가 나옵니다. 정확한 타임을 제어 보지 않았으나 10여개 파일을 테스트 해봤는데 최대 26300KB/s가 나왔으며, 국내 피어가 많은 예능 프로의 torrent는 약 2GB 파일이 30초 이내에 받아집니다. PC에서 받던 속도와 다르지 않습니다. 국내 파일을 받을 경우 약 20000KB/s 속도가 나옵니다. 최대 속도 설정이 100,000KB/s로 500Mbps에서 나올 수 있는 최대 속도는 /8해서 64MB/s입니다. 이전 받던 속도는 30~40MB/s 정도였습니다. 기본 무제한으로 설정할 경우 100000KB/s인 100MB/s가 최대인데 왜 1/10밖에 나오지 않는지는 의문입니다. 



2021.10.15 nas를 구매한지 2주만에 link aggrigation이 지원되는 장비로 변경하였습니다. 

LINK AGGRIGATION 적용시 29.77MB


500Mbps 회선 link aggregation 적용시 30MB/s나옵니다.
인터넷 회선을 업그레이드 하고 싶지만. 지속적으로 돈이 나가는걸 좋아하지 않기에 여기서 멈추겠습니다.  


arm 보드용 grep 명령이 하위 폴더 파일을 찾지 못하는 관계로 관련된 모든 폴더와 프로세스를 뒤져가며 약 6시간을 보냈습니다. 노력은 배신하지 않는군요 ㅎㅎ.  

아쉬운 점도 있습니다. 해외 파일의 경우 구성되는 경우 피어의 수가 많지 않고 15, 16정도에 머무르며 낮은 속도를 유지합니다. pc에서 파일당 피어수 200씩 주고 작업할때랑은 다르게 느립니다. 이 부분은 조금 아쉽습니다. 

또한 재부팅을 했을 경우에도 해당 파라미터는 유효하며 web 인터페이스에서도 수정은 불가능 하지만 해당수치로 표시됩니다. 

시드 부분도 변경할 수 있는 분이 계시면 알려주시면 감사하겠습니다. 이런건 솔직히 제조사에서 해서 나와야 하는거 아닌가 하네요 


기타 . transmission-deamon에서 설정할 수 있는 것들 

아쉬운점은 트랜스 미션 데몬에서 설정할 수 있는 변수들을 모두 만질 수있다면 최적의 속도를 만들 수 있는데... 그렇지 못한 것이 아쉽습니다. 

명령을 통해 트랜스미션에 대한 환경 목록을 조회할 수 있습니다. 그중 다운로드 속도와 관련된 녀석을 붉게 칠하고 설명을 하겠습니다. 
transmission-daemon --help
/usr/hddapp/sbin # transmission-daemon --help
transmission-daemon은 헤드리스 전송 세션입니다.
원격 전송을 통해 제어할 수 있는
또는 웹 인터페이스.

사용법: transmission-daemon [옵션]

옵션:
 -h --help 이 도움말 페이지를 표시하고 종료
 -a --allowed <list> 허용된 IP 주소. (기본:
                                         127.0.0.1)
 -b --blocklist 피어 차단 목록 활성화
 -B --no-blocklist 피어 차단 목록 비활성화
 -c --watch-dir <디렉토리> 새 .torrent 파일을 감시할 위치
 -C --no-watch-dir watch-dir 비활성화
      --incomplete-dir <디렉토리> 새 급류를 저장할 위치
                                         그들은 완전하다
      --no-incomplete-dir 불완전한 토렌트를 저장하지 마십시오.
                                         다른 위치
 -d --dump-settings 설정을 덤프하고 종료
 -e --logfile <filename> 로그 메시지를 이 파일 이름으로 덤프합니다.
 -f --foreground 대신 포그라운드에서 실행
                                         악마화
 -g --config-dir <경로> 구성 파일을 찾을 위치
 -p --port <포트> RPC 포트(기본값: 9091)
 -s --speed-limit-down <limit> 최대 다운로드 속도
 -S --speed-limit-up <limit> 최대 업로드 속도
 -A --no-allowed 허용된 IP 주소를 비활성화합니다. (기본:
                                         127.0.0.1)
 -t --auth 인증 필요
 -T --no-auth 인증을 요구하지 않음
 -u --username <username> 인증을 위한 사용자 이름 설정
 -v --password <password> 인증을 위한 비밀번호 설정
 -V --version 버전 번호를 표시하고 종료
      --log-error 오류 메시지 표시
      --log-info 오류 및 정보 메시지 표시
      --log-debug 오류, 정보 및 디버그 메시지 표시
 -w --download-dir <경로> 다운로드한 데이터를 저장할 위치
      --paused 시작 시 모든 토렌트 일시 중지
 -o --dht 분산 해시 테이블(DHT) 활성화
 -O --no-dht 분산 해시 테이블(DHT) 비활성화
 -y --lpd 로컬 피어 검색(LPD) 활성화
 -Y --no-lpd 로컬 피어 검색(LPD) 비활성화
      --utp 피어 연결을 위한 uTP 활성화
      --no-utp 피어 연결에 대한 uTP 비활성화
 -P --peerport <port> 들어오는 피어의 포트(기본값:
                                         52413)
 -m --portmap NAT-PMP 또는 UPnP를 통한 포트 매핑 활성화
 -M --no-portmap 포트 매핑 비활성화
 -L --peerlimit-global <limit> 전체 피어의 최대 수
                                         (기본값: 200)
 -l --peerlimit-torrent <limit> 토렌트당 최대 피어 수
                                         (기본값: 50)
 -er --encryption-required 모든 피어 연결을 암호화합니다.
 -ep --encryption-preferred 암호화된 피어 연결 선호
 -et --encryption-tolerated 암호화되지 않은 피어 연결 선호
 -i --bind-address-ipv4 <ipv4 addr> 피어 연결을 수신 대기할 위치
 -I --bind-address-ipv6 <ipv6 addr> 피어 연결을 수신 대기할 위치
 -r --rpc-bind-address <ipv4 addr> RPC 연결을 수신할 위치
 -R --chroot <dir> 루트 디렉토리 설정
 -U --user <user> 권한 변경을 위한 사용자 설정
 -G --group <그룹> 권한 변경을 위한 그룹 설정
 -fd --fake-daemon 가짜 데몬 모드 활성화
 -FD --no-fake-daemon 가짜 데몬 모드 비활성화
 -gsr --global-seedratio ratio 재정의되지 않는 모든 토렌트
                                         토렌트별 설정, 다음까지 시드해야 함
                                         특정 비율
 -GSR --no-global-seedratio
                                         토렌트별 설정, 시드해야 함
                                         비율에 관계없이
 -x --pid-file <pid-file> PID 파일 활성화
 -X --message-level <레벨> 메시지 레벨

3가지 변수가 토랜트 다운로드 속도와 연관된 항목 입니다. 
-s   --speed-limit-down     <limit>     Max download speed
기본값은 10000으로 되어있는데 이게 10메가 바이트입니다. 따라서 본인이 할당하고 싶은 대역 만큼 넣으시면 됩니다. 앞에 1도 고정이 아니기 때문에 본인이 원하는 만큼 넣으면 됩니다. 


2021년 4월 2일 금요일

java runtime exec() 에서 curl post 사용 오류 및 해결

 개요 

오픈 소스 기반 프로그램 수행을 위해 curl 커맨드를 외부 데이터베이스와 연결하여 결과를 받는데 windows 환경에서는 잘 되었지만 linux 기반에 동일한 tomcat과 java 환경에서 수행 시 오류가 발생하였습니다. 오류 메시지는 종류도 다양하지만 주로 아래와 같은 메시지가 나왔습니다. 

보내는 메시지는 다음과 같았습니다. 

String queryTable = "curl -X POST -H \"Content-Type:application/json\" " + " -d  @" + filePath + " " + serverUrl;

형태의 비교적 단순한 문장이었고, 쿼리를 담은 파일을 포함하여 발송합니다. 

여기서 filePath 는 데이터를 전송하기 위해 생성한 데이터 파일의 절대경로입니다.  serverUrl은 전송 대상 서버의 전체 url 입니다. 

옵션 중 -d 뒤의 @ 옵션을 제거하면 파일이 아닌 문자 데이터 형태로 전송할 수 있습니다. 

에러 메시지는 대략 모두 비슷한 유형으로 <h1>이 H4로 바뀌는 정도의 오류였습니다. 

 illegal character varchar='" 

<h1>bad message 400

windows 기반의 tomcat9에서 수도 없이 많은 테스트를 거친 프로그램이기에 믿고 리눅스에 맡겼더니 배신도 이런 배신이 없습니다. 


문제코드 

여러 검색 결과 문제는 java 자체의 Process 클래스에 의한 처리였습니다. 외부 명령을 실행하기 위해 다음과 같은 코드를 작성하여 사용해왔습니다. 

public static String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
String outString = ""; 
try {
p = Runtime.getRuntime().exec(command);
BufferedReader reader new BufferedReader(new  InputStreamReader(p.getInputStream()));
String line = "";
while ((line reader.readLine()) != null) {
output.append(line + "\n");
}
p.waitFor();
outStringoutput.toString();
            if (p.exitValue() != 0) {
                // shell 실행이 비정상 종료되었을 경우
            BufferedReader errorBufferReader = null
            StringBuffer errorOutput new StringBuffer();
                errorBufferReader new BufferedReader(new InputStreamReader(p.getErrorStream(), "EUC-KR"));
                String msg  = "";
                while ((msg = errorBufferReader.readLine()) != null) {
                    errorOutput .append(msg + System.getProperty("line.separator"));
                }
            }
 
} catch (Exception e) {
logger.error(e.getMessage());
}
return output.toString();
}

상위 스크립트 처럼 java 자체의 process runtime exec를 사용 할 경우 linux나 macos 환경에서 알 수 없는 오류로 고생하게 됩니다. 또한 java 자체의 processbuilder를 활용하더라도 동일한 현상이 나타나는 것을 확인하였습니다. 

여러 문서들을 검토 한 결과 Apache commons common-exec 를 사용할 경우 해당 문제가 해결된다고 합니다. 


https://commons.apache.org/proper/commons-exec/

위 라이브러리를 직접 다운 받아 사용하시면 됩니다. maven 환경이라면 dependency에
아래와 같은 항목을 추가해주세요
pom.xml
<dependency>  
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-exec</artifactId>
    <version>1.3</version>
</dependency>  

해결 코드 

package Controller;
import org.apache.commons.exec.CommandLine;
import org.apache.commons.exec.DefaultExecutor;
import org.apache.commons.exec.PumpStreamHandler;
import org.apache.commons.io.output.ByteArrayOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class apCmdLine {

private static final Logger logger = LoggerFactory.getLogger(apCmdLine.class);
 
/**
  * linux 에서 shell script가 비정상 실행되는 오류에 대한 fix 
  * @param command
  * @return
  * @throws Exception
  */

 public String execAndRtnResult(CommandLine command) throws Exception {
      String rtnStr"";
              DefaultExecutor executor new DefaultExecutor();
      ByteArrayOutputStream bs new ByteArrayOutputStream();
      PumpStreamHandler streamHandler = new PumpStreamHandler(bs);
      executor.setStreamHandler(streamHandler);
      int exitCode executor.execute(new CommandLine(command));
      rtnStr = bs .toString();
      logger.info("exitCode : "exitCode);
      logger.debug("outputStr : "rtnStr );
      return rtnStr;
}
}


추가오류 

1. 전송 메시지 출력 

linux 환경에서 정상적으로 데이터 처리가 되고 난 이후 rtnStr로 받은 결과에 위 사진과 같은 메시지가 중간중간에 끼어드는 문제가 발생하였습니다. 
r -   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    90  100    70  100    20  14629   4179 --:--:-- --:--:-- --:--:-- 17500

이 문제를 해결 하기 위해 JSON 스트링이 아닌 데이터에 대한 필터를 고려해보았으나, 라인단위의 중간에 해당 데이터가 끼어드는 경우도 발생하였습니다. 검토 결과 CURL로 데이터를 전송할 경우 전송 결과에 대한 알림이 발생한다고 합니다. 이것 역시 WINDOWS 환경에선 발생하지 않습니다. 

검색에 시간은 제법 들었고 필터도 해보고 여러 삽질을 해봤지만 실제 고치는 방법은 매우 단순했습니다. URL 앞에 -s만 붙여주면 되는 일이었습니다.  

보내는 메시지에 대상 서버 주소 앞에 -s 옵션을 붙여줍니다. -s 는 silent 시스템 메시지를 보내지 마라는 명령어입니다. 
String queryTable "curl -X POST -H \"Content-Type:application/json\" " + " -d  @" + filePath + " -s "queryServer

비슷한 유형을 정리해 놓은 글을 링크합니다. (영문입니다.)

2. 메시지 길이가 길어 스트림을 초과 

이런 경우는 흔치 않을 것 같습니다. json 형태의 데이터를 보내고 그 결과를 받다보니 curl에서 전송할 수 있는 범위를 넘어가더군요. 길이가 길 경우 교환 데이터를 파일 형식으로 보내면 해당 문제는 사라집니다. 하지만 이 방법 역시 문제가 있습니다. json 파일 형태로 보내다보니 파일을 작성한 시점에 동시 트랜잭션이 여러 건 일어나고 서로 다른 데이터를 요구했을 경우 해당 트랜잭션에서 내가 원하는 데이터가 정말 갔다는 것을 보장할 수 없죠. 결국은 runtime exec를 통해 데이터를 교환하는 것 보단 httpconnection을 통해 데이터를 교환하는 것이 적절한 처리 방법으로 생각됩니다. 


이상입니다. 
읽어주셔서 감사합니다. 
읽으신 분에게 도움이 되면 좋겠네요. 

2021년 2월 12일 금요일

POCO F2 PRO 에 LINEAGE 18.1 설치

개요 

 샤오미 미UI 12.2.4 버전에서 발생한 VOLTE 문제 이지만 사실 12.0.4버전에서도 LGU+의 경우 종종 신호를 잡지 못하는 현상이 발생하였고. volte에 대한 문제를 해결하고자 QPST도구를 통한 패치를 수행하려 하였으나 QPST 도구에서 기기가 인식은 되지만 파일을 열 수 없는 현상을 확인하였습니다. 

LineageOS에서는 volte를 지원하는 것을 페이지에서 확인하였으나, 실제로 설치해보니 지원되지 않는 것을 확인하였고. 따라서 안드로이드 11은 LG UPLUS 에서 제대로 지원되지 않는다.  라는 생각이 들 정도 입니다. 


글을 따라하시다가 휴대폰이 벽돌이 된다면 아래POCO F2 PRO 업데이트 후 LTE 오류로 인한 언락 및 설치 방법으로 하면 다시 초기버전의 휴대폰을 사용하실 수 있습니다. 

중요 : 현재 리니지OS 18.1에서도 VOLTE를 사용할 수 있다는 공지가 있어 설치해봤으나 VOLTE는 사용 불가능 상태에 빠집니다. LG U+입니다.


POCO F2 PRO 업데이트 후 LTE 오류로 인한 언락 및 설치 방법

POCO F2 PRO TWRP 설치와 루팅하기 

OS가 현재 사용 불가중일 경우 

MIUI_12.2.4_LIM_GLOBAL <- 링크를 통해 다운로드 하고 설치하셔도 됩니다. 


1. 설치 준비. 

설치를 하기 위해서는 우선 언락이 되어있어야 합니다. 그리고 miui 12.2.4

다운로드 파일은 아래와 같습니다. 

리니지 os 리커버리 이미지 파일 TWRP가 아닌 LINAGEOS 리커버리 파일이 필요합니다. 

리니지os 파일

안드로이드 ADB다운링크

사전에 저는 TWRP 설치를 위해 PLATFORM-TOOL을 다운로드 하였습니다. 참고로 LINEAGE OS 는 TWRP 없이 리니지 OS 리커버리를 통해 설치가 됩니다. 

위의 글로벌 롬, 그리고 리니지 os 리커버리 이미지, 리니지os 파일, adb를 받았다면 설치 준비는 모두 완료된 것 입니다. 


먼저 안드로이드 adb를 적당한 곳에 압축을 풉니다. 

저는 D드라이브에 XIAOMI 폴더를 만들고 그 밑에 풀었습니다. 

다음은 리지지 OS의 리커버리 파일과 OS 설치 파일을 모두 좀전에 압축을 푼 xiaomi 폴더 밑에 둡니다. 


2. 설치하기 

1) miui 12.2.4 버전을 설치. 

먼저 휴대폰을 종료한 후 전원버튼과 볼륨 다운 버튼을 동시에 눌러 fastboot로 부팅한 후 컴퓨터와 usb연결을 합니다. 

다음은 다운로드 받은 miui 12.2.4버전을 platform tool을 통해 열고 reflash 버튼을 눌러 장치 연결을 확인한 후 clean all 을 누르고 flash를 눌러 설치해줍니다. 

이 부분은 POCO F2 PRO 업데이트 후 LTE 오류로 인한 언락 및 설치 방법 와 동일하기에 영상을 캡처나 영상이 필요하시면 위 링크를 가보시면 됩니다. 


2) 리니지 os설치 

먼저 받은 recovery 이미지를 platform tool 폴더에 넣고 다음 명령을 수행합니다. 

fastboot flash recovery recovery.img 

fastboot boot recovery.img 





다음은 리니지 os메뉴에서 udpate > update ADB를 선택한 후 다음 명령을 수행합니다. 

>adb sideload [linage 파일 경로 ]




예 : >adb sideload d:\xiaomi\lineage-18.1-20210120-UNOFFICIAL-lmi.zip

용량이 작아서 이건 금방 업로드 됩니다. 

poco f2 pro 의 경우 커스텀롬이나 EU롬, CHIANA 롬 설치시 SIDELOAD를 이용해야 하는 것 같습니다. TWRP를 이용할 경우 인스톨 오류가 나서 중지되는 경우가 대부분입니다. 참고로 LINEAGE OS 의 경우 용량이 작아 금방 종료되었지만 EU 롬의 경우 30분가량 소요됩니다. USB 3.0을 사용해도 이정도네요. 


하지만 이렇게 설치해도 volte가 된다던 리니지os는 volte 가 먹통이었습니다. 

이상. 삽질기네요 -_- 젠장.. 17.1이나 깔아야겠습니다. 

2021년 2월 10일 수요일

POCO F2 PRO TWRP 설치와 루팅하기

개요 

 기왕 lte 끈김이 자주 발생하는 poco f2 pro 를 커스텀 롬과 lte 패치를 수행해보기로 결정했습니다. 그중 첫번째 단개인 twrp를 설치하고 루팅하는 단계까지에 대한 설명을 해보겠습니다. 루팅은 시스템의 최상위 권한을 가져온다는 말입니다. (최상위 계정이 보통 root 이기때문에 rooting이라고 합니다.) 

이 방법을 수행하면 휴대폰이 초기화되고, 여러 문제점이 생길 수 있으므로 읽는 분은 주의하셔야 하며 책임은 본인이 지셔야 합니다. 휴대폰이 벽돌이 될 수도 있다는 점 미리 공지해드립니다. 


TWRP를 설치하기 위해서는 먼저 언락 을 수행해야 합니다. 언락을 하지 않으셨다면 아래 링크를 참조하세요 

또한 벽돌이 되었다면 아래 링크로 정식롬을 다시 입히면 복구가 됩니다. 

POCO F2 업데이트 후 LTE 오류로 인한 언락 및 설치 방법


1. TWRP 설치준비 

언락이 완료되었다면 2가지의 파일을 다운로드 해야 합니다. 안드로이드 FASTBOOT 모드를 통해 파일을 설치한 ADB 도구와 TWRP 그리고 루팅을 하기 위한 Magisk를 다운받아야 합니다. 

안드로이드 ADB다운링크 <--를 클릭하셔서 정식 안드로이드 SDK도구를 다운 받으세요 자신의 컴퓨터 OS에 맞는 버전으로 받으시면 됩니다. 

TWRP 3.4.1B 파일 <---  클릭해서 다운로드  

Magisk-v20 .4.zip <---  클릭해서 다운로드  

먼저 다운로드 받은 안드로이드 ADB 도구 (platform-tools_r30.0.5-windows)의 압축을 풀어 컴퓨터의 적당한 위치에 넣어줍니다. 

전 D드라이브에 XIAOMI 폴더를 만들어서 넣었습니다. 

그리고 TWRP 파일과 magisk도 같은 폴더에 넣어줍니다. 


2. twrp설치 및 부팅하기 

다음은 windows 시작버튼을 눌러서 cmd 라고 치면 나오는 명령 프롬프트를 마우스 오른쪽 클릭해서 관리자 권한으로 실행해줍니다. 


그리고 설치한 위치로 이동합니다. 

저는 D:/xiaomi/platform-tool입니다. 이동커맨드는 cd이므로 아래와 같이 치시면 됩니다. 

d드라이브로 이동하려면 d:을 먼저 치면 됩니다. 

cd d:\xiaomi\platform-tools

위 커맨드를 칠때 폴더나 파일 명칭은 앞 철자를 누른 후 키보드의 tab 키를 입력하면 자동으로 완성됩니다. 

명령이 정상적으로 수행되었으면 위와같은 상태가 됩니다. 
dir 명령을 쳐서 전체를 확인해보면 다음과 같이 파일이 모두 있음을 확인할 수 있습니다.


다음은 pc와 휴대폰을 연결하기 위해 fastboot모드로 부팅해줍니다. 휴대폰을 종료하고 볼륨 아래 버튼과 전원을 동시에 누르면 쉽게 진행할 수 있습니다. 

다음으로는 adb 도구를 통해 twrp를 설치해줍니다. 
pc와 디바이스가 연결되어있으면 간단한 명령 두줄로 twrp를 설치하고 부팅할 수 있습니다. 

twrp 설치하기 

fastboot flash recovery twrp.img 

저의경우 twrp img파일 이름이 recovery-TWRP-3.4.1B-0328-REDMI_K30PRO-CN-wzsx150.img 이기 때문에 해당 명칭으로 작업하였습니다. 

twrp로 부팅하기 

fastboot boot twrp.img

설치가 정상적으로 완료되면 아래와 같이 twrp 화면을 휴대폰에서 보실 수 있습니다. 


다음은 매지스크 설치인데요 루트 권한을 갖기 위해 필요한 부분입니다. 

3. 매지스크 설치하기 

매지스크를 설치하기 전에 일단 휴대폰을 초기화 해야 합니다. twrp 내에서 진행하면 됩니다. 

다음 절차는 휴대폰 백업을 먼저 하신 후에 하시는 것을 권장합니다. 

1) 포멧하기 

pc에 폰이 연결된 상태에서 

fastboot boot twrp.img 명령을 통해 twrp 부팅을 합니다. 

저같은 경우는 

fastboot boot recovery-TWRP-3.4.1B-0328-REDMI_K30PRO-CN-wzsx150.img 

파일명칭이 다르기 때문에 본인이 설정한 명칭으로 해야 합니다. 

다음은 wife -> format data -> reboot 순입니다. 



2) 매지스크 설치하기 

휴대폰을 다시 TWRP로 부팅하여 다운로드 받은 매지스크 파일을 휴대폰에 넣습니다. redmi k30 pro 제품으로 내 컴퓨터에 잡히기 때문에 그냥 복사 붙여넣기 하시면 됩니다. 


파일이 붙여넣기 되면 이제 TWRP 화면에서 INSTALL 을 눌러 해당 ZIP파일을 Magisk 파일을 선택하고 슬라이드를 당겨 설치합니다. 

 



3) 재부팅 후 안드로이드 설정 

안드로이드 설정은 본인이 알아서 하실 거라 믿고 패스하겠습니다. 


4) 실행 및 업데이트하기 

앱 목록으로 들어가서 매지스크를 실행 -> 업데이트 -> 직접설치 -> 재부팅 순으로 수행하면 됩니다. 



5) 루트권한 체크하기 

루트체커라는 앱을 받아서 실제로 루트권한을 줄 수 있는지 확인하면 되는 간단한 절차 입니다. 



자 이상 이미지와 동영상 그리고 긴 글로 이루어진 twrp 설치와 루팅하기가 종료 되었습니다. 

읽어주셔서 감사합니다.