Stimson의 Introduction to Airborne Radar 3판 pdf 파일 다운로드 링크


http://www.jisoupan.com/share/242539.html


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

써야지 써야지 하고 마음만 먹었던 글감을 드디어 쓰려고 한다.


라즈베리파이로 NAS 구축하는 글 쓴 이후로 거의 일년 반이 지난 것 같은데.... ㅎㅎ


좀 많이 늦긴 했지만 약속을 지키고자.

사실 쓰려면 금방 썼을 글인데 왠지 모르게 손이 안갔다.



이번에 다룰 주제는 열심히 만든 라즈베리파이를 단순히 파일 저장용으로 쓰는 것이 아니라,

라즈베리파이에 저장된 동영상을 다시 다른 컴퓨터나 폰으로 다운받을 필요 없이 곧바로 재생할 수 있는 스트리밍 서버로 활용하는 것이다.


정말 간단하다.


우선 예시로 사용할 동영상은 pi 계정의 홈 디렉토리에 example.mp4 라는 이름으로 저장되어 있다.





# 데스크탑에서 스트리밍


사용할 프로그램은 다음 팟플레이어이다.

다른 동영상 플레이어에도 웹에 연결하는 기능이 있다면 다 비슷하게 작동하리라 생각한다.


우선 팟플레이어를 열고 아래 사진처럼 '재생목록' 메뉴를 연다.



여기서 +새앨범 버튼을 누른다.



그러면 위와 같은 창이 열리는데, 해당 빈칸을 채워넣기만 하면 된다.


1. 앨범 이름: 원하는대로 ㅎ 나는 pi로 설정

2. FTP/WebDAV/HTTP 주소 선택

3. 프로토콜은 FTP로 그대로 두고, 호스트는 라즈베리파이의 주소.

같은 공유기에 연결되어있다면 내부 IP를 적어도 되고,

아니라면 라즈베리파이가 연결된 공유기의 외부 IP 주소, 또는 DDNS 연결한 주소를 쓰면 된다.

어쨌든 라즈베리파이에 연결하기 위한 주소!

4. 사용자명: FTP 접속 가능한 아이디

5. 비밀 번호: 해당 비밀번호


아마 기억상으로 Passive가 해제되어 있어야 정상 작동했던 것으로 기억한다.

UTP-8과 Passive 설정도 사진에서처럼 설정한다.


그리고 확인을 누르면,



이런 식으로 라즈베리파이 내부 파일목록에 접근할 수 있다.


맨 위에서 PuTTY로 SSH 연결한 터미널에 있던 파일 구조와 동일한 것을 확인할 수 있다.




# 폰에서 스트리밍


큰 차이는 없다. 폰에서도 똑같이 앱 내부에서 FTP 연결을 할 수 있는지를 확인하고

해당 기능을 사용하면 될 뿐.


나는 아이폰 유저이고, 예시로 들 앱은 유료 앱인 nPlayer이다.


사용하는 플랫폼이나 앱이 다르더라도 비슷한 흐름으로 따라하면 될 것 같다.




네트워크 서버에 연결하는 아이콘이다.



우리는 ftp 서버밖에 설정을 안했으니까... ftp를 선택한다.



이렇게 접속할 주소와 아이디, 비밀번호 등을 적어야 한다.



제목은 그냥 서버 목록에 표시될 이름이고, 호스트는 라즈베리파이의 주소.

사용자는 라즈베리파이에서 ftp 이용 가능한 사용자명, 그리고 암호.

중요한게 포트 번호를 21로 지정을 해줘야 한다.


안그러면 제대로 접속이 안되는 걸 방금전에 테스트해봤다.


그러고나면 이렇게 라즈베리파이에 접속해서 네트워크 서버에 있는 파일 목록을 보여준다.

예시 동영상인 example.mp4도 잘 있다.






이렇게 쉽고 편한 방법으로 라즈베리파이를 동영상 스트리밍 서버로 활용할 수 있다.

번거롭게 파일을 여러 컴퓨터에 옮길 필요 없이 라즈베리파이에 접근 가능한 환경에서는 손쉽게 이용할 수 있다.





음.. 아마 다음번 글감은 요즘 핫한 보이스챗 프로그램인 디스코드에서 쓰는 봇이 되지 싶다.

라즈베리파이에 봇 설치하고, 음성채널에 접속시키고, 라즈베리파이를 통해서 24시간 돌아갈 수 있게 설정하는.


최대한 빠른 시일 내에 정리하는 것을 목표로.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

스팀에서 새로 산 게임인 The wild eight (와일드 에잇)


나 포함 4명이서 다 게임 사고 멀티플레이하려는데

2명은 제대로 되고 2명은 서버 참여도 안되고 호스팅도 안되는 것이었다.


한시간 동안 게임 재설치도 해보고, 컴퓨터 재부팅도 해보고, 공유기 포트포워딩 설정도 해보고

진짜 별ㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹㄹ짓을 다했는데


정말 의외의 구석에서 해결했다.


문제가 있었던 2명은 무려... 안랩 백신을 사용중이었다.

안랩 친구가 너무 열심히 컴퓨터를 보호해주시는 바람에 다 차-단을 먹였던 것 같다.


안랩 끄고나니까 아아주 멀쩡히 멀티플레이 참여 및 호스팅 다 된다.


잘 안되는 분들은 안랩, 알약 등 백신 삭제하시고, 윈도우 정품이신 분은 윈도우 디펜더나 쓰도록 해요.....


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

직장에 다니기 시작하면서 자취방도 새로 구했고 이제는 직접 내 돈을 내고 인터넷 회선을 연결해서 사용하고 있다.


그런데 인터넷 통신망 업체에서 제공하는 공유기는 포트 포워딩 같은 간단한 설정조차도 제대로 되지를 않는 것이었다.

매뉴얼도 거의 없다시피할 정도로 부실하고.

그래서 사설 공유기로 바꾸려고 했더니, 멀쩡하게 잘만 되던 인터넷이 공유기만 바꾸면 연결이 되지 않는 것이었다.


결국 하루 정도 낑낑대다가 포기하고 약 반년 가까이 그냥 모르겠다는 심정으로 살고 있었다.


그러다가 드디어 라즈베리파이를 살릴 마음을 먹고 다시 포트 포워딩을 좀 해보려고 했다.

하지만 또 전과 비슷한 이유로 한시간 가까이 삽질을 했다.

그래서 포트 포워딩을 붙잡고 늘어질까 공유기 교체를 붙잡고 늘어질까 고민하다가 순간적으로 떠오른게 맥어드레스.


통신사에서 제공하는 공유기의 맥어드레스와 내가 사용하려던 공유기의 맥어드레스가 달랐던 게 원인이 아닐까 하는 생각이 들었다.

즉 모뎀이 공유기의 맥어드레스를 가지고 있어서 이게 매칭이 안되면 인터넷 연결이 안되도록 하는 식으로.


결론은 빙고!


인터넷 연결이 되고 있던 공유기의 맥어드레스를 복사해다가 새 공유기(익듁한 iptime 공유기 ㅎㅎ) 설정 페이지에서 붙여넣으니 정말 잘 작동된다. 크킄


내 글은 늘 그렇듯이 항상 도입부 사설이 길어야 제맛...



# 기존 공유기 설정 페이지 접근


네트워크 및 공유 센터에서 기존 인터넷 연결의 속성을 보면 'IPv4 기본 게이트웨이'라는 항목이 있다.

이 주소가 바로 내 컴퓨터가 인터넷으로 접근을 하고 거꾸로 인터넷망에서 내 컴퓨터를 접근하기 위해 거치는 관문, 즉 게이트웨이라는 것이므로 이 주소를 인터넷 브라우저에 친다.

(* 경우에 따라 :8080 같이 포트 번호를 쳐야 하는 경우도 있다. 내가 그랬다 ㅎ)


공유기 설정 페이지에 들어가서 WAN 설정이 바로 공유기와 외부 인터넷 사이 연결 정보를 알려준다.


여기서 봐야 할 게 바로 맥어드레스!



기존 공유기의 맥 주소를 캡쳐를 뜨든 메모장에 적든 해서 반드시 기록을 해둔다.



# 새 공유기 연결


여기는 따로 뭐 설명할 필요 없겠지....


공유기에서 외부 인터넷망과 연결하는 포트에 모뎀에서 나오는 랜선 잘 꽂아주고,

공유기와 컴퓨터 사이 연결하는 포트에는 컴퓨터에 꽂은 랜선 잘 꽂아주고.



# 새 공유기 설정 페이지 접근


새 공유기를 연결했을 때 게이트웨이 설정 등이 바뀔 수 있다.

기존 공유기를 설정하기 위해 접근했던 것과 같은 방법으로 게이트웨이를 확인하고 설정 페이지에 접근한다.


다음 짤에서는 많이들 사용하는 iptime 공유기 기준으로 설명한다.


다른 공유기를 사용하는데 제대로 설정이 안되는 경우 댓글을 남겨주시면... 사실 언제 확인할지 잘 모르겠다.

