[Raspberry Pi] 라즈베리파이3 로 나스 만들기( 한 문서로 통합 )
원노트로 작성하고 블로그로 옮긴 글이다. 티스토리가 BlogAPI의 지원을 하지 않아 사진파일은 일일히 첨부해야 했다.
Raspberry Pi 활용(나스만들기)
목표
라즈베리파이를 데이터 저장용 나스, 미디어 파일용 미디어 센터, 게임을 위한 에뮬레이터로 구성 할 것이다.
사전준비
준비물
품명 |
비고 |
가격 |
Raspberry Pi 3 Model B |
|
약 47,000원 |
케이스 |
|
약 7,000원 |
전원 어댑터 ( 5V, 2.5A~) |
|
약 4,000원 |
HDMI 케이블 (1.5 M) |
|
약 4,000원 |
Micro SD CARD (16G) |
|
약 13,000원 |
USB Micro SD Reader |
|
약 5,000원 |
LAN 케이블(Cat 5E/Direct) 3M |
|
약 3,500원 |
방열판 |
|
약 1,500원 |
외장하드케이스(iptime hdd3035) |
|
28,000원(택배비 미포함) |
소계 |
|
약 113000원 |
하드(4TB, 3.5인치) |
집에 있는 거 |
- |
가격은 국내가 기준이다.
라즈베리파이는 11번가에서 Starter Kit으로 일괄 구매했다.
http://www.11st.co.kr/product/SellerProductDetail.tmall?method=getSellerProductDetail&prdNo=1464168496&xfrom=&xzone= : Starter Kit(8종) 76,900원
외장하드케이스도 11번가 구매했다.
모니터, 키보드, 마우스는 집에 있는 거 쓰면 된다.
혹시나 해서 무선 키보드겸마우스를 알아보았다.
제품 |
가격 |
비고 |
Bless ZIO TMK300U 트랙볼 미니 키보드 |
33000원 |
|
logitech K400 PLUS |
최저가(벌크, 영문제품) 27720원 |
작고 키보드와 마우스패드 일체형이다. |
사고 싶었지만 쓸일이 있을까 싶어서 ㅜㅜ 포기했다. 있으면 쓰긴하는데...
기타
용도 |
제품 |
가격 |
비고 |
케이스 |
네오박스 5~6L |
약 5000원 미만 |
케이스로 쓸라고함 3.5인치 하드에 멀티탭까지 포함하려면 6L가 좋음 |
케이스 |
락앤락 똔따렐리소품바스켓 5L 아이보리 INP905IV |
약 9000원 |
케이스로 쓸라고함 |
케이스 |
락앤락 라탄패턴 스토리지 6.5L |
약 4800원 |
케이스로 쓸라고함 |
멀티탭 |
네모탭 멀티탭4구 |
약14000원 |
디자인이 맘에듬 |
게임패드 |
게임패드 AG2DX |
약 16500원 |
싸다 |
게임패드 |
게임패드 Coms |
약 13100원 |
더 싸다 |
2.5 인치 외장하드 케이스 |
iptime hdd3125 |
약 15000원 |
2.5인치 sata to usb 외장하드 케이스 |
RAID 구성 |
이지넷유비쿼터스 NEXT-702U3 RAID (2 bay) |
약 57000원 |
jbod, raid0, raid1 지원 |
데이터의 안전을 위해서는 RAID로 구성하면 좋다. 혹은 여러 하드를 단일 디스크처럼 활용하기 위해서도 raid0나 jbod 을 활용하자.
3.5인치 하드와 멀티탭, 라즈베리파이까지 한 박스에 다 정리하려면 네오박스 6L가 적합했다.
네모탭 멀티탭은 디자인이 이쁘다.
메모리 카드 선택
SD카드 클래스별 성능 차이. (출처 : sdcard.org)
위의 표를 확인해보기 바란다.
라즈베리파이 스타터키트의 단점은 다 들어 있는데 SD Card가 좋지 않은 것이 온다.
DLNA 미디어 서버 구성시 트렌스코딩 위치, 데이터베이스 위치,임시저장소 위치는 SD Card로 사용하지 말고 빠른 저장소로 설정하기 바란다.
SD Card에 대한 설명은 아래의 사이트를 참고하자. :
http://www.bloter.net/archives/230516
사전계획
사용계획
- 미디어 서버 & 플레이어
- DLNA 프로토콜을 이용하여 티비, 스마트폰으로 영상보기
- 라즈베리파이의 HDMI 포트를 모니터에 직접 연결하여 영상보기
- 스피커 연결하여 노래 듣기
- 스마트폰의 영상을 라즈베리파이로 출력
- Transmisson 소프트웨어를 이용하여 토렌트 파일 받기
- 스토리지 관리(NAS)
- SFTP를 통한 원격지 파일 관리
- Private Cloud를 이용하여 원격지에서 파일 관리, 백업, 다운로드, 업로드, 동기화
- CIFS(Samba) 를 이용하여 네트워크 드라이버로 사용
- 게임 에뮬레이터
- 레트로 게임 즐기기
키보드나 마우스는 스마트폰 앱 중에 WIFI를 통하여 가상 마우스,키보드를 지원하는 앱이 있다 이것을 활용 할 것이다.
게임 에뮬레이터로 사용시에는 현재 게임패드가 없는 상황이므로 스마트폰을 통해 가상 패드를 이용 할 것이다.
SSH나 XRDP를 통해 원격 접속을 통해 시스템을 관리 할 것이다.
소프트웨어 목록
분류 |
이름 |
사용여부or 추천여부 |
용도 |
비고 |
부트로더 |
BerryBoot |
O |
멀티부팅, OS설치 |
|
OS |
Ubuntu Mate |
X |
나스, 미디어 센터 OS |
kodi 최신버전 설치시 문제가 발생해서 제외함 |
|
Raspbian |
O |
나스, 미디어 센터를 위한 OS |
|
|
Retropie |
O |
게임 에뮬레이터 OS |
|
|
OSMC |
X |
미디어 센터 OS |
|
원격 제어 유틸리티 |
Openssh-Server |
O |
ssh, sftp 용 |
|
|
XRDP |
O |
원격 데스크탑 접속용 |
윈도우 원격 데스크탑을 이용하여 Linux에 접속하기 위해서 사용함 |
|
WiFi Mouse |
O |
스마트폰을 키보드, 마우스로 사용할 수 있게 한다. |
안드로이드 앱 |
|
Remotepi |
X |
스마트폰을 키보드, 마우스로 사용할 수 있게 한다. |
안드로이드 앱 |
|
Virtual Gamepad |
O |
가상 게임패드 |
안드로이드로 웹에 접속하여 패드처럼 활용할 수 있다. 레트로 파이에서 활용한다. |
|
hdparm |
O |
하드디스크 관리 유틸 |
절전설정, 쓰기,읽기 속도 조절등 하드디스크를 관리해준다. 발열이나 전력소모 최적화를 위해서 사용한다. |
|
Web Console |
X |
웹을 통해 콘솔을 사용할 수 있다. |
|
|
shellinabox |
O |
웹을 통해 콘솔을 사용할 수 있다. |
apache 가 아닌 자체 웹서버를 내장하고 있고 apt repository 에도 포함되어 있어서 설치도 편하다. |
파일공유 스토리지 |
Samba |
O |
cifs (윈도우 네트워크 마운트용) |
|
|
Trasmission |
O |
Torrent 다운을 위해서 |
웹클라이언트를 통해 접속하여 torrent 파일을 업로드하면 자동으로 받아준다. 사용이 편리하다. |
|
Monsta FTP |
O |
웹 FTP Client |
웹 FTP 클라이언트이다. 웹으로 파일을 관리할 수 있다. |
|
Vsftp |
X |
FTP server |
openssh-server에 SFTP 있어서 설치안함 |
|
OwnCloud |
X |
개인 클라우드용 |
나만의 클라우드 환경을 위해서 사용한다. 안드로이드 클라이언트 앱도 있어서 사용이 편하다. |
|
NextCloud |
X |
OwnCloud 포크 |
OwnCloud의 핵심 개발자들이 나와서 만듬 |
|
Pydio |
O |
파일 공유 소트트웨어 |
기존의 외장하드의 파일도 그대로 보인다.
존재하는 파일시스템과 잘 호환된다. 만족스럽다. |
웹 |
Apache |
O |
웹서버 |
|
|
PHP |
O |
웹서버 |
|
DB |
MariaDB |
O |
DB |
|
|
PhpMyAdmin |
O |
DB 관리용 |
|
|
|
|
|
|
|
|
|
|
|
미디어 |
BubbleUPnP Server |
O |
UPnP Gateway |
외부 네트워크에서 홈 네트워크의 UPnP(미디어 서버)에 접근가능하게 한다. |
|
Kodi |
O |
미디어 플레이어 |
라즈베리파이에서 다이렉트로 미디어 재생을 위해서 사용 |
|
Yatse |
O |
Kodi 리모콘 |
kodi 안드로이드 앱이다. |
|
MiniDLNA(ReadyMedia) |
O |
DLNA 미디어 서버를 위해서 사용 |
트랜스 코딩 같은 고급기능 없이 딱 DLNA로 영상 플레이하기에 적합하다. 가벼워서 장비 사양이 좋지 않아도 잘 동작한다. 소위 스마트 TV(DLNA지원)라는 TV를 통해 영상재생이 가능하다. |
|
Plex Media Server |
X |
DLNA 미디어 서버를 위해서 사용 |
트랜스 코딩등 기능이 다 있지만 라즈베리 파이에서 트랜스 코딩을 사용하는 것은 무리가 있고 파일 스캔등 라즈베리 파이에서 사용하기에는 성능이 너무 안나온다. (성능 문제는 내 외장하드 성능이 매우 매우 좋지 않아서 그럴 수 있다.) |
|
LG Smart Share |
X |
DLNA 미디어 서버 |
자막 잘된다. 윈도우만 설치된다. |
|
Aircomix |
O |
만화책(압축파일포함)을 실시간 스트리밍 개념으로 보는 방식 |
|
우선 멀티부팅 환경을 만들기 위해서 Bootloader는 Bootberry 를 이용 할 것이다.
Noobs 보다 Bootberry 가 더 많은 패키지를 지원하고 설정이 좀더 자유롭다. 또한 Noobs는 각 운영체제를 나누어진 파티션으로 관리여 파티션 용량을 사용자가 관리해야한다. Bootberry는 여러 운영체제를 하나의 파일시스템의 폴더 단위로 관리하기 때문에 파티션 용량을 관리할 필요가 없다.
나스와 미디어 센터는 각각 따로 설치하지 않고 한 OS에 구축할 것이다. 미디어 센터는 Kodi를 이용하고 부팅시 Kodi가 자동실행 될 수 있도록 설정할 것이다. 성능은 잘 나올지 미지수다.
운영체제는 좀더 보편적이고 내가 좋아하는 Ubuntu Mate를 선택했다.
운영체제는 라즈베리에 꼭 맞는 Raspbian 을 선택했다. (Ubuntu Mate에 kodi 17버전이 잘 동작하지 않는다.)
게임 에뮬레이터는 레트로파이를 선택했다. 레트로파이는 미리 만들어진 이미지를 사용할 것이다. 이유는 설치된 OS에 레트로파이 설치시 컴파일하는 시간이 너무 소요된다. 또한 나스 서비스들이 동작하면서 에뮬레이터까지 돌리면 성능저하가 클 것으로 본다.
그밖에 소프트웨어 목록
분류 |
이름 |
용도 |
비고 |
NAS |
FreeNAS |
|
|
|
NAS4Free |
Nas OS 이다. |
|
|
OpenMediaVault(OMV) |
|
|
|
Openfiler |
|
|
|
Rockstor |
|
|
|
Nexenta Community Edition |
|
|
|
Amahi |
|
|
|
CryptoNAS |
|
|
|
TONIDO |
|
|
|
Pydio |
|
|
OS 설치(Raspbian)
BerryBoot를 통한 설치
멀티부팅 환경과 OS 설치를 편하게(네트워크를 통해) 하기 위한 bootloader이다.
BerryBoot 로 설치하는 것은 너무나 간단하다.
NOOBS보다 BerryBoot를 추천하는 이유는 NOOBS는 멀티 운영체제에 대해 파티션으로 관리하고 BerryBoot는 파일시스템으로 관리한다. NOOBS는 한쪽 운영체제에서 용량이 부족해지면 파티션 용량을 변경해주어야 하는 번거로움이 있지만 BerryBoot는 설치된 각 운영체제가 파티션이 아닌 일반 파일시스템의 폴더로 구분되기 때문에 용량에 대해 별다른 신경을 쓰지 않아도 된다.
참고
http://www.berryterminal.com/doku.php/berryboot : BerryBoot
- BerryBoot 사이트( http://www.berryterminal.com/doku.php/berryboot )에서 BerryBoot를 다운 받는다.
- 다운받은 파일을 압축해제한다.
- SD Card를 포맷한다. 이미 SD Card를 활용했었다면 SD
formatter를 이용하여 깔끔히 지운다.
https://www.sdcard.org/downloads/formatter_4/ : sdformatter 다운로드 - FAT 로 포맷한 SD Card 로 압축해제 후 생성된 파일들을 복사한다.
- 라즈베리파이에 랜케이블을 연결한다.(Wifi로 할 것이라면 연결안해도 된다.)
- OS설치를 인터넷을 통해 다운받아 설치하기 위해서이다.
- SD Card를 라즈베리파이에 연결하고 부팅한다.
- Ubuntu Mate를 설치한다.( 다른 것도 설치된다.)
Kodi설치 후 실행 시 Failed get gamma…. 메세지와 세그먼트 오류가 발생한다. - Raspbian 을 설치한다.
라즈베리파이를 부팅하면
네트워크가 연결되어 있다면 Location 과 Timezone은 IP 주소를 기반으로 자동으로 설정된다.
OS를 설치 할 디스크를 선택하면 된다.(여기서는 mmcblk0 이다)
순서적으로
- mmcblk0 : SD Card 자신
- sda : 외부장치인 USB stick/disk 를 말한다.(SSD 있으면 이걸로도 가능하다.)
필자는 SD Card가 성능이 너무 떨어져서 남아돌고 있는 64기가 SSD를 사용했다.
- Networked storage(iSCSI SAN) : 네트워크 스토리지(네트워크 블록디바이스)를 말한다. 요즘 피씨방에서 많이 사용하는 방식이다.
설치할 OS를 선택한다.
Ubuntu mate를 설치했다가 지우고 Raspbian 을 설치했다.
Ubuntu mate의 경우 kodi 설치 후 실행에 문제가 발생했다. 또한 kodi 17.1(최신 버전)을 지원하지 않았다. Ubuntu 계열을 좋아하지만 비슷한 Debian계열인 Raspbian으로 만족했다.
Raspbian 설치시 초기 사용자와 비밀번호는
사용자 : pi 비밀번호 : respberry |
이다.
OS 설정
Nas 구축 전에 OS를 설정할 것이다.
nas 란 사용자와 그룹을 만들고 이를 nas 접속 유저로 관리할 것이다.
기본적으로 생성되어 있는 pi 란 계정은 root를 대리하는 계정으로 외부에서 쓰기 불안하기 때문이다.
raspi-config 를 이용한 기본설정 하기
아래의 명령을 실행하면 기본적인 설정을 간단히 진행할 수 잇다.
$ sudo raspi-config |
- Expand Filesystem : SD 카드의 전체용량을 사용할 수 있게 함.
- Change User Password : "pi" 계정의 비밀번호를 변경
- Enable Boot To Desktop/Scratch : 부팅시 Console 환경 혹은 Desktop(GUI) 환경 혹은 Scratch(스크래치 프로그래밍) 환경으로 시작방법을 설정
- Internationalisation Options : Locale(언어, 문자 인코딩), 키보드 Timezone 국제화 관련 설정
- Enable Camera : Raspberry Pi 전용 카메라를 사용할 수 있도록 함
- Add to Rastrack : rastrack 서버에 Raspberry Pi를 등록하는 것이다. 가상의 렉이라고 생각하면 된다. rastrack에 등록된 모든 Raspberry Pi의 현황과 위치등을 확인할 수 있음. (http://rastrack.co.uk/ : rastrack 사이트)
- Over Clock : 700MHz 이상의 CPU Clock 으로 변경할 수 있음.(오버클럭시 cpu 열 발생과 수명 단축을 조심하자. 가급적 초기 설정 상태로 사용하는 것이 좋다.)
- Advanced Options : Hostname 변경, SSH on/off, SPI on/off, Audio HDMI/3.5mm jack 등 설정.
- Overscan : 고해상도 모니터에 라즈베리 파이의 화면을 출력할 경우 화면이 모니터에 맞지 않게 표시되거나 텍스트가 화면의 측면으로 몰려서 표시되는 현상이 나타날 수 잇다. 그러한 경우 화면에 맞게 디스플레이를 수정하려면 이 옵션을 사용하자.
- Hostname : 호스트 이름을 변경한다.
- Memory Split : CPU와 GPU에 분배하는 메모리 양을 변경할 수 있다. 그래픽 작업을 많이 하는 경우에는 GPU에 많은 메모리를 할당하는 편이 좋다.
- SSH : 보안 쉘(SSH) 서버를 활성화시키고 사용자가 네트워크를 통해 원격으로 라즈베리 파이에 로그인 할 수 있게 하는 옵션이다. 편리한 기능으로 활성화하자.
- Device Tree : 하드웨어 정보를 기술하는 일종의 데이터 구조이다.
- SPI : 시리얼 주변 장치 인터페이스(SPI)의 활성 여부를 설정한다.
- I2C : 직렬 버스의 하나인 I2C(Inter-Integrated Circuit)의 활성화 여부를 설정한다.
- Serial : 시리얼 핀을 통해 쉘에 로그인하고 메시지를 송수신하는 기능이다.
- Audio : 오디오 출력 단자를 설정한다. 3.5mm 오디오 잭이나 HDMI로 출력을 강제할 수 있으며 자동모드도 가능하다.
- Update : 인터넷이 ㅇ녀결되어 있다면 설정 유틸리티를 업데이트 할 수 있다.
- About raspi-config : 해당 툴의 안내문
PI 계정 비밀번호 변경하기
기본설정에는 pi의 비밀번호가 raspberry이다.
기본 비밀번호를 쓰는 것은 보안상 좋지 않다. 비밀번호를 바꾸자.
$ sudo passwd pi |
명령후 새로운 비밀번호를 입력하면 된다.
예. id:pi, password:pi
테스트에서는 id: pi, password: pi로 하였다.
나스용 아이디/그룹 만들기
pi란 사용자는 sudo 그룹에 포함되어있다. 즉 관리자의 권한을 위임 받아 행동할 수 있다. 따라서 로컬이나 관리용으로만 쓰는게 적당하다.
따라서 나스용 아이디를 만들자.
nas 란 사용자/그룹을 만들것이다. ( 자신이 원하는 이름으로 하자. )
사용자/그룹 만들기
$ sudo useradd nas -m -s /bin/bash |
-m : 홈 디렉토리가 생성된다.
-s /bin/bash : bash쉘로 쉘 환경이 설정된다.
사용자/그룹 정보 확인
$ cat /etc/passwd | grep nas |
nas:x:500:500::/home/nas:/bin/bash |
저기 번호(예. 500)를 기억하자. 외장하드 마운트시 소유자와 소유그룹을 저걸로 만들 것이다. (보통 많이 쓰는 NTFS, FAT는 계정에 따른 권한이 따로 없다. 따라서 리눅스에 마운트시 소유자와 소유그룹을 지정할 수 있다.)
패스워드 지정
$ sudo passwd nas Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
|
계정관리
추가적으로 계정을 관리하는 법이다.
비밀번호 변경하기
다른 계정의 비밀번호를 변경하고 싶다면 root 권한이 필요하다.
$ sudo passwd {target_username} |
{target_username} : 비밀번호를 바꿀 사용자 아이디
계정 아이디 변경하기(선택사항, 추천하지 않는다.)
기본으로 pi 계정이 자동으로 등록되어 있고 자동 로그인이 설정 되어 있다.
pi란 이름을 다른 이름으로 바꾸고 비밀번호도 등록할 것이다.
명령 형식
$ sudo usermod -md /home/{new_name} -l {new_name} {old_name} |
유저의 이름과 홈폴더의 이름을 바꾼다.
예를 들어 pi를 test로 바꾼다면
$ sudo usermod -md /home/test -l test pi |
실제는 위 명령시 아래와 같은 에러가 발생할 것이다.
$ sudo usermod -md /home/test -l test pi |
pi 가 현재 shell을 실행중이라 usermod 명령을 수행할 수 없다는 것이다.
기본 설치시 Xwindow 로 실행중인 상태이다. 이때는 우선 현재계정(pi)을 Logout 하고 Ctrl+Alt+F2 로 terminal session을 변경 후 아래의 명령을 실행해야한다.
$
exec sudo -s |
이때는 exec 명령을 통해 pi의 shell을 종료하고 root의 shell로 실행하여 usermod 명령을 실행한 것이다.
그룹 이름도 변경할 것이다.
명령 형식
$ sudo groupmod -n {new_name} {old_name} |
예를 들어 pi를 test로 바꾼다면:
$ sudo groupmod -n test pi |
자동 로그인 끄기(선택사항)
Raspbian 설치 시 pi란 계정이 자동 로그인으로 설정되어 있다.
pi란 계정의 자동 로그인을 끄는 방법이다.(pi를 다른 이름으로 바꾸었다면 해줘야 한다.)
혹은 자동 로그인 기능이 좋다면 pi계정 대신 위에서 변경한 이름으로 자동로그인 설정을 변경해야한다.
/etc/lightdm/lightdm.conf 파일에 자동 로그인 설정이 되어 있다.
$
sudo vi /etc/lightdm/lightdm.conf |
"autologin-user=pi" 를 주석 처리하거나 삭제하면 자동로그인이 되지 않는다.
만약 변경한 이름으로 자동로그인 설정하고 싶다면 pi 대신 변경한 이름으로 설정하면 된다.
$
sudo vi /etc/lightdm/lightdm.conf |
부팅 Runlevel(GUI<->CLI )변경 (선택사항)
기본 raspbian 을 설치하면 부팅시 desktop 환경(GUI)으로 실행된다.
이를 부팅시 CLI(terminal) 로 실행되게 하려면
$ sudo update-rc.d lightdm disable 2 |
반대로 부팅시 GUI 으로 실행되게 하려면
$ sudo update-rc.d lightdm enable 2 |
언어 변경
방법1. dpkg-reconfigure를 사용한 방법.
$ sudo dpkg-reconfigure locales |
여기서 추가할 언어를 선택한다.
이 화면에서 기본 언어로 쓸 언어를 선택한다.
한국의 경우 ko_KR.UTF-8 UTF-8 혹은 ko_KR.EUC-KR EUC-KR을 선택한다.
글쓴이는 ko_KR.UTF-8 UTF-8 을 선호한다.
방법2. raspi-config 로 언어 설정
raspi-config 는 raspbian 설정을 UI로 간편하게 할 수 있게 도움을 주는 유틸이다.
$ sudo raspi-config |
Internationalisation Options -> Change Locale
command line 으로 설정하기 힘든 분이나 간단한 설정은 이곳에서 하면 편하다.
Timezone 변경
timezone을 Asia->Seoul 로 바꾼다.
방법1. 수동 변경
타임존 변경 명령
$ sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime |
타임존 변경 확인
$ date Mon Dec 28 17:37:23 KST 2015 |
다른 타임존 확인
아래의 위래에 다른 타임존 들이 있다.
ls /usr/share/zoneinfo |
방법2. tzselect를 통한 변경
tzselect 명령을 통해 쉽게 변경 가능하다.
shh@shh-dev:/$ sudo tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent, ocean, "coord", or "TZ". 1) Africa 2) Americas 3) Antarctica 4) Asia 5) Atlantic Ocean 6) Australia 7) Europe 8) Indian Ocean 9) Pacific Ocean 10) coord - I want to use geographical coordinates. 11) TZ - I want to specify the time zone using the Posix TZ format. #? 4 Please select a country whose clocks agree with yours. 1) Afghanistan 18) Israel 35) Palestine 2) Armenia 19) Japan 36) Philippines 3) Azerbaijan 20) Jordan 37) Qatar 4) Bahrain 21) Kazakhstan 38) Russia 5) Bangladesh 22) Korea (North) 39) Saudi Arabia 6) Bhutan 23) Korea (South) 40) Singapore 7) Brunei 24) Kuwait 41) Sri Lanka 8) Cambodia 25) Kyrgyzstan 42) Syria 9) China 26) Laos 43) Taiwan 10) Cyprus 27) Lebanon 44) Tajikistan 11) East Timor 28) Macau 45) Thailand 12) Georgia 29) Malaysia 46) Turkmenistan 13) Hong Kong 30) Mongolia 47) United Arab Emirates 14) India 31) Myanmar (Burma) 48) Uzbekistan 15) Indonesia 32) Nepal 49) Vietnam 16) Iran 33) Oman 50) Yemen 17) Iraq 34) Pakistan #? 23
The following information has been given:
Korea (South)
Therefore TZ='Asia/Seoul' will be used. Local time is now: 2017. 11. 10. (금) 13:57:27 KST. Universal Time is now: 2017. 11. 10. (금) 04:57:27 UTC. Is the above information OK? 1) Yes 2) No #? 1
You can make this change permanent for yourself by appending the line TZ='Asia/Seoul'; export TZ to the file '.profile' in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you can use the /usr/bin/tzselect command in shell scripts: Asia/Seoul shh@shh-dev:/$ date 2017. 11. 10. (금) 13:57:32 KST |
방법3. dpkg-reconfigure 를 통한 변경
gui를 통해 아주 쉽게 변경 가능하다.
$ sudo dpkg-reconfigure tzdata |
|
Asia->Seoul 선택
전력 관련 설정
외장하드는 전력을 많이 소비하기 때문에 더욱 안정적으로 외장하드를 사용하려면 라즈베리파이의 전력관련 옵션을 확인하고 변경해 주는 것이 필요하다. 다음의 파일을 열어 옵션을 확인하고 내용이 없으면 맨 윗줄에 아래의 내용을 추가해주고 재부팅 해 준다.
$ sudo vi /boot/config.txt |
위의 파일을 열어 다음의 내용을 추가해준다. 추가해주면 라즈베리파이의 허용전류를 2A까지 늘려준다고 한다.
max_usb_current=2
safe_mode_gpio=4 |
그후 리부팅
$ sudo reboot |
외장하드 준비하기
하드 디스크 확인하기
lsblk 를 통하여
$ sudo lsblk |
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 3.9G 0 disk ├─sda1 8:1 0 487M 0 part /boot ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 3.4G 0 part ├─fepserver--vg-root 252:0 0 3.9G 0 lvm / └─fepserver--vg-swap_1 252:1 0 1G 0 lvm [SWAP] sdb 8:16 0 3G 0 disk └─fepserver--vg-root 252:0 0 3.9G 0 lvm / sr0 11:0 1 1024M 0 rom |
현재 디스크들의 상태를 간단히 확인할 수 있다.
fdisk 를 통하여
$ sudo fdisk -l |
Disk /dev/sda: 3.9 GiB, 4185055232 bytes, 8173936 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x8a4d1bc8
Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux /dev/sda2 1001470 8173567 7172098 3.4G 5 Extended /dev/sda5 1001472 8173567 7172096 3.4G 8e Linux LVM
Disk /dev/sdb: 3 GiB, 3221225472 bytes, 6291456 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes |
디스크들의 정보를 확인할 수 있다.
포맷하기
외장하드를 포맷하는 방법이다.
외장하드의 파일시스템을 만드는 방법으로 이미 사용중인 외장하드가 있다면 포맷시 모든 파일을 지워버린다.
이미 사용중인 외장하드가 있고 파일을 없애지 말아야 한다면 포맷하지 말아야한다.
명령은 :
$ sudo mkfs -t {type} {device} |
{type} : 파일시스템 종류
{device} : 기기 경로
예를 들어 /dev/sdb 장치를 ntfs로 포맷시:
$ sudo mkfs -t ntfs /dev/sdb |
하드디스크는 ntfs 혹은 fat 파일시스템으로 포맷하기를 추천한다. 그래야 해당 하드디스크를 윈도우 환경에 연결했을 때도 잘 동작하기 때문이다.
Mount 하기
방법1, UUID 마운트(추천, 재부팅시 자동 mount 유지)
UUID로 마운트 하기 위해서는 우선 장치의 UUID를 확인해야한다.
장치가 연결된 포트 위치에 따라 /dev/sdb, /dev/sdc 등 바뀔수 있다. 하지만 UUID는 연결 포트가 달라진다해도 하드디스크의 고유의 번호이기 때문에 달라지지 않는다.
blkid 명령을 이용하여 UUID 정보를 얻는다.
$ sudo blkid dev/hda1: UUID="e38c77a6-0990-44bf-a592-9c156920fb5d" SEC_TYPE="ext2" TYPE="ext3" /dev/hda3: UUID="9fa0f339-1fa5-4c75-942a-b6001b7bcde8" SEC_TYPE="ext2" TYPE="ext3" /dev/hda4: UUID="26474b1a-8353-4a15-8add-94df2a6784b7" SEC_TYPE="ext2" TYPE="ext3" /dev/hda5: UUID="9dfa1ff8-b91c-47db-9d8d-8cfb78ff7432" SEC_TYPE="ext2" TYPE="ext3" /dev/hda6: TYPE="swap" UUID="0e7bd3d5-88dd-4a06-81bd-2dd1f2870a5c" /dev/sda1: UUID="00CC65DDCC65CE0A" LABEL="Data1" TYPE="ntfs" /dev/sda2: UUID="8d6f7e4f-4bfe-4ad1-83b8-22d71065193f" SEC_TYPE="ext2" TYPE="ext3" /dev/sda3: UUID="2E38726838722EC9" LABEL="Data2" TYPE="ntfs" /dev/sdb2: UUID="1ed998db-712f-4fc3-9155-02e091fd8380" TYPE="ext3" /dev/sdb3: UUID="4c907521-a4fb-4a2c-86ce-9b8206aaf33a" TYPE="ext3" /dev/sdb1: UUID="feeb3d31-7c74-41e3-87fd-9a60c900430f" SEC_TYPE="ext2" TYPE="ext3" |
UUID를 확인하고 마운트 하면 된다.
예를 들어
UUID : "e38c77a6-0990-44bf-a592-9c156920fb5d"
파일시스템 : ntfs
"nas" 란 계정의 uid, gid : 500
umask : 027 (owner rwx, group r-x, other ---)
$ sudo vi /etc/fstab |
$ sudo mount -a |
여기서 umask 는 권한을 뺏는 거라 생각하면 된다.
r은 4, w은 2, x는 1 이다. 2진값이다. rwx = 421 즉 7이다. rw = 420 즉 6이다.
umask 027 은 소유자에게는 rwx , 그룹에게는 r-x, 그밖에 계정에게는 아무권한을 안주겠다는 것이다. 해당 옵션은 ntfs,fat 와 같은 파일의 권한 개념이 없는 파일시스템에서만 사용되는 옵션이다.
해당 옵션을 준 이유는 nas 란 사용자는 rwx 모든 권한을 가지고 nas 란 그룹은 r-x 즉 읽기 권한만 가지고 다른 사용자는 어떤 권한도 주지 않기 위해서다.
다른 이들과 mount한 파일 시스템을 공유하기 위해 계정을 만들어주고 nas 그룹에 넣으면 해당 mount한 파일시스템에 읽기 권한만 가지고 읽을 수 있기 때문에 파일을 수정하거나 삭제할 수 없어 파일을 보호할 수 있다.
혹은 권한을 775 로 주고 nas 사용자와 그룹은 rwx 권한을 다 주고 other는 r 즉 읽기 권한만 줄 수도 있다.
방법2, mount 명령을 사용하여 일시적으로 마운트하기(비추, 재부팅시 unmount됨)
mount가 유지되지 않는다.
명령 형식
mount -t {파일시스템} {장치파일} {마운트 포인트} |
unmount {장치파일 혹은 마운트 포인트} |
{파일시스템} 은 생략해도 된다.
예)
CD-Rom 마운트
$ sudo mount -t iso9660 /dev/cdrom /media/cdrom |
NFS 마운트
$ sudo mount -t nfs 123.12.12.1:/nfs /media/nfs |
방법3, /etc/fstab 파일로 마운트하기(재부팅시 자동 mount 유지)
/etc/fstab 에 마운트 내용을 열거하면된다.
/etc/fstab 파일에 설정한 장치가 없거나, 틀릴 경우 부팅 자체가 안될 수 있으므로 주의하자. 이때는 시스템 응급복구 모드를 사용하여 복구해야 한다.
형식
<file system> <mount point> <type> <options> <dump> <pass> |
예)
$ sudo vi /etc/fstab |
/dev/sda1 /media ext4
defaults 0 0 |
/dev/sda1 을 마운트는 장치파일 경로로 지정한 것이다. 장치를 추가하거나 제거할 때 장치파일 경로가 바뀔수 있다.
UUID로 마운트 한 것은 장치의 고유이름을 사용한 것으로 만약 장치파일의 경로가 바뀐다 하거라도 동일한 경로에 마운트 되는 것을 보장한다.
/etc/fstab 에 새로운 마운트 포인트 추가하고 즉시 마운트한다.
$ sudo mount -a |
Mount Option
옵션 |
설명 |
defaults |
rw, suid, dev, exec, auto, nouser, async 옵션을 모두 가지는 기본 설정 |
auto |
바팅시 자동 마운트 |
noauto |
부팅시 자동 마운트 안함 |
dev |
파일시스템 상의 문자, 블럭 특수 장치를 해석 |
nodev |
파일시스템 상의 문자, 블럭 특수 장치를 해석하지 않음 |
exec |
바이너리 실행파일이 실행되는 것을 허용 |
noexec |
바이너리 실행파일이 실행되는 것을 허용 안함 |
suid |
setuid, setgid의 사용을 허용 |
nosuid |
setuid, setgid의 사용을 거부 |
ro |
읽기 전용 (read-only) |
rw |
읽기/쓰기 가능(read/write) |
async |
파일시스템에 대한 I/O가 비동기적으로 이루어짐 |
sync |
파일시스템에 대한 I/O가 동기적으로 이루어짐 |
user |
일반 계정 사용자들도 마운트 할 수 있게 허용 |
nouser |
일반 계정 사용자가 마운트할 수 없음 ( root 만 mount 가능) |
noatime |
파일 접근 시간을 업데이트하지 않음(메일 스풀이나 로그와 같이 I/O 가 많은 파일 시스템에서 성능 향상) |
remount |
이미 마운트된 파일시스템을 다시 마운트 |
uid |
mount 시 해당 마운트의 소유자(user id) 설정(uid 개념이 없는 파일 시스템 마운트에서만 사용) |
gid |
mount 시 해당 마운트의 소유 그룹(group id) 설정(gid 개념이 없는 파일 시스템 마운트에서만 사용) |
_netdev |
네트워크 드라이브 마운트시 네트워크 활성화 때 마운트 하라는 설정 |
/etc/fstab 사용시 네트워크 드라이브/저장소(nfs, iscsi..) 사용시 대기 문제 해결법(_netdev)
/etc/fstab 에 네트워크 드라이브/저장소를 자동 mount 하게 설정하는 경우 시스템 재시작시 마운트를 하지 못하여 대기를 하는 경우가 있다.
이 문제는 시스템이 네트워크를 설정하고 연결하기 전에 /etc/fstab 의 mount 를 시도하기 때문이다.
예를 들어
/etc/fstab
192.168.1.1:/usr/local /mnt nfs defaults 0 0 |
위와 같은 경우 192.168.1.1:/usr/local 에 대한 mount 가 네트워크 연결보다 먼저 일어나기 때문에 시스템 시작시 자동 마운트 되지 않는다. 심한 경우는 해당 경로를 마운트하기 위해 무한대기한다.
이와 같이 네트워크를 통한 저장소를 /etc/fstab 에 등록할때에는 mount 옵션에 _netdev 를 추가해주어야한다.
192.168.1.1:/usr/local /mnt nfs defaults,_netdev 0 0 |
_netdev 옵션은 네트워크에 연결후 마운트하라는 옵션이다. 이렇게 해야 시스템 시작시 문제 없이 해당 네트워크 경로로 자동 마운트 된다.
원격 제어 소프트웨어 설치
원격 제어에는 ssh(console 환경), xrdp(gui 환경) 을 통해 구성할 것이다.
원격 제어는 sudo 그룹에 포함된 사용자 즉 "pi" 계정을 통해서만 가능하게 한다.
패키지 리스트 최신화
apt-get 의 패키지 리스트를 최신화 한다.
$ sudo apt-get update |
Openssh-Server
ssh 접속을 통해 원격으로 명령을 줄 수 있다. 특정 그룹만 허용시켜 다른 계정은 접속할 수 없게 할 것이다.
또한 sftp 를 통해 파일을 관리할 수 있다.
설치
ssh 를 통한 원격 터미널 접속을 위해 설치한다.
$ sudo apt-get install openssh-server |
설정
/etc/ssh/sshd_config 를 수정하면된다.
Port 22 |
#사용할 포트이다. 필요하면 바꾸어라. |
PermitRootLogin no |
# root로 접속을 막는다. |
AllowGroups sudo ssh |
# sudo와 ssh란 그룹을 제외한 모든 그룹, 유저의 접속을 막을 것이다. 계정을 만들고 ssh 접속을 허용하고 싶다면 ssh 그룹에 해당 계정을 포함시켜라. |
|
|
재시작
$ sudo service ssh restart |
XRDP Server
xrdp 는 Remote Desktop Protocol(rdp) Server 이다.
윈도우 기본 원격 데스크탑 클라이언트로 리눅스에 원격 접속 할 수 있다.
설치
$
sudo apt-get install tightvncserver |
Raspbian 에 tightvncserver 설치 없이 xrdp 만 설치한다면 아래의 에러가 발생한다.
sesman connect ok sending login info to session manager, please wait... xrdp_mm_process_login_response: login successful for display... started connecting connecting to 127.0.0.1 5910 error – problem connecting |
기본적으로 설치되어 있는 realvnc server 와 충돌이 나는듯하다. 이때는 xrdp 를 지우고 tightvncserver와 같이 설치해야한다.
$ sudo apt-get remove xrdp $ sudo apt-get install tightvncserver $ sudo apt-get install xrdp |
윈도우 원격 데스크톱으로 접속할 수 있다.
Serial Port 접속 방법
이 방법은 Serial Port를 이용하여 라즈베리파이에 접속하는 방법입니다.
인터넷이 되지 않을 때 노트북으로 라즈베리파이에 원격 접속 할 수 있습니다.
리눅스하시는 분들은 다 아는 시리얼 통신입니다.
이건 참고 자료로 대신하겠습니다.
https://github.com/lurch/rpi-serial-console
스마트폰을 마우스, 키보드로 사용하기
마우스나 키보드 대신 스마트폰을 마우스, 키보드로 사용하는 프로그램이다.
스마트폰과 리눅스가 같은 네트워크 영역대에 존재 해야 한다.
Wifi Mouse 설치
Mifi Mouse 는 스마트폰을 마우스, 키보드로 사용할 수 있게 한다.
유료구매시 게임패드등도 지원한다.
스마트폰으로 장비의 마우스, 키보드로 사용하기 위해서는 일단 장비에 Wifi Mouse Server가 설치되어 있어야 한다.
Wifi Mouse Server 설치
http://wifimouse.necta.us/ 사이트의 SETUP -> Mouse Server-> Ubuntu 32bit로 다운 받아라.
다운로드 경로 : http://wifimouse.necta.us/MouseServerLinux32.zip
(따로 raspbian 용 wifi mouse server는 없다. raspbian 도 bebian 계열이라 ubuntu 32bit 버전과 호환된다.)
Wifi Mouse Server 다운로드
zip 압축풀기
$ unzip MouseServerLinux32.zip |
dep패키지 파일 dpkg 로 설치
$ sudo dpkg -i mouseserver-1.-.1-32bit.deb |
실행하기
$ /usr/sbin/mouseserver |
꼭 실행은 Desktop 환경에서만 실행된다.
console 환경에서 실행시 "cannot open xdisplay" 란 메세지를 출력하고 실행되지 않는다.
매번 실행하기 귀찮을꺼다 로그인시 자동으로 실행되게 하자.
$ sudo vi /etc/xdg/autostart/mouseserver.desktop |
[Desktop Entry] Type=Application Encoding=UTF-8 Name=mouseserver Exec=/usr/sbin/mouseserver
|
Wifi Mouse Client 설치
안드로이드, IOS 둘다 지원하며 각 앱스토어에서 Wifi Mouse 라고 검색하면 나온다.
shellinabox 설치
web base 로 동작하는 shell 이다.
웹 브라우저를 통해 일반적인 terminal 사용하듯 사용하면 된다.
원격지에서 ssh client 없이 웹 브라우저만 있으면 장비에 접속할 수 있다.
shellinabox 는 내장 웹서버로 동작해서 따로 설치 할 것이 없다.
github : https://github.com/shellinabox/shellinabox
git 으로 받아서 컴파일 해도 되지만 apt repository에 기본 제공되어 있다.
shellinabox 설치
$ sudo apt-get install shellinabox |
shellinabox 설정
/etc/default/shellinabox 파일이 설정 파일이다. port나 등등 바꿀수 있다.
$ sudo vi /etc/default/shellinabox |
# Should shellinaboxd start automatically SHELLINABOX_DAEMON_START=1
# TCP port that shellinboxd's webserver listens on SHELLINABOX_PORT=4200
# Parameters that are managed by the system and usually should not need # changing: # SHELLINABOX_DATADIR=/var/lib/shellinabox # SHELLINABOX_USER=shellinabox # SHELLINABOX_GROUP=shellinabox
# Any optional arguments (e.g. extra service definitions). Make sure # that that argument is quoted. # # Beeps are disabled because of reports of the VLC plugin crashing # Firefox on Linux/x86_64. SHELLINABOX_ARGS="--no-beep" |
브라우저로 접속하기
기본 접속 경로는 : https://{ip}:4200 이다.( "https" 다. "http"가 아니다.)
주의해야 될 점은 https 라는 것이다. shellinabox 는 자체서명인증서를 사용하므로 브라우저에서 안전하지 않은 사이트라고 나올 것이다. 이를 무시하고 접근해야 한다.
카스퍼스키나 기타 백신에서 자체서명인증서라고 사이트 접속을 막는 경우가 있다. 이때는 잠시 백신을 중지 시켜야한다.
APM(Apache + PHP + Mysql(MariaDB)) 설치
많은 Web 기반 소프트웨어들이 Apache와 PHP, Mysql(혹은 MariaDB) 기반으로 동작하기 때문에 이를 설치해준다.
Apache 설치
$ sudo apt-get install apache2 |
PHP ,Apache Module, librarys 설치
일반적으로 필요한 라이브러리는 다 설치 했다.
$ sudo apt-get install php-common php libapache2-mod-php php-mcrypt php-curl php-dom php-xml php-mysql |
Apache 재시작
$ sudo systemctl apache2.service |
MariaDB 혹은 Mysql 설치(전통적인 Mysql 설치함)
$ sudo apt-get install mysql-server mysql-client |
Storage Software
Monsta FTP (Web Based FTP Client)설치
Monsta FTP는 Web-base FTP이다. 브라우저를 FTP Client 로 사용한다고 생각하면 된다.
Apache와 PHP 가 설치 되어 있어야 한다.
Apache + PHP 설치
$ sudo apt-get install apache2 $ sudo systemctl apache2.service |
Monsta FTP 다운로드
다운로드 사이트: https://www.monstaftp.com/download
해당 다운로드 사이트에서 free 버전을 다운받거나
wget 을 이용하여 다운받는다.
$ wget -O mftp.zip https://www.monstaftp.com/downloads/mftp.php |
압축풀기
$ unzip mftp.zip |
웹서비스를 위해 파일 옮기고 소유자 변경하기
$ sudo cp -ar mftp/ /var/www/ |
Apache에 monsta ftp 사이트 설정하기
$ sudo vi /etc/apache2/sites-available/mftp.conf |
Alias
/mftp "/var/www/mftp/" |
Apache site enable 시키기
$ sudo a2ensite mftp.conf |
Apache Reload
$ sudo systemctl reload apache2.service |
Monsta FTP 접속하기
web 경로 : http://{address}/mftp
위의 경로를 이용하면 web-based FTP Client 인 Monsta FTP를 이용할 수 있다.
Pydio 설치
Pydio 는 File Sharing 소프트웨어이다. 무료, 유료 버전이 존재한다.
PHP+Mysql 기반으로 동작한다.
Pydio 를 선택한 이유는 깔끔한 디자인과 기존의 파일시스템과 호환이 되기 때문이다.
사이트 : https://pydio.com/
Apache + PHP + Mysql 설치
$ sudo apt-get install apache2 $ sudo apt-get install mysql-server mysql-client
$ sudo systemctl apache2.service |
pydio 다운로드
압축풀기
$ unzip pydio-core-8.0.2.zip |
파일 옮기고 소유자 변경
$ sudo mv pydio-core-8.0.2/ /var/www/pydio |
Apache에 pydio 사이트 설정하기
$ sudo vi /etc/apache2/sites-available/pydio.conf |
Alias /pydio "/var/www/pydio/" |
Apache site enable 시키기
$ sudo a2ensite pydio.conf |
Apache Reload
$ sudo systemctl reload apache2.service |
DB 설정하기
pydio는 mysql, sqlite3, PostgreSQL 을 지원한다.
Mysql 기준으로 작성한다.
Mysql의 데이터베이스와 해당 데이터베이스에 권한을 가진 사용자/비밀번호를 만들어야 한다.
데이터베이스 : "pydiodb" 사용자 : pydio |
위의 예로 만들겠다.
$ sudo mysql |
이상으로 데이터베이스와 권한을 가진 사용자가 생성되었다. 이 정보는 pydio 시작시 사용된다.
주의사항 : 마운트된 외장하드를 pydio를 통해서 제어할 때 권한이 없다면 제어가 불가능하다. pydio 는 apaceh2 에서 동작하므로 www-data 계정으로 동작한다. 따라서 외장하드의 소유그룹의 권한을 rwx 로 만들고 해당 소유그룹으로 www-data 계정을 추가 시켜주던가 하여 권한을 꼭 주어야한다.
Pydio 실행
첫 접속시 초기 설치 화면이 나온다.
어플리케이션 이름 설정
Pydio 관리 계정 생성정보 입력(관리자를 생성)
DB 정보 입력( 위에서 이미 생성한 정보이다.)
고급설정
다되면 INSTALL PYDIO 버튼 클릭
이제 사용할 수 있는 로그인 화면이 나온다.
Samba 설치
SMB(Server Message Block) 프로토콜을 통해 네트워크(LAN) 환경에서 윈도우와 리눅스(Unix-like) 간 파일이나 프린터간의 공유를 가능하게 해주는 소프트웨어이다.
윈도우에서 리눅스 공유 폴더로 접근이 편해진다.
주의 할 것은 LAN 환경에서만 접속 가능하다.
Samba 설치
$ sudo apt-get install samba |
Samba 사용자 추가
$ sudo smbpasswd -a {계정명} New SMB password: Retype new SMB password: |
주의사항 : Samba 사용자는 리눅스에 이미 존재하는 계정을 Samba 사용자로 추가하는 것이다. 리눅스 계정에 존재하지 않는 사용자는 추가되지 않는다.
smbpasswd 를 통해 samba에 사용자를 add, delete, disable, enable 등등 할 수 있다.
Samba 추가된 사용자 목록
$ sudo pdbedit -L |
Samba 에 공유될 폴더 설정
아래의 내용을 /etc/samba/smb.conf 에 추가해라.
예를 들어 /mnt/data 란 폴더를 공유한다고 한다면 :
$ sudo vi /etc/samba/smb.conf |
[Share] #보이는 이름 |
윈도우에서 네트워크로 접속하기
탐색기에서 \\아이피주소
MEDIA SERVER 구성하기
네트워크를 통해 미디어를 볼 수 있게 하기 위해서 설치한다.
DLNA 지원 미디어 서버(Plex, MiniDLNA ...)는 많으나 라즈베리파이의 성능상 MiniDLNA를 추천한다.( 미디어 서버는 하나만 설치하기 바란다.)
DLNA 즉 upnp 기술은 홈 네트워크( 동일한 아이피 영역대, 서브넷 마스크 영역대, 같은 공유기에 접속된)에서만 미디어 서버를 찾고 접근 할 수 있다.
이를 원격지(홈 네트워크 외부, 집 밖)에서 접속하기 위해서는 Bubble UPNP Server를 설치해야 한다.
Bubble UPNP Server는 upnp 를 외부에서 접근하게 해주는 Gateway역활을 한다. VPN과 비슷하다고 생각하면 될듯하다.
MiniDLNA(ReadyMedia) 1.2.0 (smi 자막지원, 1.1.4 이후부터 smi 자막지원한다함)
DLNA 를 지원하는 최소한의 기능만 존재하는 미디어 서버이다. 매우 가벼워서 사용하기 좋다.(Plex 가 무겁다 생각되면 miniDLNA를 추천한다.)
원래는 MiniDLNA란 이름이었지만 ReadyMedia로 이름이 변경되었다.
기본적으로 minidlna는 트랜스코딩을 지원하지 않지만 git 에 트랜스코딩을 지원할 수 있는 branch가 있다.
https://bitbucket.org/stativ/readymedia-transcode : minidlan(readymedia transcode)
참고 자료
https://wiki.archlinux.org/index.php/ReadyMedia : 설정법
https://www.htpcguides.com/install-latest-readymedia-minidlna-ubuntu/ : 가장 최신 ReadyMedia 설치법
https://sourceforge.net/projects/minidlna/files/minidlna/ : MiniDLNA 소스포지
컴파일해서 설치하기
// repository 최신화 $ cd /tmp $ wget http://sourceforge.net/projects/minidlna/files/latest/download?source=files -O minidlna.tar.gz // 압축 풀기 $ cd minidlna*
// 컴파일하기 $ ./configure && sudo make && sudo
make install $ sudo cp minidlna.conf /etc/ $ sudo cp /linux/minidlan.init.d.script /etc/init.d/minidlna
// 스크립트 실행권한 주기
// 서비스 등록하기(부팅시 자동실행) $ sudo update-rc.d minidlna defaults
// minidlna 설정하기 $ sudo vi /etc/minidlna.conf
// 서비스 실행 $ sudo service minidlna start |
apt로 설치하기
$ sudo apt-get update |
설정하기
$ sudo vi /etc/minidlna.conf |
라이브러리(미디어 파일) 경로 설정은
V는 video, A는 Audio, P는 Picture, B는 Directory 를 뜻한다.
media_dir=V,/media/Movies media_dir=V,/media/TV media_dir=A,/media/Music media_dir=P,/media/Pictures |
DLNA Server 이름은
friendly_name=Media Server |
라이브러리 폴더에 파일이 추가, 삭제, 변경 되었을 시 자동으로 목록을 최신화 하기 위해 파일 변경 알림 받기
inotify=yes |
minidlna의 데이터베이스가 저장되는 디렉토리 설정
db_dir=/home/pi/.minidlna |
빠른 저장공간이 있다면 그 경로로 지정하는게 좋다.
설정 적용하기
$ sudo service minidlna force-reload |
간단한 웹 관리페이지도 있다.
PLEX Media Server 설치 (기능이 많다, 무겁다)
MiniDLNA나 PLEX 둘중에 하나만 설치해야한다.
DLNA를 지원하고 홈 네트워크 뿐 아니라 PLEX자체 기능을 이용하여 외부 네트워크에서도 미디어를 볼 수 있게 해준다.
웹 관리 프로그램(웹페이지)도 존재한다. 인터페이스가 GUI 환경이라 설정등이 편하고 따로 미디어 플레이어 없이 웹에서 바로 미디어 시청이 가능하다.
기능이 아주 강력한 프로그램이지만 무겁다. 미디어가 존재하는 장치(SDCard 혹은 외장하드)나 라즈베리파이에서는 성능이 나오지 않을 가능성이 있어 최적화 설정을 해주어야 한다.
글쓴이의 경우는 외장하드를 연결하였는데 오래된 하드라 읽기/쓰기 성능이 좋지 않아서 인지 미디어 파일을 스캔하는데 너무너무 오래 걸려서 MiniDLNA를 설치했다.
참고: https://www.dev2day.de/typo3/projects/plex-media-server/
설치법
방법1. 루트로 변경 후 명령(이 방법 사용)
# become root sudo su # add my public key wget -O - https://dev2day.de/pms/dev2day-pms.gpg.key | apt-key add - # add my PMS repo echo "deb https://dev2day.de/pms/ jessie main" >> /etc/apt/sources.list.d/pms.list # activate https apt-get install apt-transport-https # update the repos apt-get update # install PMS apt-get install plexmediaserver-installer |
방법2. sudo 만을 이용한 명령
sudo apt-get
update && sudo apt-get upgrade -y
/// 라즈베리파이3에서 재부팅없이 웹으로 설정시 버그가 발생할 수 있다. 때문에 한번 재부팅하자. sudo reboot |
시작하기
설정은 웹브라우저를 통해 이루어진다.
localhost:32400/web 또는 127.0.0.1:32400/web |
위와 같이 local혹은 내부 네트워크에서 접속시에는 관리자모드를 사용할 수 있다.
만약 외부에서 ip를 통해 접속한다면
232.18.11.11:32400/web |
이런식으로 외부에서 ip를 통해 접속시에는 plex.tv로 로그인해야한다. 회원을 만들고 외부에서 해당 회원을 통해서 접근가능하다.
접속하게되면
설정
트렌스코딩 임시 디렉토리 위치 변경
기본 Sd Card의 입출력 속도가 매우 저조한 관계로 또한 수명을 위해서 임시 디렉토리 경로를 외장하드로 잡아야 한다.
http://pauljhughes.eu/blog/2015/05/01/move-plex-metadata-location-on-ubuntu-14.04/ : metadata db 경로 변경법
뿐만 아니라 경로를 바꿀 수 있는 모든 설정은 수명과 성능을 위해 SD Card 보다는 외장하드로 잡는 것 좋다.
글쓴이의 경우는 SD Card 가 좋지 않을 걸 사용하여 왠만한 설정은 외장하드 경로로 바꾸었다.
BubbleUpnp Server 설치
원격지(홈 네트워크 외부, 집 밖)에서 미디어서버에 접속하기 위해서는 Bubble UPNP Server를 설치해야 한다.
Bubble UPNP Server는 upnp 를 외부에서 접근하게 해주는 Gateway역활을 한다. VPN과 비슷하다고 생각하면 될듯하다.
Bubble UPnP는 자바로 만들어져 있기 때문에 자바 먼저 설치한다.
자바 설치
자바 8(Oracle java 8 jre) 설치
$ sudo add-apt-repository ppa:webupd8team/java $ sudo apt-get update $ sudo apt-get install oracle-java8-installer |
혹은 openjdk 설치
$ sudo apt-get install openjdk-7-jre-headless |
BubbleUPnP Server 설치
$ sudo
add-apt-repository ppa:bubbleguuum/bubbleupnpserver |
BubbleUPnP Server 실행/중지
upstart 사용시
$ sudo start
bubbleupnpserver |
systemd 사용시
$ sudo systemctl start
bubbleupnpserver |
BubbleUPnP Server 설정
일단 공유기를 사용하는 상태에서 외부에서 접근하기 위해서는 포트포워딩을 하여야 한다.
또한 공인아이피가 유동아이피라면 DDNS도 등록한다.
우선 웹 관리자로 접속한다. http 기본 포트는 58050 이다. https 기본 포트는 58051이다.
공인 아이피와 사설 아이피가 보인다.
인증 아이디와 패스워크 등록, DDNS등록
유동 아이피인 경우 DDNS 서비스를 이용한다면 Public host name에 DDNS 주소를 입력한다. 보통 iptime 공유기를 사용하는 경우 iptime 관리페이지에서 DDNS를 등록할 수 있다.
미디어 서버 설정
외부에서 접속해 보기
bubbleupnp server을 이용하여 외부에서 media server에 접근가능한 dlna 클라이언트는
운영체제 |
어플리케이션 이름 |
안드로이드 |
Bubbleupnp 앱 |
PC |
foobar2000 |
이다.
안드로이드 bubbleupnp 앱 설정
setting->network setting에서 bubbleupnp 서버를 등록하고 인증을 위한 아이디와 패스워드를 입력하면 된다.
http://hostname:58050 이런 식이다.
hostname은 보통 공유기를 사용하면 DDNS 주소이고 고정아이피라면 ip 주소이다.
포트번호도 포트포워딩 설정에 맞춰야 한다.
Kodi 설치
kodi는 다양한 기능을 갖춘 미디어플레이어이다.
기본적인 kodi 설치법 :
$
sudo apt-get update |
OS의 버전에 따른 안정화된 kodi를 설치한다.
가장 최신버전 kodi 설치법:
$ sudo apt-get install software-properties-common $ sudo add-apt-repository ppa:team-xbmc/ppa $ sudo apt-get update $ sudo apt-get install kodi |
GUI Mode에서 로그인시 kodi 실행
만약 Kodi를 Desktop 환경에서 로그인시 자동으로 바로 실행되게 하고 싶다면 아래와 같이 하자.
어떤 Desktop Manager 에 상관없이 로그인시 프로그램을 자동실행하기 위해서는
/etc/xdg/autostart 폴더내에 {이름}.desktop 파일을 만들고 설정하면 된다.
예를 들어
$ sudo vi /etc/xdg/autostart/kodi.desktop [Desktop Entry] Type=Application Encoding=UTF-8 Version=1.0 Name=lxterminal Exec=/usr/bin/kodi |
로그인시 자동으로 kodi 프로그램을 실행시킨다.
기타 소프트웨어
Transmission
토렌트 클라이언트이다. GUI는 웹으로 제공되므로 웹으로 접속하여 토렌트 파일 올리면 알아서 다운받아 주는 기특한 녀석이다.
설치법
$ sudo apt-get install transmission-daemon |
설정하기
중요 설정에 대해서 설명한다.
$ sudo vi /etc/transmission-daemon/settings.json |
{ "alt-speed-down": 50, "alt-speed-enabled": false, "alt-speed-time-begin": 540, "alt-speed-time-day": 127, "alt-speed-time-enabled": false, "alt-speed-time-end": 1020, "alt-speed-up": 50, "bind-address-ipv4": "0.0.0.0", "bind-address-ipv6": "::", "blocklist-enabled": false, "blocklist-url": "http://www.example.com/blocklist", "cache-size-mb": 4, "dht-enabled": true, "download-dir": "/var/lib/transmission-daemon/downloads", "download-limit": 100, "download-limit-enabled": 0, "download-queue-enabled": true, "download-queue-size": 5, "encryption": 1, "idle-seeding-limit": 30, "idle-seeding-limit-enabled": false, "incomplete-dir": "/var/lib/transmission-daemon/Downloads", "incomplete-dir-enabled": false, "lpd-enabled": false, "max-peers-global": 200, "message-level": 1, "peer-congestion-algorithm": "", "peer-id-ttl-hours": 6, "peer-limit-global": 200, "peer-limit-per-torrent": 50, "peer-port": 51413, "peer-port-random-high": 65535, "peer-port-random-low": 49152, "peer-port-random-on-start": false, "peer-socket-tos": "default", "pex-enabled": true, "port-forwarding-enabled": false, "preallocation": 1, "prefetch-enabled": 1, "queue-stalled-enabled": true, "queue-stalled-minutes": 30, "ratio-limit": 2, "ratio-limit-enabled": false, "rename-partial-files": true, "rpc-authentication-required": true, "rpc-bind-address": "0.0.0.0", "rpc-enabled": true, "rpc-host-whitelist": "", "rpc-host-whitelist-enabled": true, "rpc-password": "{f7aa6992fd1f4c0be2c20a661329601ce4d83a0fzLVAJ6Rt", "rpc-port": 9091, "rpc-url": "/transmission/", "rpc-username": "transmission", "rpc-whitelist": "127.0.0.1", "rpc-whitelist-enabled": false, "scrape-paused-torrents-enabled": true, "script-torrent-done-enabled": false, "script-torrent-done-filename": "", "seed-queue-enabled": false, "seed-queue-size": 10, "speed-limit-down": 100, "speed-limit-down-enabled": false, "speed-limit-up": 100, "speed-limit-up-enabled": false, "start-added-torrents": true, "trash-original-torrent-files": false, "umask": 18, "upload-limit": 100, "upload-limit-enabled": 0, "upload-slots-per-torrent": 14, "utp-enabled": true }
|
옵션 |
설명 |
값 |
"download-dir" |
다운로드 된 파일이 저장될 폴더 경로이다. |
경로 |
"incomplete-dir" |
다운로드 중인 파일을 임시로 보관할 폴더 경로이다. |
경로 |
"incomplete-dir-enabled" |
다운로드 중인 파일을 임시로 보관할 것인지 선택 |
true, false |
"watch-dir-enabled" |
지정된 경로에 토렌트 파일을 넣으면 자동으로 감지하여 다운로드 해주는 기능을 사용할 지 설정 |
true, false |
"watch-dir" |
토렌트 파일을 감지할 폴더 경로이다. watch-dir-enabled 옵션이 true 일 때 동작한다. |
경로 |
"rpc-password" |
웹 클라이언트 접속시 사용 할 패스워드이다. |
문자열 |
"rpc-port" |
웹 클라이언트에서 사용하는 포트이다. |
숫자 |
"rpc-username" |
웹 클라이언트 접속시 사용 할 아이디이다. |
문자열 |
"rpc-whitelist-enabled" |
웹 클라이언트 접속시 화이트리스트(목록에 있는 호스트만 허용)를 사용할 것인지 선택 (false 이면 모든 원격 호스트를 허용한다.) |
true, false |
"rpc-whitelist" |
웹 클라이언트 접속 가능한 호스트 목록이다. |
|
설정예
{ "download-dir": "/mnt/data", "rpc-password": "pass", "rpc-port": 9091, "rpc-username": "torrent", "rpc-whitelist-enabled": false, } |
웹 클라이언트 접속하기
http://아이피:9091 로 접속하면 된다.
기타
Raspbian firmware(kernel) Update (펌웨어 업데이트)
참고 :
http://www.rasplay.org/?p=3891
https://www.raspberrypi.org/documentation/linux/kernel/updating.md
우선 ca-certificates 와 git-core 가 설치 되어 있어야 한다.
$ sudo apt-get install ca-certificates git-core |
$
sudo apt-get install rpi-update |
업데이트 후 재부팅
$ sudo reboot |
소프트웨어, 라이브러리 업데이트
패키지를 전부 업그레이드한다.
$
sudo apt-get update |
후기
이래저래 물건을 사다보니 가격이 qnap 직구로 짜게 사는거와 몇만원 차이나지 않는 것 같다.
집에서 토렌트 머신으로 잘 활용 중 이다. DLNA 기능으로 핸드폰으로 누워서 편하게 볼수 있다는 것이 가장 큰 장점이다.
레트로 게임도 하고 싶지만 게임패드를 살까말까만 계속 고민중이다.
한방 설치 파일을 만들까 고민중이다. 쉘스크립트나 dockerfile을 염두해 두고 있다. |