본문 바로가기

프로젝트/MicroServer

Jetson TK1 초기 설정

언제부터인지는 모르겠다. 초등학교 6학년, 장래희망을 적어내는 시간에 나름 간지나보이는 "해커"를 적어냈고, 말이 가진 힘 때문인지 이것저것 보다가 리눅스라는 OS를 알게 되었다. 뭐 어짜피 스타도 피파도 못한다는 OS는 의미가 없었기에 또 장래희망은 언제나 자주 바뀌기 마련이라 리눅스와는 한때 스쳐가는 인연인걸로 생각했다. 시간이 흘러 원하는 길대로 인생이 펼쳐지지는 않았고 어쩌다보니 컴퓨터와 제법 상관있는 전공을 택하게 되었다. 그럼에도 리눅스는 언제나 먼 동경의 대상에 불과했다. 


그러다 시작은 아주 우연했는데 "신 앞에서의 정결함은 불법소프트웨어도 허용하지 안된다!"는 Y모 단체의 H간사에 말에 깊은 영향을 받아 과감히 불법 윈도우즈 PC를 불태우고 포맷하고, 리눅스 배포판을 찾아보았다. 굳이 그러지 않아도 되었는데, 당시 한소프트라는 곳에서 만든 한컴리눅스를 "아래아한글" 프로그램을 준다는 이유로 구매했다. 뭐 하나 하려고 해도 어려웠지만, 오픈오피스도 깔려있고 한글도 있고 해서 여차저차 쓸 수는 있었다. 다만 학교 포털 사이트가 ActiveX로 도배되어 있어 windows dsp를 사서 설치하고 듀얼부팅으로 설정하는 순간, 리눅스 파티션은 억세스하지 않게 되었다. 이후로는 불법 소프트웨어를 적당히 썼다. 지금도 뭐 완전 자유롭지는 못하지만서도..

서론이 너무 길었다. 아무튼 리눅스는 예전이나 지금이나 나에게는 큰 산이다. 내가 지금 하는 일은 무언가로 정의내리기 어렵지만 대충 데이터를 가지고 이리저리 무언가를 해보는 일이다. 최근 이슈되는 빅 데이터 요런거와 무언가 정의하기 어려운 친근함이 있는 일이다. 아무튼. 데이터를 많이 처리하기 위해서는 컴퓨터 장비의 많은 계산을 요하게 되었다. 당연히 계산 속도를 높이는데 사람들이 많이 치중해 왔으나 어떤 이유에서인지 속도를 높이는데 많은 제약이 발생하였고 이를 해결하기 위해 돌아가는 전략을 택하게 되었는데 그것이 바로 병렬처리이다. "같은 일을 나눠하자"라는 컨셉이다. 

빅 데이터 상황에서는 나눠하는 일이 상당히 중요하게 되고 이를 위해 주목받는 기술이 GPGPU이다. 계산을 기존에는 컴퓨터의 CPU가 처리했는데 이 일을 GPU - 그래픽 카드 - 에게 시키는 것이 GPGPU라 보면 된다. 관심은 있었지만 그렇게 강한 동기는 못 받았는데 요즘 삶에 의욕도 없고 그래서 무언가 해보자는 생각과 우연히 본 이 제품 때문에 뛰어 들어보자는 생각이 강하게! 그 제품이 무엇이냐, 바로 이놈!



ⓒ NVIDIA.COM, Nvidia Jetson TK1 Dev Kit


Nvidia에서 나온 모바일 슈퍼컴퓨터 (정말 슈퍼컴퓨터가 들으면 상당히 섭섭할 이야기 이긴 하지만)란다. 계산을 해주는 놈들이 두개면 듀얼코어 네개면 쿼드코어 그렇게 불리는데 얘는 무려 192개가 있다고 한다 (물론 한놈 한놈이 쎈놈이 아니라서 192개를 모아봤자이긴 하다). 그래서 얘는 상당한 성능 (300 Gflops  - 자세한 것은 위키)을 낸다. 그것도 저렴한 가격 + 저전력에. 그냥 이것을 사면 무언가 해볼 수 있겠다는 생각에 아마존을 통해 주문하고 받은게 7월 중순이었으나 제대로 해보지도 못하고 (외관이랑 등등 문제로) 먼지만 쌓여가다가 의지를 가지고 다시 시작. 처음에는 리눅스 삽질로 기본으로 깔려있는 리눅스 우분투의 GUI가 뜨지 않는 문제가 발생하여 reflash를 하는 방법을 알아내었다. 여기서부터 진짜 내용이 시작.

처음 받은 사람은 별 문제가 없지만 무언가를 하다가 문제가 생겼을 경우를 대비하여 초기화 과정부터 아티클을 만들어봐야겠다.

--

시스템이 정상작동하지 않는다면, 아니 무언가 처음부터 해보고 싶은 욕구가 생긴다면 다음의 매뉴얼을 따라해봅시다. 물론 TK1이 없거나 잘 작동하는 사람은 걍 무시하고 다음 아티클부터 보면 된다.