나중에 질문용 익명 메일계정이라도 파야할까 ㅎㅎㅎ



여튼 기본 설정 - 인터넷 연결 설정 등 뭔가 되게 기본적인 설정을 하는 페이지를 찾아 들어가서

여기서도 마찬가지로 'MAC 주소' 관련 부분을 찾는다.



내가 사용한 iptime N104+ 모델의 경우 기본 설정의 '인터넷 연결 설정'을 눌렀을 경우 위와 같이 MAC 주소를 변경하는 설정을 찾을 수 있었다.

기본적으로는 체크박스가 해제되어 있을 텐데, 체크 박스를 눌러서 설정하고 여기에 아까 적은 기존 공유기의 맥어드레스를 적는다. 그리고 아래 적용 버튼을 누른다.



간단하지만 이렇게 해서 공유기 교체를 완료할 수 있었다.


남은 것은 쉽고 편한 포트 포워딩과 행복한 라즈베리파이 서버 살리기!





이제 내 NAS 설정은 마쳤으니 다음 포스트에야말로 진짜로 스마트폰에서 라즈베리파이에 구축한 NAS에 연결해서 동영상 스트리밍을 하는 글을 써보도록 하겠다.


그럼 이만!


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

만 1년만의 포스팅.... 그동안 대학원을 졸업하고 회사에 취업하는 등 개인 신상에 많은 변화가 생겼지만 사실 포스팅 정도야 하려면 할 시간은 많았다. 그냥 귀찮음에 포스팅을 미뤄뒀던 것일 뿐...

1년 동안 티스토리 로그인을 안해서 휴면계정으로 넘어간다는 알림 메일에 간만에 접속했더니 미숙한 글이나마 도움을 받아가는 분들이 있어서 뽑았던 칼이 더이상 녹슬기 전에 마무리는 하고자 한다.


또 한동안 블로그질에 불붙을 지도 모르겠다 ㅎㅎ 왜냐면 블로그에 할애할 시간이 줄었던 이유가 파이널판타지 14 때문인데 지금 고정팟이 공중분해돼서 이제 접속해도 할 게 없어서 시간이 다시 남기 때문이다... ㅠㅠ


잡설은 여기까지 늘어놓기로 하고, 오늘 다룰 내용은 별 내용은 없다. 라즈비안 운영체제에 사용자 계정을 만들어서 관리용 계정과 외부 공개용 계정을 분리하는 것이다.

NAS 구축 후 혼자 쓰기만 할 거라면 사실 별 필요 없는 내용이고, 모아둔 자료를 지인들과 함께 공유하고자 한다면 나름 유용하게 쓰일 수 있을 것 같다.



# 홈디렉토리 구성도


사실 기본 개념은 지난 글에서 FTP client를 깔면서 설명한 바 있다.


링크: 2015/06/21 - [라즈베리파이(Raspberry Pi)로 NAS 구축하기] 2. FTP client 설치하기


아래 내용은 해당 글에서 발췌해 온 내용이다.




DefaultRoot 옵션을 통해 각 계정별로 지정된 홈디렉토리를 루트, 즉 최상위 디렉토리로 지정을 하기 때문에 그 상위 디렉토리로 못넘어가게 막는 것이다.


조금 자세히 설명을 해보자면, 라즈베리파이의 관리자 계정인 pi가 있고 이 pi의 홈디렉토리는 /home/pi/가 된다.


이 pi 홈디렉토리 밑에 guest 라는 이름의 디렉토리를 만든다. (/home/pi/guest/) 그리고 이 /home/pi/guest/를 홈디렉토리로 하는 guest라는 계정을 만든다.


그러면 pi 계정은 홈 디렉토리가 /home/pi/ 이므로 여기서부터 시작해 그 하위 디렉토리(/home/pi/guest/ 포함)는 전부 접근할 수있지만, 반대로 guest 계정은 홈 디렉토리가 /home/pi/guest/ 이므로 여기서부터 시작해야 하기 때문에 더 상위 디렉토리인 /home/pi/ 디렉토리는 접근할 수도 없고 여기에 무슨 파일들이 있는지 알 수 없게 되는 것이다.


그래서 저 옵션을 설정함으로써 어느 수준의 보안을 구현할 수 있다는 말이다.



라는 내용을 썼었고, 아래는 저 말을 그림으로 표현한 것.



즉 '위에서 아래로는 내려가지만 아래에서 위로는 못올라간다'는 것만 이해하면 된다.

pi 계정 입장에서는 그 아래의 모든 디렉토리를 볼 수 있지만 guest 계정 입장에서는 /home/pi/, 또는 /home/pi/ 디렉토리 아래에 다른 디렉토리를 생성해서 /home/pi/another/ 같은 디렉토리가 있다고 하더라도 볼 수 없다.


이 관계를 이용해 다른 사람에게 다른 사람에게 공개하고자 하는 디렉토리의 범위를 설정할 수 있게 된다.

뭐.. 전체이용가와 성인등급을 따로 공개하는 식의...? ㅋㅋㅋ



그래서 이제는 위의 예시대로 디렉토리를 만들고 라즈비안 운영체제의 사용자계정을 만들어서 그 계정의 홈디렉토리를 새로 생성한 디렉토리로 지정하는 아주 간-단한 내용을 설명하기로 한다.




# 사용자계정 생성 및 홈디렉토리 지정


근데 여기는 정말정말로 설명할 게 없다. 명령어 딱 2개만 알면 된다.


1. useradd

2. passwd


아주 직관적이다.



우선은 홈디렉토리로 사용할 하위 디렉토리를 생성한다. 예시와 동일하게 만들기 위해 터미널에서 로그인 하자마자 바로 생성했다.


$ mkdir guest



사진이 잘 보일라나 모르겠네.....

여튼 mkdir (<- make directory) 명령어를 이용해서 새 사용자계정의 홈디렉토리로 사용할 디렉토리를 생성했다.



이제는 guest 라는 이름의 사용자계정을 만들 건데, -d 옵션을 이용해서 이 사용자계정의 홈디렉토리까지 한번에 지정하자.


$ sudo useradd -d /home/pi/guest/ guest


이 상태로는 guest의 비밀번호가 지정되어 있지 않을 거다. 아마. 비밀번호까지 지정하고 싶으면 passwd 명령어를 이용한다. passwd 명령어의 파라미터로는 비밀번호를 지정하고자 하는 사용자계정의 이름을 넣으면 된다.


$ sudo passwd guest


위 명령어를 치면 암호를 입력하라는 메세지가 뜬다. 두번이나.



그러면 이제 사용자계정 생성 및 비밀번호 설정까지 마친 것이고, 지난번처럼 브라우저에 주소 입력하고 들어가서 위 정보를 입력하면 해당 디렉토리보다 하위의 디렉토리에 있는 파일들에 접근할 수 있다.




# 어설픈 마무리


일단 여기까지 해서 정말 기본적인 라즈베리파이 외부 접속 설정 방법과 FTP client 설치, 설정, 공개범위 설정까지 마쳐봤다. 급마무리하는 것 같은 느낌이 든다면 맞다.

하하하하.....


지금은 일단 간단하게 FTP 서버만 구축해보았고, 조만간에 그러면 이 FTP 서버를 가지고 무엇을 할 것이냐! 하는 응용편(?)을 포스팅하도록 하겠다.


개인적으로는 영화나 만화책 파일을 볼 때 번거롭게 재생장치에 옮기지 않고 웹스트리밍으로 보는 데에 이용 중인데, 내가 쓰는 프로그램이나 어플리케이션에서의 사용 방법을 소개하고자 한다. 다른 프로그램 쓰더라도 기본 방법은 같을테니....


그러면 우선은 부족한 시리즈글은 여기서 마무리짓도록 한다. 안뇽-


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

내려받기 및 기본 사용방법은

원 제작자 블로그인 https://www.3rabbitz.com/blog_ko/78b4912210c50f33 에서.


전체 소스코드가 포함된 root directory만 설정을 해주면 내부 디렉토리에 들어있는 코드들도 다 pdf로 변환해준다. 완성된 pdf 파일을 열어보면 각 소스코드/디렉토리마다 책갈피 설정이 되어있어 편하다.


소스코드를 모니터로 보면 불편해서 종이에 뽑아놓고 보고 싶을 때라거나 (특히나 남의 코드를 볼 때는 불편...) 이동 중 소스코드를 볼 일이 있다든지 하는 이유로 소스코드를 pdf로 변환하고 싶을 때 유용하게 쓸 수 있을 것 같다.






WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

이번 포스팅에서 다룰 게 아마 제일 쉬울 거 같다.

할 일을 단순하게 요약하자면 DDNS 서비스 회사 홈페이지에 들어가 회원가입을 하고 무료 도메인을 발급받아 라즈베리파이 아이피 주소와 연결해주기만 하면 된다.


