Multiple Beaglebone black for SETI@home(Boinc)

우주인과 대화하기

병원에서 당직설 때마다 한번씩 옥상에 올라가 하늘을 봅니다. 서울 하늘이라 그다지 많은 별이 보이지는 않지만, 그래도 몇 개 발견하면 Stellarium같은 앱을 통해서 무슨 별인지 찾아도 보고 한답니다. 그런데… 하늘에 떠 있는 저 많은 별들 중에 외계 생명체가 살 지 모른다고 상상하면 어떨까요…? 물론 가능한 일이므로 많은 사람들이 그 연구를 하고 있습니다.

SETI 프로젝트

seti-image-2

SETI프로젝트는 외계의 지적생명 탐사(Search for Extra-Terrestrial Intelligence; SETI)라고 불리며 외계 행성들에서 오는 전자기파를 찾거나 보내는 연구를 하는 활동이랍니다[2]. 간단히 말하면 이렇습니다.

  • 지구에서 사용하는 모든 무선 통신은 강약의 차이는 있지만 온 우주로 퍼져나가게 되어있어.
  • 결국 우리만큼 문명화된 외계인이 있다면 우리의 신호를 받고 분석하고 있을지도 몰라.
  • 만약 문명화된 외계인이 있다면 라디오(무선신호, 전자기파)를 쓰지 않을까?
  • 좋아! 그럼 커다란 레이다를 설치해 놓고 우주에서 오는 신호를 받아서 분석해보자!

이런 생각으로 현재 푸에르토리코 아레시보 남쪽에 305m짜리 전파망원경을 걸어놓고 신호를 받기 시작했습니다.

Arecibo_Observatory_Aerial_View

문제는 외계 신호를 받기는 하는데 이 데이타를 분석하는 단계에 엄청난 계산 능력의 컴퓨터가 필요하다는 것이었습니다.

이걸 전부 돈 주고 살 수도 없고… 아무리 돈을 주고 사도 실시간으로 들어오는 데이타를 동일한 속도로 분석하기에는 불가능에 가까웠지요.

결국 그리드 컴퓨팅 기술이 추가되어 SETI@Home이라는 프로그램이 나오게 되었습니다.

이 프로그램의 작동 원리는 이렇습니다.

전파 데이타를 작게 쪼개서 프로젝트에 참여하고 있는 컴퓨터들에게 자료를 보내줍니다. 그리고 각각의 컴퓨터는 자신의 할당 부분을 열심히 계산한 후 결과값을 서버에 돌려주는 것이지요. 이런 방식으로 컴퓨터 구입에 막대한 지출을 하지 않고도 충분한 컴퓨팅 파워를 얻을 수 있게 된 것입니다.

현재는 Boinc라는 SETI프로젝트 뿐만 아니라 다양한 연구에 도움을 줄 수 있는 프로그램으로 변신했지요..

아무튼 SETI 프로젝트에서는 엄청난 컴퓨팅 파워가 필요했고, 그걸 지구상의 수많은 컴퓨터 사용자들이, 컴퓨터의 유휴시간동안 계산해서 도움을 줄 수 있게 되었답니다.

그럼… 구구절절 이야기는 여기까지 하고 본격적으로 SETI@Home을 설치해 볼까요?

Prerequisite

SETI@Home을 위해 Boinc를 설치하기 위해서는 다음의 사양이 요구됩니다.

  • 컴퓨터
  • 인터넷 연결
  • 조금의 하드디스크 공간
  • 선택: GPU연산이 잘 되는 비디오 카드(NVIDIA)

그래요.. 그냥 인터넷에 연결되는 컴퓨터가 있으면 된다는 뜻입니다. 물론 아주 연산속도가 빠른 인텔 i7 프로세서를 달고 있는 워크스테이션이면 더 좋겠지만… SETI프로젝트에서 하는 일 자체가 단순 연산뿐이라 실제 CPU속도에는 크게 영향을 받지 않습니다. 되려 최근에는 엄청난 연산속도를 자랑하는 비디오카드가 더 유리하다고 하더군요. 특히 NVIDA카드는 CUDA라는 기술을 이용해서 이런 이득을 확실히 볼 수 있데요. 근데.. ATI Radeon은 아직 지원을 하지 않는다고 하더군요… 윈도우에서는 어떤지 몰라도 우분투에서는 확실히 안됩니다.

그럼 전 집에서 놀고 있는 비글본 블랙(Beaglebone black)으로 BOINC를 돌려보기로 했습니다.

비글보드에 우분투 설치 후 BOINC설치와 작동까지..

Beaglebone Black용 준비물

  • Beaglebone black 보드
  • 5V 2.0A 전원
  • 4GB이상의 MicroSD 한 개
  • USB 키보드
  • 랜 케이블
  • 비디오 출력 케이블(microHDMI)과 모니터
  • 옵션: USB 허브와 USB마우스. 그리고 이더넷 허브

