Programming/IoT_Embedded

라즈베리파이 개발환경 꾸미기 #1. 라즈비안 OS 설치하기

이세우 2016. 5. 3. 23:27

이 포스트는 라즈베리파이 개발환경 꾸미기를 주제로 아래와 같은 시리즈 연재로 이루어 집니다.

  1. >> 라즈비안 OS 설치하기 <<
  2. 키보드 모니터 없이 라즈베리파이 Login 하기
  3. Wifi 설정 / 기본 설정하기
  4. 파이썬 + Eclipse로 라즈베리파이 개발하기
  5. 라즈베리파이에 NodeJs 설치하기
  6. NodeJs + Eclipse로 라즈베리파이 개발하기
  7. C/C++ Cross Compiler(Tool Chain) 설치하기
  8. Eclipse + C/C++ 로 라즈베리파이 개발하기

일반적인 개발용 ARM 보드는 개발 PC와 연계할 수 있는 다양한 방법을 제공하고 있는데,
그 중에 시리얼 포트나 USB-TTL 인터페이스를 제공해주는 것이 대표적입니다.
하지만, 라즈베리파이는 목적 자체가 개발용 보드가 아니라 돈이 없어 컴퓨터를 사지 못하는
사람들을 위한 교육용 싱글보드 컴퓨터이기 때문에 개발을 위한 인터페이스가 없습니다.
그래서 개발 PC에서 소스를 작성하고 빌드를 한 후에 라즈베리파이에 적용하기 위한 과정이 
다소 복잡하고 불편하지요. (사실 개발에 활용하려면 라즈베리파이 보다는 비글본 블랙이 더 좋죠.)

<이래 놓고 개발을 한다구요?>


물론, 라즈베리파이에 일반적인 컴퓨터 사용할 때 처럼 키보드, 모니터, 마우스 등을 연결하고
거기에서 직접 개발하고 적용하면 문제 될것이 없지만, 취미로 메이커 활동을 할 때는 별 문제가 없지만,
좀 더 진지하게 메이커 활동을 하거나 임베디드 개발을 하려고 하면 여러 문제를 가지게 됩니다.

첫째, 어떤 PC를 쓰든 라즈베리파이 보다는 빠른 PC를 사용할텐데,
라즈베리파이에서 빌드하는 것은 너무 느리고 오래 걸립니다. 빠른 PC를 두고 라즈베리에서 작업하는 것은
바보 같은 짓입니다. 
둘째, 키보드, 모니터, 마우스를 연결해야 해서 하나씩 더 사야 되거나 뺐다 꽂았다가 하기 불편하고 자리도 차지합니다.
물론 VNC와 같은 Remote Screen 도구를 사용해도 되지만 멀쩡한 PC 놔두고
느려터진 라즈베리에 원격 접속해서 개발하는 것은 아무리 봐도 정상은 아닙니다.
마지막으로 라즈베리파이에서 직접 개발을 하는 경우 소스의 버전관리도 어렵고 자칫 소스코드를 날려 먹을 수 도 있습니다.
라즈베리파이는 SD카드를 유일한 저장장치로 사용하고 있는데, SD카드는 수명이 그리 길지 않아서,
어제까지는 잘 돌아가던게 갑자기 부팅이 안될때가 있습니다. 이럴때 소스가 그 안에 들어 있으면 날려 먹는거지요.

그래서 이번 포스팅 시리즈에서는 키보드 모니터 없이 라즈비안 OS 설치하는 방법과,
개발 PC에서 개발하고 최종 빌드 결과만 손쉽게 라즈베리파이에 적용하는 방법을 알아 봅니다.
라즈베리파이에서 개발이 가능한 언어는 많습니다.
이번 포스팅 시리즈에서는 기본 언어로 채택하고 있는 것이 파이썬을 이용하는 방법과
IoT개발에 가장 최적의 환경이라 할 수 있는 NodeJs,
그리고 개발의 기본, 특히 임베디드 개발에 기본이라 할 수 있는 C와 C++ 을 이용하는 방법을 차례대로 살펴 볼 것입니다.
개발 도구로는 이클립스를 이용하여 클릭만으로 빌드와 적용이 될 수 있는 환경을 만들어 봅니다.


이와 같은 작업에 앞서서 필요한 장치들이 있는데, 준비해야 할 것을 먼저 살펴 보겠습니다.


라즈베리파이 본체입니다. 모델은 파이1,파이2, 파이3 아무거나 써도 상관 없습니다.(파이 3는 모니터,키보드 필요)