아마 이 시리즈 시작할 때 언급은 안했던 것 같지만 내가 처음 라즈베리파이로 서버 구축하려고 마음 먹었을 때는 최대한 돈 적게 쓰고 완성하려고 생각했기 때문에 무료로 이용할 수 있는 서비스라면 품질을 타협하고 무료 서비스를 택했다. 도메인 네임을 얻는 것도 당연히 돈을 주고 하는 것이 서브도메인 설정이라든가 여러 면에서 편리하지만 어차피 FTP 프로토콜로 파일 전송을 주로 할 거라면 그다지 필요가 없다고 판단했다.


그래서 아래 내용은 무료 DDNS 서비스 받는 것 위주로 설명했고, 개인적인 필요가 있는 분은 따로 유료 DDNS 서비스를 받아도 된다. 어차피 같은 사이트 회원가입하고 유료 결제만 해도 되는 부분이라..


이 다음으로 서버 활용할 목표는 파이썬과 장고를 공부해서 개인적인 사진 아카이브를 만들어볼 계획인데 그때쯤 가면 나도 유료 도메인을 받아서 체계적으로 관리할 필요가 생길지도 모르겠다. 하지만 그건 그때 가서.. ㅋㅋㅋ



# DDNS 서비스는 왜 필요한가?


DDNS란 Dynamic Domain Name System의 앞글자를 딴 것으로, 간단하게 말하면 컴퓨터에 할당된 실제 주소에 해당하는 IP 주소와 사용자가 기억하기 쉬운 텍스트 형태의 도메인 이름을 매칭시켜주는 것이라고 볼 수 있다.

예를 들면 서울역 이라는 장소의 명칭이 도메인 이름이 되고, 서울특별시 용산구 한강대로 405라고 하는 주소가 IP에 해당할 것이다. 택시를 타고 서울역에 가고자 할 때, 똑같이 서울특별시 용산구 한강대로 405라는 주소를 불러도 서울역에 도착할 수 있겠지만 서울역이 어디에 붙어있는지 몰라도 서울역이라는 이름만 알면 택시기사님이 알아서 태워다 주는 거랑 비슷한 이치다.


그래서 일일이 ip 주소를 외울 필요도 없고, 그 다음 포스팅까지 마치고나서 다른 사람들에게 알려주기도 편하도록 내 파이에 DDNS를 연결한다고 보면 된다.



# 무료 DDNS 서비스 가입하기


이번에 소개할 곳은 무료로 DDNS 서비스를 제공하는 no-ip 라는 사이트이다. 회사 이름부터 IP 주소가 필요 없다고 하니 이 얼마나 듬직한가.


페이지에 들어갔는데 화면이 온통 영어라 못쓰겠다는 영어 울렁증 환자분이 계시면 화면 맨 밑에서 언어 설정을 바꿀 수 있다. 다만 구글 자동번역기로 제공하는 것이기 때문에 표현이 다소 매끄럽지 않을 수 있다.


1.

사이트에서 Sign Up 버튼을 눌러 회원가입 페이지로 들어간다.


2. 해외 사이트라 별다른 정보는 입력할 필요가 없고, 이메일 주소와 아이디, 비밀번호 정도만 적으면 된다.

호스트네임 부분이 도메인 주소에 사용할 이름이 되는데, 뒤쪽의 .ddns.net이랑 합쳐져서 하나의 도메인 네임이 된다. 지금 정하고 싶지 않다면 Create my hostname later 부분에 체크하면 비활성화된다.


3. 그 아래에 유료 결제했을 때의 장점을 설명하고 있긴 한데 넘어가고 그냥 Free Sign Up 버튼을 눌러서 무료 회원가입을 하자.


4. 회원가입을 완료하고 이메일 주소 확인도 마쳤다면 Sign In 버튼을 눌러서 로그인한다.


5. 로그인 한 후에 메뉴 중에서 Hosts/Redirects 메뉴를 누른다. 한국어 메뉴에서도 정직하게 호스트/리디렉션 이라고 메뉴가 뜬다.


6. 나는 기존에 연결해둔 것이 있기 때문에 Manage Hosts 메뉴에 호스트이름이 뜨는 것이다. Add A Host(호스트 추가) 버튼을 눌러서 새로 호스트를 등록하자.


7. Add a host 화면에서 도메인 주소와 IP 주소를 연결할 수 있다.

Hostname은 내 주소에 쓰고자 하는 명칭을 쓰면 된다. 마치 아이디처럼. hostname에 chaz라고 쓴다면 이 호스트 네임 뒤에 ddns.net이라는 것이 붙어서 chaz.ddns.net 이라는 하나의 완성된 주소가 되는 것이다.

다른 것은 건드릴 필요 없고 IP Address에는 해당 도메인 주소와 연결할 IP 주소를 써야 한다. 라즈베리파이의 IP 주소를 확인한 것을 적어주면 된다.

다 적고나서 화면 맨 아래쪽의 Add A Host(호스트 추가) 버튼을 눌러주면 끝난다.


무료 서비스라서 한 30일 간격으로 호스트 정보를 계속해서 갱신해줘야 한다. no-ip에서 메일이 오면 무시하지 말고 주기적으로 확인해서 호스트 갱신을 해주자.



와 이제 애초에 작정했던 포스팅 시리즈는 글 하나 남았다.. 하나만 쓰면 완성인데.... 으으...


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,
한달이 넘게 블로그 방치 중이었던 나 자신을 반성한다. ㅠㅠ

라즈베리파이로 NAS 구축하는 거 설명하기 위해서 당초 계획했던 포스팅은 이 글 포함 3개가 남았고, 원래대로였다면 7월 안에 다 끝낼 예정이었는데.

나름 졸업준비를 위해서 일이 바빴다는 핑계를 대보기로 한다... 한동안 글을 안쓰다보니 뭐 어떻게 설명을 시작했는지도 가물가물할 정도네.


# 주의사항


이번 포스팅에서도 해야할 건 사실 몇 개 없지만, 나는 이 과정에서 하드웨어적인 문제로 많은 돈과 시간을 쏟았다.


2.5인치 외장하드 물렸을 때는 알 수 없는 이유로 전원이 제대로 공급되지 않아 usb 허브도 두어개 샀고 y자 케이블도 물려보는 등 여러 수단을 써 봤는데 결국은 2.5인치는 포기했다.

자체 전원 어댑터로 전력을 공급받는 3.5인치 외장하드를 사다가 꽂았더니 언제 문제가 생겼었나 싶게 한번에 성공해버렸다.

(사실 2.5인치 외장하드도 케이스까지 갈아본 건 아니어서 케이스와의 상성이 안좋았을 가능성이 남아있긴 하다.)


만약 외장하드를 새로 사다가 꽂을 예정이라면, 되도록이면 전력 공급과 데이터 보관의 안정성 모두를 위해 3.5인치를 추천하는 바이다. 어차피 NAS 구축하는 이유가 일일이 외장하드 안들고 다니고 집에 박아두고 쓰려는 건데..



# ntfs-3g 설치


이 부분은 윈도우에서 사용하던 ntfs 방식의 외장하드를 라즈베리파이에서도 그대로 이용하기 위해 필요한 절차이다.

외장하드에 다른 포맷으로 데이터를 저장하고 있다면 이 부분은 과감히 스킵하면 된다.


$ sudo apt-get install ntfs-3g


(나는 왜 자꾸 sudo 입력할 부분에 sudp 라고 오타를 내는지 모르겠다...)


이거는 뭐 설치만 해두면 된다.



# 외장하드 접근 위치 확인


드디어 외장하드를 라즈베리파이에 연결이 다 끝났다면, 외장하드에 접근할 경로를 확인하기 위해서 다음 명령어를 쳐보자.


$ sudo fdisk -l


(글씨체 때문에 잘 구별이 될지 모르겠는데 소문자 L이다. 복붙이 가능하면 그냥 복붙해서 쓰자.

PuTTY 프로그램에서 붙여넣기 하려면 커서 활성화 된 상태에서 마우스 오른쪽 클릭하면 된다.)



fdisk 명령어를 쳐보면 위 캡쳐화면같이 나온다.

위쪽의 /dev/mmcblk0 이거는 라즈베리파이의 주 저장장치인 SD 카드의 파티션이다. 여기서는 볼 필요가 없으니 넘어간다.


아래쪽의 /dev/sda 이 부분이 따로 연결시켜준 외장하드를 나타내고 있다. 아마존에서 큰맘먹고 15만원이나 주고 산 나의 크고 아름다운 5테라짜리 외장하드가 잘 잡히고 있다. 음하하하.

여기서 중요한 부분은 이 외장하드 디스크가 /dev/sda 로서 잡혀있다는 것이고, 이 안에 있는 파티션은 하나밖에 없는데 Device Boot 아래에 /dev/sda1 이라는 이름을 부여받았다는 것이다. 


덧.

만약 외장하드 하나의 내부를 여러 개의 파티션으로 쪼갰다면 /dev/sda1 뿐만이 아니라 /dev/sda2, /dev/sda3, .... 등의 이름이 더 떴을 것이다.

fdisk 명령어와 출력 결과에 대해서 더 자세히 알고 싶다면 https://www.linux.co.kr/home/lecture/index.php?cateNo=&secNo=&theNo=&leccode=10799 참조.


