프로그래밍n학습자료(2018~)/라즈베리파이

[Raspberry Pi] 라즈베리파이3 로 나스 만들기( 한 문서로 통합 )

단세포소년 2018. 5. 24. 16:42
반응형



원노트로 작성하고 블로그로 옮긴 글이다. 티스토리가 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번가 구매했다.

http://www.11st.co.kr/product/SellerProductDetail.tmall?method=getSellerProductDetail&prdNo=1326876537&xfrom=&xzone= : 28,000

 

모니터, 키보드, 마우스는 집에 있는 쓰면 된다.

 

 

 

혹시나 해서 무선 키보드겸마우스를 알아보았다.

제품

가격

비고

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

스마트폰을 키보드, 마우스로 사용할 있게 한다.

안드로이드
OS Mouse Server 설치 필요

http://wifimouse.necta.us/

 

Remotepi

X

스마트폰을 키보드, 마우스로 사용할 있게 한다.

안드로이드
OS Server 설치 필요
https://remotepi.io/

 

Virtual Gamepad

O

가상 게임패드

안드로이드로 웹에 접속하여 패드처럼 활용할 있다.

레트로 파이에서 활용한다.

 

hdparm

O

하드디스크 관리 유틸

절전설정, 쓰기,읽기 속도 조절등 하드디스크를 관리해준다. 발열이나 전력소모 최적화를 위해서 사용한다.

 

Web Console

X

웹을 통해 콘솔을 사용할 있다.

별로임
http://web-console.org/

 

shellinabox

O

웹을 통해 콘솔을 사용할 있다.

apache 아닌 자체 웹서버를 내장하고 있고

apt repository 에도 포함되어 있어서 설치도 편하다.

https://github.com/shellinabox/shellinabox

파일공유 스토리지

Samba

O

cifs (윈도우 네트워크 마운트용)

 

 

Trasmission

O

Torrent 다운을 위해서

웹클라이언트를 통해 접속하여 torrent 파일을 업로드하면 자동으로 받아준다. 사용이 편리하다.

 

Monsta FTP

O

FTP Client

FTP 클라이언트이다. 웹으로 파일을 관리할 있다.

 

Vsftp

X

FTP server

openssh-server SFTP 있어서 설치안함

 

OwnCloud

X

개인 클라우드용

나만의 클라우드 환경을 위해서 사용한다. 안드로이드 클라이언트 앱도 있어서 사용이 편하다.
기존의 존재하는 외장하드를 연동시키기는 힘들다. 파일은 동일하게 저장해도 내부적으로 DB 따로 가지고 있어서 OwnCloud 통하지 않고 저장한 파일은 OwnCloud에서 보이지 않는다.

 

NextCloud

X

OwnCloud 포크

OwnCloud 핵심 개발자들이 나와서 만듬

 

Pydio

O

파일 공유 소트트웨어

기존의 외장하드의 파일도 그대로 보인다.
pydio
계정을 만들고 권한 공유도 원활하다.