만약, 유무선공유기(게이트웨이)의 접속비밀번호를 알고 계신다면 작업 중간에 비글보드에 고정 IP를 할당하시는게 도움이 됩니다. 그래야 나중에 SSH로 접속해서 요녀석들을 조종할 때 편하거든요.

비글보드에 Ubuntu 이미지 설치하기

우선 ARM 프로세서용 우분투 이미지가 필요하겠지요? 이미 천채들이 다 만들어 놨습니다[4]. ㅋㅋ

eLinux.org에 들어가보면 쉽게 구할 수 있는데요, 이 사이트에 들어가셔서 요걸 클릭하시거나 터미널에서 다운 받으면 됩니다. 걍 아래 링크를 클릭하셔도 되요!

용량은 약 187MB정도이고요.. 4GB microSD에 설치하기 위해 만들어진 이미지입니다.

대부분의 설치 설명해서는 dd명령이라는 터미널 명령을 많이 권하는데, 저같은 무식이들은 이런거 싫어하지요..; dd명령을 현재 진행상태도 알려주지 않고 또 사람들이 두려워하는 암호같은 영어 명령을 많이 쳐야 하니까요.

그냥 다운로드 폴더에서 압축을 푼 다음 .img파일을 찾습니다.

만약 저처럼 우분투를 사용하시는 사용자라면 img파일을 찾아서 마우스 오른쪽 클릭 해보면 제일 위에 ‘이미지를 디스크에 쓰기’ 명령이 보일겁니다. microSD를 넣고 실행시키세요. 반면에 윈도우 사용자라면 Win32 Disk Imager라는 프로그램을 다운받아 실행시키면 됩니다.

다 만들어 졌나요?? 그럼 다음 단계로…

비글보드에 새로운 이미지 설치하기

우선 비글보드의 모든 전선을 다 뽑습니다. 촤악! 그리고 microSD를 삽입합니다.

삽입 후에서는 microSD슬롯 옆의 부트 스위치를 눌러야 합니다. 이때 오래 누르고 있어야 하니 걍 연필 뒤쪽이나 평평한 볼펜 엉덩이로 가볍게 눌러주고 있으면 됩니다. 주의할 것은 전원을 인가하고 나서도 계속 누르고 있어야 한다는 겁니다.

부트 스위치를 누른채로 전원을 인가합니다. 이때 전원은 5V 2A의 어뎁터가 가장 좋습니다. 아니면 USB client쪽으로 전원을 넣어도 되는데 PC와의 연결은 안됩니다.