하지만 'cd /dev/sda' 또는 'cd /dev/sda1' 등을 쳐보면 디렉토리가 아니라면서 접근이 불가능하다. 그러면 어떻게 해야 할까!

이 장치를 라즈베리파이가 인식할 수 있는 디렉토리 중 하나에 연결을 해줘야 하고, 그걸 mount라고 부른다.

(이쯤 되면 그냥 대충 usb 포트에 꽂으면 알아서 드라이브 이름 붙이고 사진 불러오기 할까? 아니면 그냥 폴더 열래? 하고 물어보기까지 하는 윈도우가 그립기도 할 것 같다.)


우선은 외장하드의 경로 중에서 파티션 번호까지 붙은 디바이스 패스 전체를 적어두도록 하자. (위 캡쳐에서는 /dev/sda1)



# 외장하드 마운트


연결은 잘 되어있지만 내가 cd 명령어 쳐서 접근할 수는 없는 외장하드 디바이스를, 이제는 접근 가능한 디렉토리에 연결을 시켜보기로 한다.


우선은 연결시킬 디렉토리가 필요하다. 내가 예전에 캡쳐해둔 짤을 보니 root에 /media/main 이라는 이름으로 디렉토리를 생성했었다. pi 계정의 홈디렉토리 밑에 만들어도 되고 (실제로 지금은 그렇게 사용중) 알아서 대-충 만들자.


$ sudo mkdir /media/main 

(root 디렉토리에 만드느라 sudo 필요했던 듯)


만약 pi 계정 밑에 만들거라면 그냥

$ mkdir external

뭐 이런 식으로 만들어도 무방하다.


연결할 디렉토리를 만들었다면, mount 명령어를 통해 디바이스를 디렉토리 위에 얹는(mount)다.


$ sudo mount -t auto /dev/sda1 /media/main

(mount -t auto <디바이스 패스> <연결할 디렉토리> 형식으로 입력하면 된다.)



만약에 명령어 입력했는데 이 사진처럼 언클린 파일 시스템이라고 뜨면, 윈도우 컴퓨터에 연결했다가 외장하드 뽑을 때 막 뽑아서 그런 거니까 다시 윈도우 컴퓨터에 연결했다가 안전제거 한 후에 다시 라즈베리파이에 물려주면 된다. (라고 구글신님이 말하셨다.)


여기까지 했다면 이제 거의 다 온 거다.

이제 cd 명령어로 방금 마운트 시켜준 디렉토리에 들어가보면 외장하드에 저장된 파일들이 잘 나오는 것을 볼 수 있다. 후후. 또는 이 상태에서 파일을 생성한 다음에 라즈베리파이에서 뽑아서 메인 컴퓨터에 연결해보면 생성한 파일을 확인해볼 수도 있다.



# 외장하드 마운트 자동화


하지만 아직 끝이 난 건 아니다. 지금은 마운트가 잘 돼서 디렉토리 안에 마음대로 들어갈 수 있지만, 라즈베리파이 재부팅이라도 하고나면 마운트가 풀려서 또 일일이 명령어 치고 해줘야 한다. 그러면 당연히 귀찮아질테니 라즈베리파이가 부팅할 때 알아서 마운트하도록 일을 시켜놔야 한다.


관련 내용은 /etc/fstab 파일에 저장되어 있다. 편집기로 열어주자.


$ sudo nano /etc/fstab


라즈베리파이 기능과 관련된 파일이기 때문에 반드시 sudo로 열어줘야 한다. 안그럼 편집해도 저장을 할 수가 없다. /etc/fstab 파일을 열고 나면 위에서 적어둔 디바이스 패스와 마운트한 디렉토리 이름을 가지고 한 줄 추가해주면 된다. 아래 캡쳐파일 참조.


/dev/mmcblk0p1, /dev/mmcblk0p2는 SD카드에 있는 파티션들이다. 건드리면 큰일난다.


그 밑에 있는 /dev/sda1 이게 외장하드의 첫 번째 파티션이고, 나는 지금은 위에서도 말했다시피 외장하드를 pi 계정 밑의 external 이라는 디렉토리에 마운트해서 쓰고 있다. 디바이스 패스, 마운트 경로만 자기가 설정한대로 바꿔주고 나머지는 그냥 그대로 적자.


<디바이스 패스> <마운트 경로> auto noatime 0 0


마운트 경로 뒤쪽의 값들은 의미를 까먹었다. 근데 아마 auto는 외장하드에 파일 저장된 형식을 알아서 인식해서 그대로 처리하라는 뜻으로 기억한다. 하하하... 무책임잼..


여기까지 하고나면 라즈베리파이 재부팅해도 알아서 마운트가 되면서 해당 디렉토리에 알아서 연결이 된다. 여기까지만 하고 넘어가도 상관없다.


ftp 설치하고 브라우저에서 접속해보는 것까지 지난 포스팅에서 다 했으므로, 마운트한 디렉토리가 pi 계정으로 접근 가능한 범위에 있다면 브라우저에서 접근했을 때 외장하드 내부 파일들도 다 볼 수 있게 된다. 테스트 해보자.

물론 Filezilla 같은 ftp 프로그램으로도 접근할 수 있다.



# 추가. UUID로 마운트하기


이거는 해도 되고 안해도 되는 내용이다. 귀찮으면 그냥 스킵하자.


사실은 라즈베리파이에 외장하드를 여러개 물린다면, 외장하드를 인식한 순서에 따라서 /dev/sda, /dev/sdb, ... 이런 식으로 이름이 붙게 된다. 이게 만-약에 알 수 없는 이유로 꼬이게 된다면 마운트 위치가 달라질 수 있다.


그래서 /dev/sda, /dev/sdb, /dev/sdc, .... 같은 상대적인 이름 대신 하드웨어 고유의 ID를 가지고 마운트를 할 수도 있다.


$ sudo blkid


이 명령어를 치면 (외장하드가 도록도록 소리를 내고나서) 각 디바이스에 부여된 고유 ID를 확인할 수 있다. UUID=" 어쩌구 저쩌구 " 하는 부분이다. 저 부분을 부분을 복사해서 /etc/fstab 파일을 편집할 때 디바이스 패스 부분에 집어넣으면 꼬일 일이 없다.





UUID=" 어쩌구 저쩌구 " <마운트 경로> auto noatime 0 0


여기까지 해서 외장하드를 라즈베리파이에 꽂아서 내부를 들여다 볼 수 있게 설정했다. 오늘도 스스로를 칭찬하자.


어디서 막혔거나 설명이 이해가 안되는 부분이 있다면 질문 부탁드리며 이번 글을 마친다.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,
이제 드디어 기본 설정이 끝났고 본격적으로 FTP 프로그램을 깔아본다.

FTP는 File Transfer Protocol의 약자이다. 파일 전송을 위한 규격이라고 할 수 있다. 인터넷 브라우저에서 사이트 주소 앞에 흔히 붙는 http라는 것도 Hyper-Text Transfer Protocol의 약자이다. 한국 사람은 한국말로 해야 말이 통하고 미국 사람은 영어 해야 말이 통하듯이 서로 뭘 주고받을 것인지, 말이 통하기 위한 규격이라고 생각하면 된다.

FTP 프로토콜로 접속을 하게 되면 목표 서버에 나는 파일을 다운로드 하려고 그 서버에 접속하는 거라고 말하는 셈이다.


# proftp 설치하기


$ sudo apt-get install proftpd-basic


내가 봤던 매뉴얼에서는 sudo apt-get install proftpd 입력하라고 되어있었는데 어차피 apt-get이 지원하는 패키지 이름을 검색해보고 자동으로 proftpd-basic 깐다고 하니 그냥 처음부터 proftpd-basic 설치하면 될 것 같다.


중간에 어떤 모드로 설치할 것인지 물어보는데, 기본 세팅대로 standalone으로 설치한다.

standalone 버전은 말그대로 proftpd 프로세스가 독립적으로 실행되는 상태이고, 다른 모드 이름이 기억은 안나는데 그 모드는 외부 접속을 처리하는 다른 독립 프로그램이 있고 걔가 여러 가지 요청을 처리하다가 ftp 관련 요청이다 싶으면 proftpd 프로세스를 종속적으로 만들어서 처리를 맡기는 형식으로 기억한다.

내 기억이 잘못됐을 수도 있고 더 이상의 설명은 (나도 모르는 부분이라) 불가능하므로 나랑 비슷한 수준의 초보자라면 곱게 standalone으로 설치하자.


설치가 다 끝났다면 약간의 설정을 해주자.



# proftp 설정하기


설정 파일은 /etc/proftpd/proftpd.conf 파일 안에 저장되어 있다. 텍스트 편집기로 열어준다. 물론 얘도 sudo 넣어서 열어줘야 한다.


$ sudo nano /etc/proftpd/proftpd.conf