존재하는 파일시스템과 호환된다. 만족스럽다.

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

 

  1. BerryBoot 사이트( http://www.berryterminal.com/doku.php/berryboot )에서 BerryBoot 다운 받는다.
  2. 다운받은 파일을 압축해제한다.
  3. SD Card 포맷한다. 이미 SD Card 활용했었다면 SD formatter 이용하여 깔끔히 지운다.
    https://www.sdcard.org/downloads/formatter_4/ : sdformatter 다운로드
  4. FAT 포맷한 SD Card 압축해제 생성된 파일들을 복사한다.
  5. 라즈베리파이에 랜케이블을 연결한다.(Wifi 것이라면 연결안해도 된다.)
    1. OS설치를 인터넷을 통해 다운받아 설치하기 위해서이다.
  6. SD Card 라즈베리파이에 연결하고 부팅한다.
  7. Ubuntu Mate 설치한다.( 다른 것도 설치된다.)
    Kodi
    설치 실행 Failed get gamma. 메세지와 세그먼트 오류가 발생한다.
  8. 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

 


 

  1. Expand Filesystem : SD 카드의 전체용량을 사용할 있게 .
  2. Change User Password : "pi" 계정의 비밀번호를 변경
  3. Enable Boot To Desktop/Scratch : 부팅시 Console 환경 혹은 Desktop(GUI) 환경 혹은 Scratch(스크래치 프로그래밍) 환경으로 시작방법을 설정
  4. Internationalisation Options : Locale(언어, 문자 인코딩), 키보드 Timezone 국제화 관련 설정
  5. Enable Camera : Raspberry Pi 전용 카메라를 사용할 있도록
  6. Add to Rastrack : rastrack 서버에 Raspberry Pi 등록하는 것이다. 가상의 렉이라고 생각하면 된다. rastrack 등록된 모든 Raspberry Pi 현황과 위치등을 확인할 있음. (http://rastrack.co.uk/ : rastrack 사이트)
  7. Over Clock : 700MHz 이상의 CPU Clock 으로 변경할 있음.(오버클럭시 cpu 발생과 수명 단축을 조심하자. 가급적 초기 설정 상태로 사용하는 것이 좋다.)
  8. Advanced Options : Hostname 변경, SSH on/off, SPI on/off, Audio HDMI/3.5mm jack 설정.
    1. Overscan : 고해상도 모니터에 라즈베리 파이의 화면을 출력할 경우 화면이 모니터에 맞지 않게 표시되거나 텍스트가 화면의 측면으로 몰려서 표시되는 현상이 나타날 잇다. 그러한 경우 화면에 맞게 디스플레이를 수정하려면 옵션을 사용하자.
    2. Hostname : 호스트 이름을 변경한다.
    3. Memory Split : CPU GPU 분배하는 메모리 양을 변경할 있다. 그래픽 작업을 많이 하는 경우에는 GPU 많은 메모리를 할당하는 편이 좋다.
    4. SSH : 보안 (SSH) 서버를 활성화시키고 사용자가 네트워크를 통해 원격으로 라즈베리 파이에 로그인 있게 하는 옵션이다. 편리한 기능으로 활성화하자.
    5. Device Tree : 하드웨어 정보를 기술하는 일종의 데이터 구조이다.
    6. SPI : 시리얼 주변 장치 인터페이스(SPI) 활성 여부를 설정한다.
    7. I2C : 직렬 버스의 하나인 I2C(Inter-Integrated Circuit) 활성화 여부를 설정한다.
    8. Serial : 시리얼 핀을 통해 쉘에 로그인하고 메시지를 송수신하는 기능이다.
    9. Audio : 오디오 출력 단자를 설정한다. 3.5mm 오디오 잭이나 HDMI 출력을 강제할 있으며 자동모드도 가능하다.
    10. Update : 인터넷이 ㅇ녀결되어 있다면 설정 유틸리티를 업데이트 있다.
  9. 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
usermod: user pi is currently used by process 2104

pi 현재 shell 실행중이라 usermod 명령을 수행할 없다는 것이다.

 

 

기본 설치시 Xwindow 실행중인 상태이다. 이때는 우선 현재계정(pi) Logout 하고 Ctrl+Alt+F2 terminal session 변경 아래의 명령을 실행해야한다.

 

$ exec sudo -s
$ cd /
$ sudo usermod -md /home/test -l test pi

이때는 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
...

"autologin-user=pi" 주석 처리하거나 삭제하면 자동로그인이 되지 않는다.

 

만약 변경한 이름으로 자동로그인 설정하고 싶다면 pi 대신 변경한 이름으로 설정하면 된다. 

$ sudo vi /etc/lightdm/lightdm.conf
autologin-user=test

 

 

 

 

 

 

부팅 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

UUID=
e38c77a6-0990-44bf-a592-9c156920fb5d  /media2    ext3    defaults,uid=500,gid=500    0    2

$ 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
UUID=
e38c77a6-0990-44bf-a592-9c156920fb5d  /media2    ext3    defaults    0    2

 

/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 그룹을 제외한 모든 그룹, 유저의 접속을 막을 것이다.
sudo
그룹에는 이미 pi사용자가 포함되어 있다. sudo 그룹의 포함된 user root권한을 대행 있으므로 ssh 접속을 허용한다.

계정을 만들고 ssh 접속을 허용하고 싶다면 ssh 그룹에 해당 계정을 포함시켜라.

 

 

 

재시작

$ sudo service ssh restart

 

 

 

 

 

XRDP Server

xrdp Remote Desktop Protocol(rdp) Server 이다.

윈도우 기본 원격 데스크탑 클라이언트로 리눅스에 원격 접속 있다.

 

설치

$ sudo apt-get install tightvncserver
$ sudo apt-get install xrdp

 

 

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 이용하여 라즈베리파이에 접속하는 방법입니다.

인터넷이 되지 않을 노트북으로 라즈베리파이에 원격 접속 있습니다.

리눅스하시는 분들은 아는 시리얼 통신입니다.

 

이건 참고 자료로 대신하겠습니다.

http://blog.xcoda.net/83

https://learn.adafruit.com/adafruits-raspberry-pi-lesson-5-using-a-console-cable/enabling-serial-console

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 apt-get install php-common php libapache2-mod-php php-mcrypt php-curl php-dom php-xml
 

$ sudo systemctl apache2.service

 

 

Monsta FTP 다운로드

다운로드 사이트: https://www.monstaftp.com/download

 

해당 다운로드 사이트에서 free 버전을 다운받거나

wget 이용하여 다운받는다.

 

 

압축풀기

$ unzip mftp.zip

 

웹서비스를 위해 파일 옮기고 소유자 변경하기

$ sudo cp -ar mftp/ /var/www/
$ sudo chown -R www-data:www-data /var/www/mftp

 

 

Apache monsta ftp 사이트 설정하기

$ sudo vi /etc/apache2/sites-available/mftp.conf

Alias /mftp "/var/www/mftp/"

<Directory /var/www/mftp/>
        Options +FollowSymlinks
        AllowOverride All

        SetEnv HOME /var/www/mftp
        SetEnv HTTP_HOME /var/www/mftp
</Directory>

 

 

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 php-common php libapache2-mod-php php-mcrypt php-curl php-dom php-xml php-mysql
 

$ 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

$ sudo chown -R www-data:www-data /var/www/pydio

 

 

Apache pydio 사이트 설정하기

$ sudo vi /etc/apache2/sites-available/pydio.conf

Alias /pydio "/var/www/pydio/"

<Directory /var/www/
pydio/>
        Options +FollowSymlinks
        AllowOverride All

        SetEnv HOME /var/www/
pydio
        SetEnv HTTP_HOME /var/www/
pydio
</Directory>

 

 

Apache site enable 시키기

$ sudo a2ensite pydio.conf

 

 

Apache Reload

$ sudo systemctl reload apache2.service

 

 

 

 

DB 설정하기

pydio mysql, sqlite3, PostgreSQL 지원한다.

 

Mysql 기준으로 작성한다.

 

Mysql 데이터베이스와 해당 데이터베이스에 권한을 가진 사용자/비밀번호를 만들어야 한다.

 

데이터베이스 : "pydiodb"

사용자 : pydio
비밀번호 : pydiopassword

위의 예로 만들겠다.

 

$ sudo mysql

> create database pydiodb;
> create user pydio@'%' identified by 'pydiopassword';
> grant all privileges on pydiodb.* to pydio@'%';
> flush privileges;

 

이상으로 데이터베이스와 권한을 가진 사용자가 생성되었다. 정보는 pydio 시작시 사용된다.

 

 

 

주의사항 : 마운트된 외장하드를 pydio 통해서 제어할 권한이 없다면 제어가 불가능하다. pydio apaceh2 에서 동작하므로 www-data 계정으로 동작한다. 따라서 외장하드의 소유그룹의 권한을 rwx 만들고 해당 소유그룹으로 www-data 계정을 추가 시켜주던가 하여 권한을 주어야한다.

 

 

 

 

Pydio 실행

접속은 http://{ip}/pydio

 

접속시 초기 설치 화면이 나온다.


 

 

어플리케이션 이름 설정


 

 

Pydio 관리 계정 생성정보 입력(관리자를 생성)


 

 

DB 정보 입력( 위에서 이미 생성한 정보이다.)


 

 

고급설정


 

다되면 INSTALL PYDIO 버튼 클릭

 

 

 

이제 사용할 있는 로그인 화면이 나온다.


 

 

 

 

 

 Samba 설치

SMB(Server Message Block) 프로토콜을 통해 네트워크(LAN) 환경에서 윈도우와 리눅스(Unix-like) 파일이나 프린터간의 공유를 가능하게 해주는 소프트웨어이다.

 

윈도우에서 리눅스 공유 폴더로 접근이 편해진다.

 

주의 것은 LAN 환경에서만 접속 가능하다.

 

 

Samba 설치

$ sudo apt-get install samba

 

 

Samba 사용자 추가

$ sudo smbpasswd -a {계정명}

//ex. nas
계정추가
$ sudo smbpasswd -a nas

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] #보이는 이름
comment = file share
path = /mnt/data #
공유할 폴더 경로
valid users = nas, test # 해당 공유에 접근 가능한 사용자 목록(. nas, test)
writable = yes # 쓰기 가능하게함
create mask =  0644 # 새로운 파일/폴더 생성시 초기 권한(rwxr--r--)
directory mask =  0755 #
폴더들의 기본권한 (rwxr-xr-x)
 

 

 

 

 

 

 

 

윈도우에서 네트워크로 접속하기

 

탐색기에서 \\아이피주소


 

 

 

 

 

 

 

 

 

 

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 최신화
$
sudo apt-get update

// minidlna 의존성 설치
$ sudo apt-get build-dep minidlna -y

//
의존성 문제시 아래의 목록을 설치한다.
$
sudo apt-get install build-essential autopoint debhelper dh-autoreconf gcc libavutil-dev libavcodec-dev libavformat-dev libjpeg-dev libsqlite3-dev libexif-dev libid3tag0-dev libogg-dev libvorbis-dev libflac-dev -y

// tmp
디렉토리에 minidlna 최근 소스 받기

$ cd /tmp

$ wget http://sourceforge.net/projects/minidlna/files/latest/download?source=files -O minidlna.tar.gz
 

// 압축 풀기
$ tar -xvf minidlna*.tar.gz

//
압축 디렉토리 들어가기

$ cd minidlna*

 

// 컴파일하기

$ ./configure && sudo make && sudo make install

// minidlna
기본 설정 파일 복사하기

$ sudo cp minidlna.conf /etc/

// minidlna autostart
스크립트 복사하기

$ sudo cp /linux/minidlan.init.d.script /etc/init.d/minidlna

 

// 스크립트 실행권한 주기
$ sudo chmod +x /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 apt-get install minidlna

 

 

 

 

설정하기

$ 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

 

 

 

간단한 관리페이지도 있다.

http://127.0.0.1:8200


 

 

 

 

 

 

PLEX Media Server 설치 (기능이 많다, 무겁다)

MiniDLNA PLEX 둘중에 하나만 설치해야한다.

 

DLNA 지원하고 네트워크 아니라 PLEX자체 기능을 이용하여 외부 네트워크에서도 미디어를 있게 해준다.

 

관리 프로그램(웹페이지) 존재한다. 인터페이스가 GUI 환경이라 설정등이 편하고 따로 미디어 플레이어 없이 웹에서 바로 미디어 시청이 가능하다.

 

기능이 아주 강력한 프로그램이지만 무겁다. 미디어가 존재하는 장치(SDCard 혹은 외장하드) 라즈베리파이에서는 성능이 나오지 않을 가능성이 있어 최적화 설정을 해주어야 한다.

 

글쓴이의 경우는 외장하드를 연결하였는데 오래된 하드라 읽기/쓰기 성능이 좋지 않아서 인지 미디어 파일을 스캔하는데 너무너무 오래 걸려서 MiniDLNA 설치했다.

 

참고: https://www.dev2day.de/typo3/projects/plex-media-server/

https://www.element14.com/community/community/raspberry-pi/raspberrypi_projects/blog/2016/03/11/a-more-powerful-plex-media-server-using-raspberry-pi-3

 

설치법

방법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 

sudo apt-get update && sudo apt-get dist-upgrade 


sudo apt-get install apt-transport-https -y --force-yes 

wget -O - https://dev2day.de/pms/dev2day-pms.gpg.key  | sudo apt-key add -

echo "deb https://dev2day.de/pms/ jessie main" | sudo tee /etc/apt/sources.list.d/pms.list
 
sudo apt-get update 

sudo apt-get install -t jessie plexmediaserver -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
$
sudo apt-get update
$
sudo apt-get install bubbleupnpserver

 

 

BubbleUPnP Server 실행/중지

upstart 사용시

$ sudo start bubbleupnpserver
$
sudo stop bubbleupnpserver

 

systemd 사용시

$ sudo systemctl start bubbleupnpserver
$
sudo systemctl stop bubbleupnpserver

 

 

 

BubbleUPnP Server 설정

 

일단 공유기를 사용하는 상태에서 외부에서 접근하기 위해서는 포트포워딩을 하여야 한다.

또한 공인아이피가 유동아이피라면 DDNS 등록한다.

 

 

우선 관리자로 접속한다. http 기본 포트는 58050 이다. https 기본 포트는 58051이다.

 

http://127.0.0.1:58050


공인 아이피와 사설 아이피가 보인다.

 

 

 

인증 아이디와 패스워크 등록, 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
$ sudo apt-get install kodi

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 service transmission-daemon restart

 

 

설정하기

중요 설정에 대해서 설명한다.

$ 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 일때 동작한다.

경로

"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"

클라이언트 접속 가능한 호스트 목록이다.
) "rpc-whitelist": "127.0.0.1, 192.168.*.*"

 

 

 

 

설정예

{

    "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 rpi-update

 

업데이트 재부팅

$ sudo reboot

 

 

 

소프트웨어, 라이브러리 업데이트

패키지를 전부 업그레이드한다.

$ sudo apt-get update
$ sudo apt-get dist-upgrade

 

 

 

 


 

 

 

 

후기

이래저래 물건을 사다보니 가격이 qnap 직구로 짜게 사는거와 몇만원 차이나지 않는 같다.


하지만 마음대로 커스텀 가능하다는 것이 장점 아닐까?

 

집에서 토렌트 머신으로 활용 이다.  DLNA 기능으로 핸드폰으로 누워서 편하게 볼수 있다는 것이 가장 장점이다.

 

레트로 게임도 하고 싶지만 게임패드를 살까말까만 계속 고민중이다.

 

한방 설치 파일을 만들까 고민중이다. 쉘스크립트나 dockerfile 염두해 두고 있다.

 

 

반응형