USB 어뎁터, 파이3는 2.5A 이상이 필요하고  파이1, 2는 일반적인 핸드폰 충전용이면 됩니다.


USB 케이블, 핸드폰 충전 할 때 쓰는거면 됩니다.


Micro SD 카드와 카드 리더기, 8GB 이상이 필요합니다.


USB Wifi 동글, 파이3 이거나 유선랜만 쓸거라면 없어도 됩니다.


USB-to-TTL(Serial, UART) 장치, 3.3v용이 좋지만  5V용도 가능합니다.(추후 설명)



라즈베리파이 모델은 어떤 것이든 상관은 없는데, 파이3 모델은 Wifi와 블루투스를 내장하고 있어서
무선랜카드가 필요 없습니다. 대신, 앞서 설명드린 키보드, 마우스, 모니터 없이 기본 설정하는 
방법은 사용할 수 없습니다. 그 이유는 블루투스 모듈때문에 시리얼 장치로 직접 연결이 안되기 때문인데요,
이 부분은 나중에 따로 포스팅 하겠습니다.

위의 장치 목록 중에 키보드, 마우스 , 모니터를 대신할 녀석이 USB-to-Serial 이라는 장치이구요,
그 밖에 필요한 것으로 마이크로 SD카드, USB SD카드리더, 필요에 따라 USB Wifi 동글 입니다.
Wifi 동글은 유선랜으로 사용할 경우에는 불필요 하겠죠.
필요한 장치가 모두 준비 되었다면 설치 작업을 시작해 볼까요?

라즈비안 다운로드

우선 라즈베리파이 재단 사이트에서 최신 라즈비안 OS를 다운 받아 보죠.

NOOBS를 이용한 설치 방법도 있긴 하지만, 라즈비안 말고 다른 배포판을 설치할게 아니라면
쓸데 없이 2번 작업하느니 한번에 라즈비안을 설치하는 것이 효과적입니다.


다운로드 사이트에 가면 2가지 라즈비안을 다운로드 받을 수 있습니다.
왼쪽에 있는 “RASPBIAN JESSIE”는 데스크탑용으로 설치 후 부팅을 하면 X윈도우가 뜹니다.
오른쪽에 있는 “RASPBIAN JESSIE LITE”는 콘솔로만 로그인 할 수 있고
불필요한 데스크탑 환경과 어플리케이션은 들어 있지 않아요.

개발 환경을 꾸밀 목적이라면 당연히 “LITE” 버전을 설치하는 것이 빠르고 작은 용량으로 사용이 가능하겠죠.
다운로드 받을때는 ZIP파일을 직접 받는 것 보다 Torrent로 받는 것이 훨씬 빠릅니다.
용량은 다운받았을 때 1.3GB VS 284.4MB 이구요, 압축을 풀었을때 4.03GB VS 298MB 네요.
용량을 보니 쓸데 없이 데스크탑용을 받을 필요가 없겠죠? 무엇을 받을 지는 알아서 판단하시면 됩니다.



라즈비안 OS 이미지를 SD카드에 쓰기

다운을 다 받았으면 압축을 풀고, 미리 준비해 놓은 SD카드에 저장해야 합니다.

마이크로 SD카드는 8GB이상을 준비해야 하고, 컴퓨터에 마이크로 SD카드 리더기가 없으면 위의 사진과 같은 SD카드 리더기를 따로 준비해야 합니다.
리더기 가격은 대부분의 오픈 마켓에서 1,000원 정도에 판매하고 있구요. SD카드도 용량에 따라 차이는 있지만 얼마 안합니다.
그러니까 가급적 한 마켓에서 구매하시고 SD카드는 소모품이라 생각하고 미리 필요 용량별로 구매해 놓는 것이 택배비를 아낄 수 있습니다.


아래는 구매 링크 입니다만, 저하고는 아무 상관없습니다.(솔직히 검색이 너무 안되서 별로 안좋아 합니다.)

이제 다운로드 파일을 SD카드에 저장해야 하는데, 탐색기 같은 파일 관리자로 그냥 복사해서는 안되고 별도의 이미지 작성 도구를 사용해야 합니다.
이에 대해서는 라즈베이파이 재단 사이트에 상세히 나와 있습니다.


영어라서 제가 설명을 대신 해 보겠습니다.
윈도우즈는 Win32 Disk Imager를 이용하면 쉽고, 맥OS에서는 자체 커맨드 명령어를 이용하면 됩니다.


<Updated, 2017, 2,2>