ServerName 같은 거는 서버 이름이니까 적당히 원하는 대로 바꿔줘도 되고, 다른 설정은 다른 데서 검색해보고 공부해서 고쳐도 되지만 내가 설명해 줄 건 DefaultRoot 옵션이다.


이 옵션은 보안을 위해 필요한 것인데, 나중에 이 서버를 주변 친구들이나 다른 사람에게 공개할 때 아무나 내 서버에 접속해서 중요한 파일을 헤집어놓고 다니면서 설정을 바꿔놓는다면 큰 문제가 생길 것이다.

그래서 보안을 위해서는 공개를 위한 디렉토리를 따로 만들어놓고 일반 사용자들은 그 제한된 디렉토리 안에서만 접근할 수 있도록 바꿔야 한다. 따라서 DefaultRoot 옵션이 적용될 수 있도록 주석을 해제해줘야 한다. 기본적으로 DefaultRoot 앞에 '#' 글자가 붙어서 설정에 영향을 미치지 않는 주석으로 처리가 되어있는데, 이 #을 지워서 설정이 적용되게 한다. 아래 그림처럼.



스크롤 내려서 찾기 힘들면 '^W Where Is' 라고 써있는게 텍스트 검색 단축키 설명이다. Ctrl+W 눌러서 defaultroot 입력하고 엔터치자. 기본적으로 대소문자 구별은 안한다.


저기서 ~ 라고 써있는 게 리눅스에서의 홈디렉토리를 가리킨다고 보면 된다. DefaultRoot 옵션을 통해 각 계정별로 지정된 홈디렉토리를 루트, 즉 최상위 디렉토리로 지정을 하기 때문에 그 상위 디렉토리로 못넘어가게 막는 것이다.


조금 자세히 설명을 해보자면, 라즈베리파이의 관리자 계정인 pi가 있고 이 pi의 홈디렉토리는 /home/pi/가 된다.


이 pi 홈디렉토리 밑에 guest 라는 이름의 디렉토리를 만든다. (/home/pi/guest/) 그리고 이 /home/pi/guest/를 홈디렉토리로 하는 guest라는 계정을 만든다.


그러면 pi 계정은 홈 디렉토리가 /home/pi/ 이므로 여기서부터 시작해 그 하위 디렉토리(/home/pi/guest/ 포함)는 전부 접근할 수있지만, 반대로 guest 계정은 홈 디렉토리가 /home/pi/guest/ 이므로 여기서부터 시작해야 하기 때문에 더 상위 디렉토리인 /home/pi/ 디렉토리는 접근할 수도 없고 여기에 무슨 파일들이 있는지 알 수 없게 되는 것이다.


그래서 저 옵션을 설정함으로써 어느 수준의 보안을 구현할 수 있다는 말이다.


그러면 이제 저장을 하고 텍스트 편집기를 종료하자.



# ProFTP 재시작하기


설정을 바꿨다면 변경된 내용을 적용하기 위해 proftp 서비스를 재시작해야 한다.


$ sudo service proftpd restart

$ sudo /etc/init.d/proftpd resart // 위 명령어와 같은 일을 한다. 둘 중에 아무거나 편한 거 쓰면 된다.


# 컴퓨터 인터넷 브라우저에서 ftp 접근해보기


크롬을 쓰든 인터넷 익스플로러를 쓰든 파이어폭스를 쓰든, 심지어 윈도우 탐색기라도 좋다. 주소창에 ftp://<라즈베리파이 IP 주소>를 쳐보자.


<라즈베리파이 IP 주소> 부분에 공유기에서 확인한 내부 IP 주소를 넣을 수도 있고, 1. 유선랜 고정 IP 할당 게시물에서 포트포워딩을 통해 외부 접근이 가능하게 만들어 두었으므로 공유기가 할당받은 외부 IP 주소를 넣을 수도 있다.


내부 IP 주소를 넣는다면 컴퓨터가 같은 공유기에 연결이 되어 있어야만 접근할 수 있다.

외부 IP 주소를 넣는다면 집이 아니라 카페나 도서관 와이파이를 잡더라도 외부 IP 주소를 외워서 적어넣으면 접근 가능하다.


IP 주소를 외워다가 치기 복잡하면 우리가 흔히 아는 알파벳 형태로 된 도메인(www.google.com 이라든가)을 IP 주소에 부여해야 한다. 이것은 DDNS 서비스라고 하여 나중에 다시 설명하기로 한다.



ftp://<IP 주소> 치고 들어가면 계정과 비밀번호를 물어보는데, 지금 라즈베리파이에서 쓰는 계정 그대로 치고 들어가면 된다.

기본 설정 그대로라면 pi / raspberrypi 치면 되겠지. 로그인 후에 위 캡쳐사진처럼 홈디렉토리 아래의 파일들이 그대로 나온다면 성공이다.


지금까지의 글들이 스크롤이 어마어마하게 긴 것에 비해 겉으로 드러나는 게 별로 없었는데, 이번엔 스크롤도 짧고 할 것도 별로 없는 주제에 뭔가 어마어마한 성취를 이뤄낸 것 같이 보인다.

여기까지 무사히 완수했다면 스스로에게 박수를 쳐주자.


만약 문제가 생겼다면 댓글을 달아주시길...


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

이번에는 라즈베리파이에 고정 IP를 할당해서 기기를 껐다 켤 때마다 IP 주소가 바뀌는 불편함을 방지해보자.

그리고 SSH 프로그램을 이용해서 라즈베리파이에 명령어를 입력하는 방법도 함께 다룬다.


본문 내용은 https://www.modmypi.com/blog/tutorial-how-to-give-your-raspberry-pi-a-static-ip-address 이곳의 글을 주로 참조하였다.


아래 과정을 다 따라하고나면 1번 방향으로 동일한 네트워크 내에서 SSH로 접근하는 것과, 2번 방향으로 외부 인터넷망에서 SSH로 접근하는 것을 해결할 수 있다.



# 라즈베리파이 현재 IP 주소 확인하기


지난 글에서 라즈베리파이를 공유기에 랜선으로 꽂아서 연결하는 것을 추천한 바가 있다. 공유기가 라즈베리파이에 할당한 IP 주소를 메인 컴퓨터에서 확인해보자.


윈도우 7 기준으로,

제어판 > 네트워크 및 인터넷 > 네트워크 및 공유센터로 들어가서 메인 컴퓨터가 공유기에 유선랜으로 연결된 경우 '로컬 영역 연결', 무선랜으로 연결된 경우 '무선 네트워크 영역'을 눌러서 연결 상태 창을 연다. 그리고 '자세히'를 눌러서 네트워크 연결 세부 정보를 확인한다. (스크린샷은 연구실에서 찍은 거라 로컬 연결 영역이고, 집에서 노트북으로 연결했을 때는 약간 내용이 많이 나오네..)



그러면 거기서 'IPv4 기본 게이트웨이' 라고 적힌 곳의 IP 주소를 웹브라우저에 입력한다. 공유기 설정에 접근하기 위해서이다.



주소창에 원래 있던 IP 주소와 외부 IP주소는 가렸다. 혹시나 모를 보안을 위해서 ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ 보안은 쥐뿔도 모르긴 하지만.


사용하는 공유기에 따라서 화면은 다를 수 있다. '관리도구' 등의 메뉴를 눌러 공유기 설정으로 들어간다.


이름은 조금 다를 수 있지만 내부 네트워크를 관리하는 곳에서 raspberrypi 라는 기기에 어떤 IP 주소가 할당되었는지 볼 수 있다.




# 포트 포워딩


밑에서 사용할 PuTTY같은 SSH 서비스로 라즈베리파이에 접근하고 싶거나, 우리의 목표인 FTP 연결을 외부 네트워크에서도 연결하고 싶다면 포트 포워딩은 필수이다. 포트 포워딩은 네트워크 외부에서 공유기 IP를 쳐서 들어왔을 때 특정 포트로 접근을 하면, 요청한 포트 번호에 따라서 내부 네트워크에 연결된 기기들에 할당된 내부 IP 주소로 연결해주는 것이다.ㄴ


공유기 설정에 들어간 김에 한 번에 해결하자.


규칙이름은 원하는대로 (22번 포트이면 사실 ssh 뭐시기라고 적는게 나았을텐데 이제와서 바꾸기 귀찮으니 그냥 뒀다.) 쓰고, 내부 IP 주소는 라즈베리파이가 할당받은 IP 주소를 적는다. 나는 TCP, UDP 각각 따로 규칙 설정을 했는데 TCP/UDP 자동으로 세팅해주는 거도 사실 상관 없을 것 같다. 내부 포트 외부 포트는 별다른 일이 없다면(다른 서비스랑 충돌하거나 그러지 않는 이상) 동일하게 세팅하면 된다.


SSH 서비스는 주로 22포트가 기본이므로 22번 포트, FTP는 주로 21포트가 기본이므로 21번 포트를 각각 포트 포워딩 설정해준다.



마지막으로 공유기 설정 창을 닫기 전에 외부 IP 주소를 확인하고 끄자. 이 IP 주소를 알고 있으면 외부 IP 주소와 방금 설정한 포트포워딩을 이용해서 전세계 어디서든 라즈베리파이에 접근할 수 있다.