CONN_REVA5A
전원을 넣으면 잠시 심박동 스타일의 LED가 깜박이다가 몇 초 지나면 4개의 LED가 순서대로 주루룩~ 주루룩~ 불이 켜졌다 꺼집니다. “아 이런, 새로운 이미지를 복사하시겠다구요?” 라는 뜻으로 이해하시면 되고, 이제 부트 스위치에서 손을 떼셔도 됩니다.
한참동안 혼자 깜박이며 뭔가를 합니다. 모니터에 연결도 안되어 있으니 무슨 일을 하는지도 모르겠고, 불안한 마음을 달래며 5~25분을 기다립니다. LED 4개가 동시에 켜집니다. 다 되었다는 뜻입니다!
몇 초 후, 자동으로 꺼집니다.
sdbootsuccess-300x200
다 되면 이렇게 불 4개가 동시에 켜집니다.
(사진출처: http://derekmolloy.ie/write-a-new-image-to-the-beaglebone-black/)
이제 기쁜 마음으로 전원을 뽑고 microSD를 제거 한 후 다시 이런 저런 선들을 연결하면 됩니다.
전원을 다시 넣으면 화면이 켜집니다… ㅠㅠ
2016-09-10 11.13.59
켜자 마자 업데이트를 시작했네요. ㅎㅎ
초기 비밀번호는 ID: ubuntu PW: temppwd 입니다. 그리고 켜지면서 이더넷 IP주소를 같이 보여줍니다.
여러분도.. 여기까지 하셨으면 다음의 명령을 칩니다.
sudo apt-get update
sudo apt-get upgrade
업데이트가 다 끝나면 다시 껐다 켜주시고 (sudo shutdown -r now)…

Boinc-client설치

ARM 프로세서용 boinc는 이런저런 내용들을 읽어보니 조금 다른것 같습니다. 무슨 서버 관련 프로그램이 빠져있데요. 아무튼… 아래의 명령을 칩니다.

sudo apt-get install boinc-client

우분투이긴 해도 우리가 사용한 이미지는 텍스트 환경으로 작동하기 때문에 다소 어색할 수는 있습니다. 아무튼 위 명령을 쳤으면 설치가 완료된 것이랍니다. 만약 저처럼 많은 수의 비글보드를 한번에 연결하실 거라면 몇가지 수정해야 할 것이 있습니다.

## 비글보드 한대만 사용하시는 거라면 안하셔도 됩니다 ##
   sudo nano /etc/hostname
arm이라고 적혀있는 것을 원하는 이름으로 바꿉니다.
   sudo nano /etc/hosts
127.0.0.1 localhost.localdomain arm
127.0.1.1 my-machine
이 두 줄 중에 위쪽 끝에 arm이라고 되어 있는 것을 바꿔줍니다.
Ctrl + x 로 저장한 후 리부팅 해 줍니다.
############################################

boinc-client설치가 완료되었으면 터미널에서 아래와 같이 쳐봅니다.

boinccmd –get_status 

현재 boinc서비스의 상태가 보여집니다. 하지만 아직 서버와 연결이 되지 않았으니 제대로 된 내용은 없습니다. boinc 서버와 연결하기 위한 방법은 아래의 세 가지가 존재합니다.

  1. 계정이 없는 경우
    아래의 명령은 계정을 새로 생성하게 됩니다.
    boinccmd –create_account http://setiathome.berkeley.edu 메일주소 암호 사용자명
  2. 계정이 있고 이메일과 암호로 로그인하기
    boinccmd –lookup_account http://setiathome.berkeley.edu 메일주소 암호
  3. 계정도 있는데 그냥 계정키로 로그인하기
    이건.. SETI@Home의 계정화면에 있는 ‘계정키’라는 것으로 연결하는 방법입니다.
    boinccmd –project_attach http://setiathome.berkeley.edu 계정키
어느 것으로 연결해도 상관은 없습니다. 연결한다고 해서 특별한 메시지는 나타나지 않으며 약 5분 정도 지나고 나서 SETI@Home사이트에 들어가서 계정-컴퓨터 목록에 들어가 보시면 등록이 되어있는 것을 알 수 있습니다.
tasks_view

실제 boinc가 잘 작동하고 있는지 알고 싶으면 아래의 명령을 사용하면 됩니다.

boinccmd –get_tasks

음… 끝났냐구요? 네. 끝났습니다. 이제 멍 때리며 기다리면 우리의 비글보드가 열심히 일해서 결과를 올려줄 겁니다. ^^*

Appendix

1. boinccmd의 명령중에 몇 가지 설정만 정리해 놓겠습니다. 
  • boinccmd –set_run_mode {always / auto / never}
    CPU의 작동 방식에 대한 모드입니다. 비글보드의 경우 always를 사용하시면 됩니다.
  • boinccmd –set_gpu_mode {always / auto /never}
    GPU의 작동 방식에 대한 모드이며, 비글보드의 경우 auto로 설정하시면 됩니다 (gpu 없다시피함)
  • boinccmd –set_network_mode {always / auto /never }
    네트워크 사용 방식에 대한 것인데요, always로 한다고 문제가 생기진 않습니다.
  • boinccmd –benchmarks
    CPU의 벤치마크를 하는 명령입니다.
  • boincmd –quit
    boinc를 종료하는 멍령입니다.
2. 생각보다 느린 컴퓨팅 속도
사실 처음에 비글보드로 이 작업을 시작했을때는 ‘우와 엄청난 속도로 SETI에 기여하겠구나’하고 생각했는데 사실 전혀 그렇지 않습니다. 한 테스크를 받으면 그거 처리하는데 만 3일이 걸립니다. 그게… 복잡한 이유가 있지만 간단히 설명하면 CPU는 단순 계산이 GPU보다 상대적으로 느릴 수밖에 없어서 그렇습니다. 요즘 SETI의 데이타는 잠재적으로 GPU가 있을거라는 생각으로 돌아가는 것 같구요.
결국, 비글보드 만으로 제가 바랬던 ‘엄청난 연산 처리’는 바랄 수 없을 것 같습니다. ㅠㅠ
3. 엄청난 발열
ARM 프로세서는 저전력 설계로 유명한데.. 비글보드에 들어간 Cortex A8인가 하는 프로세서도 boinc의 계산명령을 받으면 무시무시한 발열을 자랑하며 작동하게 됩니다..; 손으로 만져보면 조금 뜨겁더군요. 뭐 시스템이 고장날 정도는 아니지만 전자기기의 발열은 수명을 단축시키죠. 전 그래서 이런 짓을 했습니다..;
2016-09-11 17.27.43.jpg
머리통에다 히트싱크를 박아주고… 거기에 냉각 팬까지 설치했습니다. 120mm로요…;
2016-09-11 23.29.46
아… 방금 미친놈이라고 하셨죠? ㅋㅋ 괜찮아요. 저도 이거 만들며 제가 제 정신이 아니라 생각했으니까요. ㅎ

크리에이티브 커먼즈 라이선스
이 저작물은 크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중