Etcher를 이용하면 윈도우즈, 맥, 리눅스 할것 없이 동일한 GUI로 손쉽게 라즈베리안 OS 이미지를 SD 카드에 구울 수 있습니다.
다운로드는 https://etcher.io/ 에서 무료로 받으 실 수 있고, 아직 베타 버전이긴 하지만, 제가 사용해본 결과 한번도 문제를 일으킨 적이 없습니다.
그리고, SD카드를 자동으로 선택해주고 Portable 장치가 아니면 선택할 수 없게 나오기 때문에 메인 디스크를 날려 먹을 우려도 없습니다.


SD카드 리더기를 USB 포트에 연결하고 다운로드한 이미지 파일을 선택해서 "Flash"  버튼을 누르면 작업은 끝납니다.

심지어 zip파일 압축을 풀 필요도 없습니다.





윈도우즈의 경우 

윈도즈 사용자는 아래 링크에가셔서 다운로드 버튼을 눌러 받으면 됩니다.



다운로드 받은 파일을 설치하고 나서 실행하면 아래와 같은 창이 뜨는데요.


“Image File” 칸에 앞서 다운로드 받아 압축을 풀어 놓은 라즈비안 이미지 파일파일을 지정하고
“device”란에 SD카드 리더기 위치를 지정하면 됩니다.


지정한 장치의 내용이 모두 지원진다는 내용의 경고창이 뜨는데,
엉뚱한 장치를 선택하지는 않았는지 잘 확인하고 “Write” 버튼을 누르고,
진행이 완료되면 “Exit” 버튼을 눌러 이미지 작성을 완료하시면 됩니다.


맥 OS의 경우 

맥 OS에서는 터미널 창을 열어서 커맨드 명령으로 작업을 합니다.(GUI릴 지원하는 툴도 있는데, 뭐하러 그래요.)
우선 SD카드가 들어 있는 USB 카드 리더기를 연결한 후에 디스크 번호를 얻어야 하는데,
2가지 방법이 있습니다. 

  • diskutil list

  • df -h


위 2가지 방법을 이용해서 SD카드가 연결된 디스크 번호를 찾으면 됩니다.

뭘로 어떻게 구분해야 할지 모를때는 SD카드 리더기를 꽂기 전 명령과 꽂은 후 명령을 비교하면 되겠죠.
이때 파티션이 아닌 디스크 번호를 확인하는 것이 중요합니다.
위의 예로 보자면 "/dev/disk1”, “/dev/disk1s1”이 아니라 “disk1”이라는 이름이 필요한 겁니다.

디스크 번호를 확인했으면 다음으로 unmount 합니다.
명령어는 아래와 같습니다.

$>diskutil unmountDisk /dev/disk#
위의 명령에서 #을 앞서 구한 디스크 번호로 대신 하면 됩니다.

이제 준비한 img 파일을 SD카드에 쓰기 작업을 합니다.
명령어는 아래와 같습니다.

sudo dd bs=1m if=/path/image.img of=/dev/rdisk#

위의 명령어 중에 if=의 오른쪽 /path/image.img를 다운로드 받은 이미지 파일 위치로 지정하고,
of=의 오른쪽 /dev/rdisk1을 앞서 얻은 디스크 번호를 입력하는데,
disk1이면 rdisk1과 같은 식으로 ‘r’을 앞에 붙이면 됩니다.

명령어를 입력하고 나면 아무런 메시지가 안나타나는데, 진행 상황을 확인 하고 싶으면 [Ctrl + T]를 누르면 위의 그림 처럼 write 작업 한 량을 표시해 줍니다.

쓰기 작업이 모두 종료되고 나면 eject  명령어로 디스크 꺼내기 작업을 합니다. 

sudo diskutil eject /dev/rdisk#



sd카드에 라즈비안 쓰기 작업이 끝나면 라즈베리파이에 sd카드를 꽂고 전원을 연결하면 되는데,
그 다음 과정은 다음 포스트에서 다룹니다.


  1. >> 라즈비안 OS 설치하기 <<
  2. 키보드 모니터 없이 라즈베리파이 Login 하기
  3. Wifi 설정 / 기본 설정하기
  4. 파이썬 + Eclipse로 라즈베리파이 개발하기
  5. 라즈베리파이에 NodeJs 설치하기
  6. NodeJs + Eclipse로 라즈베리파이 개발하기
  7. C/C++ Cross Compiler(Tool Chain) 설치하기
  8. Eclipse + C/C++ 로 라즈베리파이 개발하기