# 라즈베리파이 터미널 접속


라즈베리파이에 모니터와 키보드를 연결해서 쓰는 중이라면 이부분은 넘어가도 된다.

다른 메인컴퓨터에서 접속중이라면 SSH 접속 프로그램인 PuTTY 프로그램을 켜자.



상세 설정은 나중에 하더라도 일단 라즈베리파이 본체에 접근하려면 Host Name (or IP address) 라고 되어있는 부분에 아까 확인한 라즈베리파이의 IP 주소를 적는다. 포트나 커넥트 타입을 확인한다.


이 때 라즈베리파이의 IP는 공유기가 할당한 내부 IP 주소를 적어도 되고, 이제 포트 포워딩을 마쳤으므로 공유기 자체가 가지고 있는 외부 IP 주소를 적어도 된다. 22포트로 접근을 하면 자동으로 라즈베리파이에 연결되게 해뒀으니까


PuTTY 켤 때마다 아이피주소 적는게 번거롭다면 IP 주소를 쓴 다음에 Saved Sessions 부분에 적당한 이름을 적고 Save를 누르면 저장을 한다. 다음번에 설정을 불러올 때는 Load를 누르면 된다.


그리고 Open을 눌러보자.


login as: 라고 뜨는 부분에는 아이디 (기본으로 pi) 입력하고 엔터,

pi@<IP address>'s password: 라고 뜨는 부분에는 비밀번호 (기본으로 raspberrypi) 입력하고 엔터.

비밀번호 부분에 몇글자 적었는지 안보이더라도 잘 입력 중이니 엔터만 잘 치면 된다.


제대로 잘 입력했다면 로그인에 성공하고 명령어를 입력할 준비가 다 된 것이다.





# 현재 네트워크 정보 확인


네트워크 설정을 바꾸기 전에, 명령어 입력하는 연습도 할겸 라즈베리파이의 현재 네트워크 연결 정보를 확인해보자.


(아래 스크린샷들은 위에 링크한 참조 페이지에서 퍼왔다.)


ifconfig



나는 랜선으로 연결한 상태이기 때문에 eth0으로 잡혀있는 것을 볼 수 있다.

여기서 주목할 정보는 다음과 같다. (적어두라는 뜻이다.)


inet address: 라즈베리파이의 현재 IP 주소

Bcast: broadcast IP range

Mask: Subnet Mask address


netstat -nr



여기서는 GateWay, Destination 정보를 적어둔다.



# 네트워크 설정 변경해서 고정 IP 할당


라즈베리파이의 네트워크 설정은 /etc/network/interfaces 에 저장되어있다. nano 편집기를 써서 편집을 해보자. 그리고 이런 중요한 설정 파일은 관리자 권한이어야 편집이 가능하다. superuser 권한을 얻을 수 있도록 sudo를 붙여서 실행하자.


터미널에 다음과 같은 명령어를 입력한다.


sudo nano /etc/network/interfaces


그러면 화면에 다음과 같은 내용이 나온다.


이걸 아래와 같이 바꾸자. 


address, netmask, network, broadcast, gateway에 집어넣을 값의 설명은 다음과 같다.


address : 할당할 내부 IP 주소 (공유기에서 확인한)

netmask : ifconfig에서 나온 Mask

network : netstat -nr에서 나온 Destination

broadcast : ifconfig에서 나온 Bcast

gateway : netstat -nr에서 나온 공유기 Gateway


덧.

아마 무선으로 하려면 iface wlan0 inet manual 이라고 써진 부분을 위로 올려서 

iface lo inet loopback 밑에 iface wlan0 inet static 이라고 쓰고 나머지 비슷하게 작성하면 되지 않을까 한다.

직접 테스트해본 것은 아니므로 제대로 안된다면 다른 글을 참조하길 바란다. 불친절하지만 어쩔수 없..


이렇게 해두고 Ctrl+O 를 누르면 저장 (^ 표시가 Ctrl 키를 의미), Ctrl+X를 누르면 종료이다. 굳이 저장 후 종료하지 않아도 파일이 변경된 상태에서 종료하면 저장할 것인지 물어보긴 한다.


그리고 터미널에 sudo reboot 입력해서 재부팅하고 나면 라즈베리파이에 동일한 IP주소가 할당되는 것을 확인할 수 있다.

이로써 라즈베리파이에 고정 아이피 할당하는 단계가 끝났다. 여기까지 따라왔다면 축하한다.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

이클립스를 써서 Java 프로그램을 개발할 때 JVM 버전을 여러 개를 사용해야 할 때가 있다. 그런데 사용하는 이클립스 버전에 따라, JVM 버전이 너무 낮으면 이클립스 자체를 실행할 수 없을 수도 있다.

나 혼자 쓰는 컴퓨터라면 그때그때마다 JDK 기본 경로를 바꿔서 하면 되지만, 여러 명이 쓰는 공용 서버에서는 마음대로 버전을 바꿀 수가 없다.


바로 이럴 때 eclipse.ini 파일에 -vm 옵션을 설정하는 것만으로 이클립스가 사용할 JDK 경로를 변경해서 JVM 버전을 맞춰줄 수 있다.


우선 내가 원하는 JDK가 깔려있는 경로를 확인할 겸, 서버에 설치된 JDK 목록을 살펴보기로 한다.


update-alternatives 명령어로 현재 기기에 설치되어 있는 다양한 자바 버전을 확인할 수 있다.

* update-alternatives 명령어를 통해 이런 식으로 같은 프로그램의 여러 버전을 설치해서 관리할 수 있다. 하지만 이 포스팅의 목적을 벗어나므로 자세한 설명은 생략한다.


$ update-alternatives --config java


나는 JDK 8이 필요하고, 같은 서버를 공유하는 연구실 선배는 6을 필요로 해서 6이 기본으로 설정 되어있는 것을 볼 수 있다. mode 4 옆에 '*' 표시가 있는 것이 현재 기본 세팅을 나타낸다.


이제 eclipse.ini 파일을 수정해서 JVM 설정을 바꿔보자.


eclipse.ini 파일은 eclipse.exe가 있는 디렉토리에 같이 들어있다.

리눅스라면 nano나 vim 등의 에디터로 열면 되고 윈도라면 더블클릭만 해도 메모장으로 알아서 열린다.

* 리눅스에서는 sudo 붙여서 열어야 한다.


$ sudo nano <path/to/eclipse.ini>



위와 같이 계정 비밀번호 친 후 superuser 권한을 획득한다.

(쓰고 있는 계정이 su 등록되어있지 않다면 최소한 root 계정으로 로그인 해야 하는데, 루트 알면 그냥 su 등록도 해놓자. su 등록도 이 포스팅이 범위를 벗어나므로 자세한 설명은 생략한다.)



eclipse.ini 편집 화면에서 위 그림과 같은 위치에 다음 내용을 입력한다.


-vm

<path/to/installed/java>

자바 설치된 경로는 설치 상시에 어떻게 세팅했는지 알 수 없으니까; 알아서 잘 넣기 바란다.

* 윈도우 유저라면 java.exe


-vm 옵션을 넣을 때의 주의사항

  • -vm 옵션과 그 설정값(JVM 경로)은 반드시 분리된 라인에 있어야 한다. (위의 스크린샷에서도 -vm 다음줄에 JVM 경로를 적었다.)
  • 설정값은 단순히 Java home directory까지가 아니라 Java 실행파일 까지의 완전한 경로여야 한다.
  • -vm 옵션은 반드시 -vmargs 옵션 전에 넣어야 한다. -vmargs 뒤에 있는 옵션은 JVM 자체에 직접적으로 전해지는 값이다.
  • (아마도 윈도우 기준으로) 32비트 이클립스에는 32비트 JVM, 64비트 이클립스에는 64비트 JVM을 사용해야 한다.


참조: 

http://wiki.eclipse.org/Eclipse.ini

http://stackoverflow.com/questions/1410511/eclipse-jvm-configuration


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

작년 4,5월 경에 라즈베리파이라는 초소형 컴퓨터를 알게되었다. 신용카드만한 사이즈에 완제품 컴퓨터가 다 들어있다니! 공대생의 마음을 심히 흔들어놓는 장난감이 아닌가. 그래서 나는 중학생 때부터 꿈꿔왔던 개인 서버 구축의 열망을 현실화하고 싶어서 두 달 정도 끙끙 앓다가 결국 샀다.

하지만 라즈베리파이를 사고 난 직후에 일이 좀 바빠지게 되자 뜨겁게 불타올랐던 마음은 급하게 식어버리고 바쁘다는 핑계로 7, 8개월 가량을 그냥 묵혀두고야 말았다.





그리고 다시 이놈을 꺼내서 써보자고 마음먹어 본 것이 올해 2월. 아파치, 삼바, FTP 등 프로그램을 설치하는 것은 뭐 매뉴얼 좀 찾아봐서 명령어 치면 그만이지만 외장하드 연결하는 것에서 문제가 생기는 바람에 이런저런 실험도 하고 돈도 왕창 써가면서 3월 말까지 고생했다.