0. 먼저 리눅스를 쓸 수 있는 PC가 있어야 한다. 맥은 잘 모르겠다. 윈도우를 포맷하고 설치하....지 말고 아래의 훌륭한 글을 보고 Oracle VM virtualbox를 이용해 우분투를 사용해보자.

http://blog.whitelife.co.kr/77


<여기서부터는 PC에 깔린 리눅스에서 작업을 한다>

영어 되는 양반은 아래 내용을 보는게 더 낫다. R21버전 설명이다.

http://developer.download.nvidia.com/mobile/tegra/l4t/r21.2.0/pm375_release_armhf/l4t_quick_start_guide.txt 


1. tegra를 위한 리눅스를 받아야 한다. 사이트 https://developer.nvidia.com/linux-tegra-rel-21에서 jetson tk1과 sample file system을 다운받자. (글을 예전에 쓰고 다시 쓰다보니 달라진게 있는데... 나는 벌써 rel-21이 나왔다. 항상 과감히 최신버전을 시도하는 당신에게 https://developer.nvidia.com/linux-tegra에서 확인해보시라! 나머지 내용은 R19나 R21이나 비슷)



자, 저기 위에 나온 두 개를 다운 받자. 나는 지금 R21.2 를 기준으로 설명을 하니 달라져도 이해를 하자.


2. 자 그리고 두려워 말고 터미널을 실행시켜보자.

우분투 설치하고 나오는 저 원 세개 로고를 클릭하고 Terminal을 찾으면 된다.


요게 터미널.. 기본 명령어는 다른 데서 열심히 찾아보시고.. 기본 다운로드 폴더에 아까 1에서 받은 파일들이 저장되어 있을꺼고, cd명령어로 해당 디렉토리로 이동해야 한다. 대충 이런 느낌?


맨 처음 친 ls는 도스에서 dir 임. 지금 폴더에 있는 파일과 폴더확인. 두번째로 cd Downloads는 도스와 마찬가지로 폴더 이동. 다시 ls해보니 내가 아까 받은 파일이 있는 것을 확인했다. 압축을 풀어보자. (캡쳐를 나중에 해서 Linux_for_Tegra 폴더가 만들어졌지만 이론상 여기까지는 저 파란색 폴더는 없는 시점이다)

sudo tar xpf Tegra124_Linux_R21.2.0_armhf.tbz2

요 명령어를 실행하면 암호도 물어보고, 암호를 적당히 넣어주면 (니 암호다 묻지마라) 압축이 풀림! 압축이 풀리면 다음의 디렉토리로 이동하자! (아래 명령어)

cd Linux_for_Tegra/rootfs/

다시 다른 파일의 압축해제!

그럼 요런 화면이 뜹니다.

아우 근데 조금 더 남았음. 지금 디렉토리의 상위로 이동하여 스크립트 실행. 명령어는


cd ../ sudo ./apply_binaries.sh


자. 이제 준비가 상당히 많이 끝났다. 이젠 젯슨과 컴퓨터를 연결할 시점이다.


3. 컴퓨터와 젯슨 연결하기

먼저 젯슨을 종료한다. 다시 켜는 과정이 조금 다른데 SATA Power Plug 옆부분을 보면 버튼 세개가 보인다. 버튼은 RECOVERY / RESET / POWER 세 개로 구성됨. 이 중에서 리커버리를 누른 상태에서 파워 혹은 리셋 버튼을 누르면 모니터에는 아무것도 보이지 않는 상태로 부팅이 된다. 이 상태로 컴퓨터와 젯슨을 (안드로이드에서 주로 사용하는) micro USB케이블을 이용해 연결. (virtualbox 및 기타 VM 상황에서는 단지 연결하는 것이 아니라 프로그램에서 연결되도록 설정하는 옵션이 있는데 이건 알아서 잘 해보자.)

제대로 연결 되었다면 lsusb 명령어를 이용해 확인할 수 있다. 이렇게.

nvidia 뭐시기가 잘 뜬것을 확인했다면 자 이제 eMMC플래싱을 시작하자.

(플래싱은 언제나 위험한 작업 / 혹시 자신이 사용하는 컴퓨터와 핸드폰이 연결되어 있다면 분리하자. 괜히 뭔가 꼬일 수 있을 것 같다.)

sudo ./flash.sh jetson-tk1 mmcblk0p1

요렇게 명령어를 치면 막 작업이 이루어진다. 공홈에선 10분 미만으로 걸린다는데 나는 한 시간쯤 걸린것 같다.

작업이 다 이루어지면 다음과 같이 화면이 나오고, 젯슨은 재부팅에 들어간다.


이후 usb 케이블은 과감히 제거!

늠름하게 부팅되는 젯슨을 볼 것이다. 이후 이야기는 차차..