그리고 결국 3월 말, 나를 괴롭히던 외장하드 연결 문제는 외장하드로의 전원 공급 문제였던 것으로 결론내고 3.5인치 외장하드를 따로 사다가 연결해 보았다. 그 결과 지금은 FTP 서버 구축을 완료하고 인터넷 연결된 환경에서는 어디서나 내 자료들에 접근할 수 있어서 편리하게 살고있다.

(연결 문제의 원인은 전원 공급 문제로 확신하지만 전원 공급 문제의 원인은 아직도 불명이다. 분명히 전원 공급형 USB 허브도 썼었는데 ㅡㅡ 외장하드 케이스가 문제인가?) 

특히 만화책 다운받아놓은 거를 업로드 해놓으니 아이패드 어플에서 FTP 주소랑 아이디만 치면 바로 내려받을 수 있는게 좋다. 하하하. 열심히 공부해서 덕질하는 데 쓴다.


서론이 길었다.

여기서부터 준비물과 준비사항을 점검한 후에, 라즈베리파이와 FTP를 이용해 NAS 서버 구축하는 과정을 간략하게 요약하기로 한다.


덧: 라즈베리파이 이후로 비글본이나 인텔의 갈릴레오보드 같은 초소형 컴퓨터들이 많이 출시되었다. 내가 알기로 비글본도 arm 코어에 리눅스를 설치해서 쓰는 것으로 알고 있다. 그래서 비글본이나 안쓰는 컴퓨터에 리눅스를 설치해서 쓴다면, 운영체제 설치나 초기 환경설정을 제외하고는 비슷한 과정을 통해서 NAS 구축을 할 수 있지 않을까 한다. 확신은 못하지만 ㅋㅋㅋ


덧2: 나는 이후 과정을 윈도우 7이 깔린 메인 컴퓨터로 진행했다. 메인 컴퓨터가 맥OS나 리눅스를 사용하는 경우 메모리칩에 라즈베리파이 운영체제를 설치하는 과정은 다른 곳을 참조해야 한다. (불친절하지만 양해바랍니다 하하하)



# 준비물


- 라즈베리파이 본체:

나는 일단 2014년 7월 초에 구입한 라즈베리파이 B 모델을 사용했다. 하지만 그 이전 모델을 사용하거나 그 이후 모델을 사용하더라도 기기의 성능 차이만 있을 뿐 크게 다른 점은 없을 것이다.

(조금만 더 늦게 샀으면 B+ 모델을 샀을텐데 하는 아쉬움이 조금 남는다. 흐규흐규....)


- 메모리칩:

라즈베리파이 본체가 B타입 모델이라서, SD카드를 꽂아야 했다. 친구한테서 micro SD칩을 산 다음에 교내 전자제품 판매하는 곳에서 1000원 주고 SD카드 어댑터를 사다가 끼웠다. 아마 최신 버전의 라즈베리파이에서는 micro SD칩을 꽂는다고 하니 각자 모델에 맞게 메모리칩을 구비하면 된다.

이 메모리칩이 라즈베리파이에서는 보통 컴퓨터의 하드디스크 역할을 하는 주 저장장치이므로 데이터 잘 안깨지고 안정성 높은(=비싼) 제품을 구입하는 것이 좋다. 안그래도 이주일 전에 메모리칩 하나가 사망하는 바람에 급하게 다른 메모리칩에 다시 설치하느라 귀찮은 일을 겪었다.


- 카드 리더기:

메모리칩에 라즈베리파이 운영체제 이미지를 설치하기 위해서는 파일 작업을 위한 또다른 컴퓨터가 필요하다. 나는 노트북에 SD카드 슬롯이 있어서 간편하게 해결했지만 데스크탑이거나 SD카드 슬롯이 없는 노트북이라면 USB로 꽂아서 사용하는 카드리더기가 필요하다.


- 외장하드:

2.5인치 짜리라면 어댑터를 꽂아서 전원 공급이 가능한 USB 허브가 필요하다. 라즈베리파이 본체의 USB 포트에 외장하드를 바로 꽂게 되면 전류량이 부족할 수 있다. 3.5인치 외장하드(외장하드 자체에 전원 공급)라면 딱히 허브는 필요 없다.

(이 부분에서 내가 특히 돈이 많이 깨졌고, 되도록이면 3.5인치를 추천한다.)


- RASPBIAN 설치파일:

라즈베리파이 재단 홈페이지의 다운로드 페이지(https://www.raspberrypi.org/downloads/)에서 최신 버전을 다운받을 수 있다.



-  Win32DiskImager 프로그램:

위의 '덧2'에서 밝힌대로, 나는 윈도우 7 컴퓨터에서 진행했기 때문에 이 프로그램을 이용해서 라즈비안 운영체제 설치파일을 메모리칩에 복사할 것이다. 윈도우가 아니라면 깔 필요 없다.

http://sourceforge.net/projects/win32diskimager/ 이곳에서 다운받을 수 있다.


- 리눅스를 잘 몰라도 부딪쳐보겠다는 마음가짐


이 외에 모니터나 RGB to HDMI 젠더 등이 필요할 수 있다.



# 확인사항


- 공유기 설정 접근 가능 여부 확인


외부에서 라즈베리파이에 접근할 수 있으려면 포트포워딩 같은 과정을 거쳐야 하므로, 공유기 설정에 접근할 수 있어야만 한다. 집에 설치하는 경우 집에서 개별 회선을 쓴다면 상관이 없다. 공용 공간에서라면 먼저 확인이 필요하다. 나는 운좋게도 고시원 내부 인터넷 회선을 분배하는 최상위 공유기 설정에 비밀번호가 안걸려있어서 ㅋㅋㅋㅋㅋㅋㅋ 지금까지도 잘 기생해서 쓰고 있다.


- 라즈베리파이 명령어 입력 환경


환경 구축 및 FTP 설치 과정에서 리눅스 터미널에 명령어를 치는 과정이 필요하다.

라즈베리파이에 직접 모니터, 키보드(필요하다면 마우스도)를 연결해서 쓰거나 메인 컴퓨터에서 SSH 프로그램을 통해 접속해야 한다.


모니터를 연결해서 쓰는 경우 라즈베리파이는 HDMI 단자밖에 없으므로 모니터에 HDMI 단자가 없다면 변환 젠더를 사야 한다. 인터넷에서 사면 5000원~10000원으로 구입할 수 있다. 그리고 라즈베리파이에 직접 명령어를 쳐야 하므로 최소한 USB 연결형 키보드가 필요하다.

(이제는 PS2 포트 갖고 있는 키보드가 훨씬 희귀하겠지;)


메인 컴퓨터에서 SSH 프로그램을 써서 연결할 거라면 공유기에 라즈베리파이를 연결할 랜선이 필요하다.

(무선 wifi로 잡을 때는 설정을 제대로 안해봤기도 하고 ㅋㅋ 유선랜 연결하는 게 안정적일 거라고 생각된다.)



# 운영체제 설치

(아래 내용은 아마 라즈베리파이 재단 홈페이지의 설치페이지 내용을 참조한 것으로 기억한다)


### 이미지 다운로드


준비물 설명할 때 라즈베리파이 웹사이트에서 라즈비안 운영체제를 받을 것을 추천했다. 속도를 위해서라면 토렌트로 받는 것이 낫다. ZIP으로 받아도 상관은 없고.


최신 배포판을 다운받았다면 압축을 풀어서 .zip 파일과 이름은 같고 확장자만 .img로 바뀐 파일이 잘 생성되었는지 확인한다.

(예: 위의 캡쳐에서는 2015년 5월 5일에 릴리즈된 운영체제를 다운받을 수 있다. 2015-05-05-raspbian-wheezy.zip 파일을 다운받아서 압축을 풀면 2015-05-05-raspbian-wheezy.img 파일이 생성될 것이다.)



### 메모리칩에 이미지 복사


1. SD카드를 SD카드 리더에 넣고 어떤 드라이브 문자가 할당되었는지 확인한다. (SE카드 리더는 SD카드 슬롯이 있다면 그대로 써도 되고 저렴한 SD 어댑터를 USB 포트에 꽂아도 된다.)


2. 준비물에서 설명한 Win32DistImager 프로그램을 실행한다. 주의할 점은, 반드시 단축아이콘에 오른쪽 클릭을 해서 '관리자 권한으로 실행'해야 한다.



실행화면


3. Image File이라고 쓰인 박스에서 열기 아이콘을 눌러 위에서 추출한 이미지 파일을 선택한다.


4. Device라고 표시된 부분에서 메모리칩에 할당된 드라이브 문자를 선택한다. 정확한 드라이브를 선택하도록 주의한다. 잘못된 드라이브를 선택하면 컴퓨터의 하드디스크에 있는 데이터를 파괴할 수도 있다! 만약 컴퓨터의 SD 슬롯을 사용하는데 Win32DiskImager 창에서 해당하는 드라이브를 찾을 수 없다면, usb 포트에 꽂아서 사용하는 SD 어댑터를 사용해야 한다.


5. Write 버튼을 누르고 쓰기가 완료되기를 기다린다. 

주의할 점: 만약 .img 파일이 있는 경로 중에 한글이 포함되어있다면 제대로 동작하지 않는다.


6. 이미지 쓰기가 완료되었다면 Exit를 눌러 imager 프로그램을 종료하고 메모리칩을 꺼낸다.



여기까지 길고 긴 스압을 거쳐 메모리칩에 이미지 쓰기까지 완성한 분에게 경의를 표한다.


이 다음 게시물부터는 나의 삽질 포인트까지 포함하여 다음과 같은 내용을 설명할 예정이다.


1. (유선랜에서) 라즈베리파이 고정 IP 설정


2. FTP 프로그램인 ProFTPD 설치 및 간단한 설정


3. 라즈베리파이에 외장하드 인식시키기


4. IP주소 외울 필요 없이 DDNS 설정해서 간편하게 접속하기


5. FTP 서버를 주변 사람들에게 공개하기



위 과정을 마스터 하고나서 (특히 5번 ㅋㅋ) 다른 사람들이 나의 위엄을 칭찬하는 칭송의 말을 듣고싶다면 꼭! 끝까지 다 따라해보도록 하자.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

그래픽카드에 HDMI 케이블로 모니터를 연결했을 때 화면은 흐릿하게 보이고 테두리는 잘려서 원래 모니터 크기보다 작게 화면이 출력되는 경우가 있다.


모니터 크기보다 화면이 작게 나오는 이런 경우를 언더스캔이라고 한다.

(반대로 모니터 크기보다 화면 출력이 커서 잘리는 경우를 오버스캔이라고 한다.)




그림으로 그리면 뭐 이정도? (파워포인트로 그림그리는 게 왜이렇게 재미있을까...)


이 글에서는 AMD 그래픽카드에 HDMI로 모니터 출력할 때 생기는 언더스캔을 해결하는 방법을 소개한다.




1. (기본사항) AMD 그래픽카드 드라이버를 설치한다.


http://support.amd.com/ko-kr/download


여기서 본인의 그래픽카드에 맞는 드라이버 및 AMD Catalyst Control Center 프로그램을 설치한다.




2. AMD Catalyst Control Center 프로그램을 실행한다.


바탕화면에서 오른쪽 클릭을 한 후 나오는 컨텍스트 메뉴에서 눌러서 실행해도 되고, 작업표시줄의 트레이에서 아이콘을 오른쪽 클릭을 해서 나오는 컨텍스트 메뉴에서 눌러서 실행해도 된다. 여튼 실행시키자.




3. HDMI니까, 디지털 패널이다.


왼쪽 메뉴에서 '내 디지털 평면 패널'을 선택해서 나오는 하위 메뉴 중에서 '크기 조정 옵션(디지털 평면 패널)'을 선택한다.


언더스캔 상태였다면 아마도 슬라이드바의 막대기가 20% 정도로 치우쳐있을 것이다.


막대기를 옮겨가면서 모니터 크기에 잘 맞고 화면이 흐릿하게 보이지 않도록 설정을 바꿔준다.


그리고 적용을 누른 후 닫으면 모니터 설정이 끝난다.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

내가 궁금해서 찾아보는 대로 추가해나갈 예정 ㅇㅇ.. 우분투 위주로.


1. 설치된 리눅스 32비트/64비트 확인


http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_32%EB%B9%84%ED%8A%B8_64%EB%B9%84%ED%8A%B8_%ED%99%95%EC%9D%B8


> $ getconf LONG_BIT



2. 심볼릭 링크 생성

매번 응용프로그램이나 디렉토리 경로 찾아헤매기 귀찮을 때.


http://stackoverflow.com/questions/1951742/how-to-symlink-a-file-in-linux


> $ ln -s /path/to/file /path/to/symlink



3. 작업중인 프로세스 종료, 일시정지, 되돌리기

아예 종료하는 건 Ctrl + C

일시정지하는 건 Ctrl + Z


http://superuser.com/questions/268230/how-can-i-resume-a-stopped-job-in-linux

  • jobs : 현재 처리중인 일들을 출력
  • fg : 다음에 처리할 일을 다시 시작 (foreground)
  • fg %[숫자] : 숫자로 지정된 일을 다시 시작
  • bg : 다음에 처리할 일을 백그라운드로 (background)
  • bg %[숫자] : 숫자로 지정된 일을 백그라운드로



4. apt-get 명령어 설명


http://blog.outsider.ne.kr/346



5. make 문법

이건 뭐 리눅스 팁은 아닌 거 같긴 하지만.....


http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/C/Documents/minzkn_make



6. 리눅스 커널 버전 확인

(사실 putty로 로그인 할 때도 옆에 출력되는 것 같다.)


http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%BB%A4%EB%84%90_%EB%B2%84%EC%A0%84_%ED%99%95%EC%9D%B8



7. usb 연결 정보 확인


http://www.myservlab.com/206



8. 계정생성 useradd / adduser 비교


http://mintnlatte.tistory.com/257



9. grep 명령어

파일 내에서 특정 패턴/문자열을 찾아준다.


http://ra2kstar.tistory.com/100



10. 프로세서 정보 확인 & hyperthreading disabling

그냥 'cat /proc/cpuinfo' 써서 확인해도 되지만,


http://unix.stackexchange.com/questions/33450/checking-if-hyperthreading-is-enabled-or-not

위 링크에서 Nils가 쓴 댓글의 스크립트를 복사해서 실행하면 physical core, logical core 부분만 디코딩해서 hyperthreading 정보 뽑아낼 수 있다.


http://serverfault.com/questions/235825/disable-hyperthreading-from-within-linux-no-access-to-bios

http://www.absolutelytech.com/2011/08/01/how-to-disable-cpu-cores-in-linux/

여기 참조하면 core 죽이는 방법이 있다. physical core 하나마다 logical core 하나씩 죽이면 bios 설정 안건드리고도 hyperthreading 안쓸 수 있을 것.



11. su 권한 부여

사용자 추가 후에 su 권한 쓸 수 있게 추가.


http://thinkpro.tistory.com/16



12. 환경변수 확인

시스템에 등록되어있는 환경변수 목록/값 등을 확인하는 방법과 환경변수 값 지정하는 방법.


http://akaseon.tistory.com/50



13. top 명령어로 CPU 사용률 보기

http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%BD%94%EC%96%B4%EB%B3%84_CPU_%EC%82%AC%EC%9A%A9%EB%A5%A0_%ED%99%95%EC%9D%B8



14. find 명령어로 파일 검색

http://mwultong.blogspot.com/2006/10/find-linux-file-find-command.html



15. kill 명령어로 프로세스 죽이기

http://ngee.tistory.com/132



16. du 명령어로 디렉토리 용량 확인

https://www.linux.co.kr/home/lecture/index.php?cateNo=&secNo=&theNo=&leccode=224



WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

참조: http://stackoverflow.com/questions/2219756/how-to-move-some-changeset-to-a-new-branch-in-mercurial


질문자:


현재 상황은

A -> B -> C -> D # default branch

이렇게 되어있는데, 이것을

A # default branch
 \-> B -> C -> D # some_new_branch

이런 구조로 바꾸고 싶다.

그런데 아직 새 브랜치가 없는 상태에서 새 브랜치를 만들어서 기존 커밋 내용을 옮기고 싶다.



가장 많이 추천을 받은 답변의 내용은 브랜치를 바꿀 B, C, D 커밋을 패치로 내보낸 다음에 새 브랜치를 만들어서 새 브랜치에서 패치를 가져오고 기존 브랜치에서는 B, C, D 커밋을 삭제하는 것.


1.

해당 디렉토리의 커맨드 창을 연다.


1-1. 이미 버전관리를 쓰는 사람이라면 개발자일테니 기본 터미널 열어서 디렉토리 이동하는 법은 설명하지 않는다.

1-2. TortoiseHg를 주로 이용하는 개발자라면 프로젝트 이름에서 오른쪽 클릭해서 Terminal 선택하면 손쉽게 선택 가능하다.


2. 

옮길 리비전을 patch로 내보낸다.

hg export -o patch B C D

(B C D에 들어갈 값은 리비전 번호를 쓰면 된다)


3.

브랜치가 갈라지는 곳으로 돌아간다.

hg update A


4.

새 브랜치를 생성한다.

hg branch branchname


5.

패치로 내보낸 리비전 내용을 새 브랜치로 가져온다.

hg import patch


+

새 브랜치로 옮긴 커밋 리비전들이 기존 브랜치에 남아있는 게 보기 싫다면 MQ를 이용해서 커밋 내용을 삭제하면 된다.


2015/02/17 - TortoiseHg 상에서 잘못된 커밋 삭제하기 이 게시물 참조


++ 원래 브랜치로 돌아오고 싶다면 다시

hg update A



그림으로 표현하면 대략 이런 과정이 되지 않을까 한다.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,