히스토리와 구성 요소로 살펴보는 리나로(Linaro) 프로젝트

중국 역사에서 봉건국가였던 주나라가 유목민족의 영향으로 도읍을 동주로 옮기면서 주왕실의 세력은 약화됐고, 각각의 제후국들이 무기를 개발해 군대를 발전시켰다. 이 무렵에는 유능한 인재들이 다수 등용됐고, 주왕실이 잃은 패권을 차지하기 위한 치열한 전쟁이 벌어졌는데, 이 시기가 바로 춘추전국시대다. 이 시기에는 무기 개발에 따른 철 관련 기술의 발전도 눈부시게 이뤄졌다. 이 글에서 소개할 리나로(Linaro)를 이해하려면 마치 이런 중국 역사와도 같은 역사적 배경 이해가 요구된다.

신제용 jeyong@gmail.com|LG전자에 근무하며 SW 개발자의 역량 향상을 위한 교육 및 코칭을 주 업무로 하고 있다. 최근에는 Go언어를 익히면서 시간을 보내고 있다. 사내외에서 Go 언어 관련 세미나를 진행하며 Go언어 확산을 위해 노력 중이다.

반도체 시장조사 업체인 세미캐스트는 올해 ARM 기반 프로세서 출하량이 70억 대에 이르고, 4년 뒤인 2015년에는 한 사람 당 2대의 ARM 코어 기반 장치를 사용할 것이란 전망을 내놨다. 뿐만 아니라 시장정보 회사인 IDC는 2015년까지 PC 시장에서의 점유율도 15% 수준이 될 것으로 예상했다.

인텔과 ARM의 전쟁
인텔의 임베디드 시장에서의 고전은 예상할 수 있겠지만 자신의 텃밭이라 할 수 있는 PC 시장에서의 점유율 하락은 치명적이라 할 수 있다. 그것도 ARM에 의해서라면 더더욱 그렇다(참고 - http://www.design-reuse.com/news/27468/arm-processors-annual-shipments-forecast.html). 올해 초 마이크로소프트는 CES2011에서 ARM에서 돌아가는 윈도우8을 내놨다. 그리고 얼마 전 마이크로소프트 개발자 행사인 ‘빌드’(Build)에서 윈도우8 개발자 프리뷰를 공개하면서 더 이상 ‘윈도우 = 인텔’이라는 등식이 성립하지 않음을 보여줬다. 마치 이에 대한 화답이라도 하듯이 같은 날 열린 인텔 개발자 포럼(IDF)에서 인텔 CEO 폴 오텔리니는 제품 하나를 소개했다. x86 인텔 아키텍처를 이용한 안드로이드 폰이었다. 그는 인텔 아키텍처를 기반으로 한 스마트폰을 2012년 출시할 예정이라고 발표하고 이에 대한 증거라도 제시하듯이 안드로이드 총 책임자인 앤디 루빈을 무대에 세웠다.

마치 이 두 행사는 불꽃 튀는 전쟁의 신호탄과 같다. ARM은 기존에 자신이 장악하고 있던 임베디드 시장을 더욱 확고히 하고 싶을 것이다. ARM은 주변에 유능한 칩 벤더들을 등용해 아직 인텔이 제대로 힘을 발휘하지 못하는 임베디드 시장을 넘어 이제는 PC 시장까지 넘보려 한다.

ARM이 지배하고 있는 임베디드 시장은 현재 리눅스와 같은 오픈소스 소프트웨어들을 기반으로 하고 있다. 리눅스, 안드로이드는 현재 ARM이 임베디드 시장을 장악한 가장 큰 무기이기도 하다. 따라서 ARM은 자신의 영역을 확고히 하기 위해서 칩 벤더들뿐만 아니라 운영체제 소프트웨어의 개발과 유지보수도 함께 묶어서 관리할 필요성을 느낀다. 칩 벤더들끼리의 경쟁으로 자칫 패권을 놓칠 수 있고 가장 많이 사용되는 운영체제에 대해 ARM이 직접 관리한다면 칩 벤더들도 어느 정도 통일성을 갖게 될 것이라는 계산도 했을 것이다. ARM 기반 칩을 제조하는 A, B사가 있다고 했을 때, 동일하게 안드로이드를 올리는 데 똑같이 ‘삽질’하고 있는 것을 더 이상 옆에서 지켜만 볼 수는 없었을 것이라 판단된다.

운영체제의 소프트웨어가 아닌 칩과 같은 하드웨어 관점에서의 패권 경쟁이라 할지라도 결국 하드웨어 판매에 결정적인 역할을 하는 것은 소프트웨어의 개발과 유지보수가 얼마나 잘 이뤄지는가라는 점이다. 결국 춘추전국시대의 패권 경쟁이나 그로 인한 인재 등용 및 규합, 그리고 철기류의 발달은 ARM이 리나로를 탄생시키게 된 배경과 유사하다고 볼 수 있다.

<그림 1> ARM과 연합군

리나로 프로젝트 이해하기
리나로는 2010년 6월 설립되었으며 본사가 영국에 있는 비영리 단체다. 리눅스를 기반으로 하는 오픈소스 소프트웨어 엔지니어들이 주축을 이루고 있으며 처음 등장은 2010년 대만의 컴퓨텍스(Computex)를 통해서였다.

리나로 멤버 기업
멤버로 참여한 회사들로는 ARM, 삼성, 프리스케일(Free scale), IBM, ST-에릭슨(ST-Ericsson), 텍사스인스트루먼트(TI)가 있다. ARM 계열에서의 선도 기업이라 할 만한 퀄컴이 참여하지 않은 것은 아쉬운 점이다. 퀄컴의 경우 단순히 AP칩이 아니라 ARM 라이선스를 받아서 3G 및 4G 통신과 관련된 기술을 적용한 칩을 생산하고 있어서 다른 기업들과 달리 모바일 시장에서 독점적 위치를 확보한 상태다. 따라서 굳이 리나로에 참여하지 않아도 아쉬울 것이 없는 상태이기도 하다. 퀄컴을 빼더라도 이 많은 회사들이 한마음으로 뭉쳤다는 것은 대단한 사건이다.

또 핵심적인 역할을 하는 제 3의 멤버가 있다. 바로 캐노니컬(Canonical)이다. ARM은 가장 강력한 오픈소스 소프트웨어 기업인 캐노니컬을 파트너로 선정했다. 이미 ARM은 2008년부터 캐노니컬과 협력해 ARM에 리눅스를 포팅하는 작업을 함께해 왔다. ARM 그리고 캐노니컬은 모두 영국에 본사가 있다. 따라서 리나로가 영국에 세워진 이유도 쉽게 납득된다.

설립 배경
ARM이 말하는 리나로 설립 배경은 이렇다. 리나로를 통해 여러 반도체 SoC 회사에 사용하는 공통된 소프트웨어 기반을 구축하기 위해서며, 아울러 공통으로 구축된 소프트웨어는 배포판 형태로 제공해 ARM SoC를 사용하는 경우 제품을 보다 빠르고 쉽게 개발할 수 있도록 하기 위한 것이다.

현재 리나로에서 제공하는 ARM 기반 SoC의 대상은 Cortex-A8과 듀얼코어 Cortex-A9 프로세서에 국한되어 있다. 이렇게 2개 프로세스가 현재 가장 많이 활용되고 있기 때문이다. 여기서 사용되는 공통된 소프트웨어는 리눅스를 말한다. 쉽게 풀어 말하면 ‘가장 많이 사용될 ARM 기반 SoC들에 대해서 리눅스 기반으로 최적화되고 안정된 소스를 유지 배포하는 것을 리나로에서 책임지고 하겠다’는 의미다. 따라서 ARM 계열의 SoC를 기반으로 리눅스 관련 제품을 개발하려는 업체는 리나로 멤버들이 제공하는 개발보드를 구입한 후 리나로에서 제공하는 소스를 받아 개발하고 제품을 생산할 때 원하는 ARM SoC 벤더를 선택할 수 있게 되었다. 이런 하드웨어와 소프트웨어의 선순환 구조는 소프트웨어에서 핵심적인 역할을 하는 캐노니컬의 참여가 없었다면 불가능했을지도 모르겠다.

리나로는 앞서 언급한 ARM 기반 SoC에 오픈소스 소프트웨어인 우분투와 안드로이드를 최적화시켜 제공하고 있다. 세부적으로 살펴보면 커널, 멀티미디어 및 그래픽 관련 부분, 빌드를 위한 효율적인 툴 체인(Tool Chain), 그리고 안정된 버전을 위해 테스팅 툴을 개발해 배포하고 있다. 주기를 보면 6개월 단위의 큰 계획이 수립되고 그 결과를 1개월 단위로 정리해 릴리즈하고 있다.

이미 언급했듯이 현재 ARM이 사용되는 대부분의 임베디드 운영체제들은 리눅스를 기반으로 하고 있다. 따라서 커널은 거의 동일한 것을 사용하는 특징이 있다. 따라서 공통으로 사용될 커널과 일부 미들웨어를 잘 관리하고 제공한다면 다른 회사들은 애플리케이션에 집중할 수 있으며 개발 기간을 상당히 단축시킬 수 있다. 이외에도 오픈소스 소프트웨어 개발을 위해 자원을 공유할 수 있으며 성능을 향상시키는 데 도움이 될 것이다. 또 코드와 사용하는 툴도 상당한 수준 향상이 있을 것으로 예상된다.

리나로 내부 들여다보기
리나로가 제공하는 기술 이외에 관심을 끄는 것이 있다. 그것은 리나로가 어떻게 조직을 관리하고 소프트웨어를 개발해 나가느냐 하는 것이다. 서로 다른 회사들이 모여서 다른 개발 플랫폼에서 작업해 나가고, 또 이 결과물을 하나로 합치는 작업은 결코 만만하지 않기 때문이다. 소프트웨어 개발 관리자나 큰 규모의 오픈소스 프로젝트를 이끌고 있다면 이런 구조적인 모습에 더 관심이 갈 것이다. 현재 100명 이상의 개발자들이 다양한 하드웨어 플랫폼에서 어떻게 작업하는지 간단히 알아보기로 하자. 

초기 작업 - 하드웨어 살리기(Hardware Enablement)
<그림 2>는 리나노에서 하드웨어를 살리는 초기 작업을 설명한다.

<그림 2> 리나로에서의 초기 작업

상단에 있는 것이 가장 기초 작업이 되며 하단일수록 완성도를 높이는 작업들이다. 가장 기초적인 작업들은 리눅스 커널을 빌드하고 부트로더를 작성해 올리는 것이다. 이후 USB나 네트워킹이 정상적으로 동작하도록 한다. 이런 기초 작업들이 끝나면 멀티미디어 기능의 안정화를 비롯해 UI 작업, 기타 디바이스 드라이버를 정상적으로 구동시키는 노력 등을 기울인다. 안드로이드 폰을 제조하는 회사에서도 비슷한 순서로 작업을 진행하리라 짐작된다. 하지만 이렇게 일의 순서를 내부적으로 규정하고 진행하는 것은 규모에 상관없이 팀 간 작업을 공유할 때 도움이 된다.

업스트림(Upstream)을 통한 소스 관리
회사 내에서 동일한 앱을 개발하거나 프레임워크를 개발하면서 버전을 관리하다. 단일 프로젝트에서도 버전 관리는 쉬운 일이 아니다. 더군다나 다양한 개발보드와 칩 벤더들이 모여서 개발하는 경우 버전 관리는 어떻게 이뤄지는지 궁금할 것이다. 특히 안드로이드나 리눅스 기반으로 다양한 하드웨어를 개발하는 회사에 속해 있다면 꼭 리나로에서 진행하는 개발방법을 벤치마킹할 필요가 있다. 

<그림 3> 리나로의 업스트림

리나로에서는 ‘업스트림’이라는 방법으로 소스를 유지 관리한다. <그림 3>과 같이 기준이 되는 업스트림 커널이 최상단에 존재한다. 칩 개발 회사 A에서 수정사항들을 업스트림 커널에 반영한다. 반영된 버전이 커널 2.6.1로 릴리즈된다. 다음으로 나오는 개념이 머지 윈도우(merge window)라는 것이다. 머지 윈도우는 대규모 개발 프로젝트에서 사용되는 개발 프로세스의 일종으로 새로운 소프트웨어가 릴리즈되는 시점부터 일정 기간을 뜻한다. 이 기간에는 패치가 많이 되므로 테스트하는 데 시간이 꽤 걸릴 수도 있다. 이는 리눅스 커널을 개발하는 데 사용되는 개념이다. 머지 윈도우에서 버전을 가져와서 칩 개발 회사 A는 테스팅과 디버깅을 진행하고, 수정사항들을 업스트림 커널에 추가하게 된다. 칩 개발 회사 B는 테스팅과 수정된 버전인 RC 버전을 보드의 BSP에 적용한다. 칩 개발 회사 B도 역시 버그를 수정하고 이를 업스트림 커널에 반영한다. 그리고 수정한 버전을 고객 개발사에다가 넘기게 된다. 고객 개발사는 평가판으로 이 버전을 가지고 개발을 진행하게 된다. 커널 버전이 새롭게 2.6.2로 릴리즈되고 나면 다시 머지 윈도우가 기간을 갖는다. 이처럼 리나로에서는 업스트림을 통해 소프트웨어 버전을 유지 관리 및 배포하게 된다.

리나로 개발팀
리나로에서 개발팀은 <그림 4>와 같다. 워킹 그룹은 주로 업스트림 커널에 집중하는데 커널의 안정화와 커널 빌드에 필요한 툴 체인을 사용하기 쉽도록 하는 작업을 담당한다. 해당 플랫폼에서 기본적인 작업들과 도구를 이용한 자동화 작업을 수행한다. 특별한 조직으로 랜딩팀(Landing Team)이라는 것이 있다. 각 칩 제조사마다 하나의 랜딩팀이 존재한다. 이 랜딩팀을 자세히 살펴보면 프로젝트를 관리하는 매니저가 1명 있고 리나로와 업무를 협의하고 소통하는 역할을 담당하는 기술 연락 엔지니어가 1명 있다. 이렇게 2명은 반드시 랜딩팀에 존재해야 한다고 한다. 그 외에 엔지니어들은 칩 제조사의 여건에 맞게 사람 수를 조절할 수 있게 했다.
 
랜딩팀들은 현재 보드에 알맞은 패치(patch)인지를 분석하고 나서 리나로에서 관리하는 각 벤더의 지정된 트리(tree)에 패치를 적용 및 통합시키는 일을 맡는다. 통합에 문제가 없으면 커널을 빌드하고 해당 벤더의 패키지를 구성한다. 생성된 이미지는 사용 가능한 상태이며 가장 기본적인 기능만 들어가도록 한다. 기타 이런 일련의 작업들을 하면서 발생할 수 있는 문제점이 있으면 해결해서 이미지가 잘 생성되도록 최선을 다한다. 벤더가 사용하는 트리에 적용된 패치를 공식 리나로 트리에 추가시키기 위해 내용을 전달한다. 다른 벤더들이 제출한 업스트림 패치도 적용해 본다.

<그림 4> 리나로 개발팀

요구사항에서 릴리즈까지
리나로는 6개월 단위의 큰 요구사항을 정의하고 그것의 결과를 매달 릴리즈한다고 설명했다. 그럼 다음 6개월 동안 필요한 기능에 대한 요구사항을 수집하고 그 중에 필요한 것을 골라서 구현해 나가는 과정을 알아보자. 

<그림 5> 랜딩팀 자세히 보기

일단 요구사항을 모아야 한다. 요구사항은 기술조정위원회(Technical Steering Commitee)에서 결정한다. 기술조정위원회의 구성 멤버는 CTO, 사장, 그리고 각 핵심 멤버 대표로 구성된다. 작성하는 요구사항은 ‘다음 릴리즈에서 어떤 것을 보고 싶은가’이다. 이 요구사항들은 문서로 목록을 만든다. L@UDS (Linaro at Ubuntu Developer Summit) 단계에서는 요구사항들에 대한 중요도 등을 정하며 구현과 관련해서도 상세한 논의가 이뤄지는 단계다. 이 과정을 통해 요구사항이 명확해진다. 이후로 알파1에서 최종 릴리즈까지 8단계를 거쳐서 요구사항이 구현된 버전이 배포되는 것이다.

<그림 6> 요구사항을 릴리즈하는 과정

보드별 다양한 팩 제공
<그림 7>은 https://wiki.linaro.org/Boards에서 제공하는 보드별로 사용 가능한 하드웨어 패키지다. 맨 위에 있는 비글보드를 예로 들어 설명하면 현재 유효한 하드웨어 팩이 2개 존재하며 하나는 omap3이고 다른 하나는 omap3-x11-base이다. 즉 빌드한 소스가 다르거나 빌드 조건에 따라 다른 속성의 이미지가 되며 이를 해당 패키지별로 ‘Description’에 간략히 설명해 뒀다. 패키지 이름이 ‘lt-’(lt-mx5 or lt-panda 등)로 시작되는 것이 보인다. 이것은 해당 플랫폼의 랜딩팀이 작업한 버전을 뜻한다.

<그림 7> 보드별로 사용 가능한 하드웨어 패키지

하드웨어 팩 다운로드 이미지릴리즈 버전은 http://releases.linaro.org/images/에서 제공하고 있다. 마일드스톤 빌드 버전과 일 단위 빌드 버전에 대해서는 각각 http://releases.linaro.org/와 http://snapshots. linaro.org/에서 제공된다. http://snapshots.linaro.org/11.05-daily/linaro-android/beaglexm/로 접속하면 <화면 1>과 같이 다운로드 가능한 버전들을 확인할 수 있다.

<화면 1> 리나로 Daily 버전 다운로드

리나로 개발보드 소개
리나로에서 제공하는 소스나 툴을 사용하기 위해서는 개발보드가 필요하다. 개발보드는 2011년 10월 현재 총 5개가 출시되었으며 리나로 멤버로 참여한 4개 기업인 삼성, ST-Ericsson, TI, 프리스케일의 SoC로 제조되었다. 개발보드는 비교적 저렴한 비용으로 구입할 수 있는데, 여기서 각 개발보드의 특징을 설명한다.

삼성 Origen 보드

<화면 2> 삼성 Origen 보드

<그림 8> 삼성 Origen 보드 사양표

리나로에서 삼성이 지원하는 개발보드는 ‘Origen’이다. 삼성의 경우 자사 AP(Application Processor)에 대한 개발을 지원하기 위해 SMDK(SAMSUNG Mobile Development Kit) 개발보드를 제공한다. 삼성은 자사에서 직접 개발보드를 개발하지 않고 하드웨어 솔루션 파트너를 통해 개발보드를 공급하고 기술을 지원하는 형태였다. 리나로에서 제공하는 Origen 보드는 소개할 다른 보드에 비해 가격대비 성능이 높고 가장 최근에 개발되었다. 지난해 리나로 출범 당시부터 삼성이 고성능의 개발보드를 내놓을 것이란 예측이 있었고 리나노 참여 업체 가운데 가장 마지막으로 고성능 칩에 중점을 둔 Exynos4210을 탑재한 개발보드를 내놓았다. 이 보드는 하드웨어 확장성을 위해 AP 보드 교체가 가능한 형태로 제작된 것이 특징으로, 향후 Exynos 4210 이외에 자사에서 제공하는 다른 AP 보드만 구입한다면 보드 자체를 재사용할 수 있다. 

리나로에서 소개되는 보드들은 다른 곳에서 판매되는 개발보드에 비해 가격이 저렴하다. Origen 보드의 경우 개발 보드만 199달러로 저렴한 편이며, 판매 사이트(www.origenboard.org)에서 최적화된 주변기기들을 함께 판매하고 있어서 편리하다. 

Origen 보드는 하드웨어만 놓고 봤을 때 다양한 특징으로 분명 매력적인 제품이다. 하지만 출시된 지 얼마 지나지 않아서 리나로 이외의 사이트에서는 개발 관련 소스를 얻기가 쉽지 않다. 따라서 현재 시점에서는 리나로에서 제공하는 우분투와 안드로이드 기반의 개발을 하는 경우에 적합하며 새로운 것을 포팅하거나 포팅을 시도하는 개발자에게 추천하는 보드다. 7월 이후 현재까지 보드 판매 사이트에서 Origen 보드는 품절 상태인 까닭에 필자도 아직까지 구입하지는 못했다. 아직 자체 커뮤니티가 형성되지 않아서 정보를 나누고 함께 프로젝트를 진행하기가 여의치 않은데, 아마 Origen 보드도 향후에는 다른 개발보드처럼 자체 커뮤니티 사이트 및 모임을 지원하게 될 가능성이 높다.   

아직 Origen 보드를 이용한 오픈 프로젝트가 적지만 칩의 인지도나 개발보드의 판매가 늘어나면 Origen 보드를 기반으로 한 프로젝트들이 크게 늘어날 것으로 기대한다.

ST-Ericsson Snowball 보드

 

<화면 3> ST-Ericsson의 Snowball 보드


<그림 9> ST-Ericsson의 Snowball 보드 사양표

ST-Ericsson은 아마 국내에서는 많이 알려지지 않은 회사다. ST-Ericsson은 이름에서 유추할 수 있듯이 Ericsson과 STMicroelectronics가 출자해 만든 회사로 무선 플랫폼과 반도체를 제공하는 회사다. 2009년 초에 합작으로 만들어졌으며 스위스에 본사가 있다. 칩 전문업체로서 소프트웨어 개발에 대해서는 Movial과 파트너십을 맺고 Snowball 지원을 계속하고 있다. Movial은 핀란드에 있는 업체이며 세계 최초로 모바일 리눅스 장치를 만드는 프로젝트를 주도한 바 있다. 

먼저 하드웨어적인 특징을 보면, Snowball 보드에는 빠른 CPU 이외에 센서들이 다수 달려 있다. ‘만능보드’라는 표현이 어울릴 만큼 이 보드는 GPS, 3D 자이로스코프, 가속센서, 자력계센서(magnetometer), 기압계(barometer)를 지원하고 있다. 다른 보드에서는 특정 센서가 필요한 경우 자신의 보드와 궁합이 잘 맞는지 또 센서 벤더가 드라이버 소스를 제공하는지 등을 고려해야 하는데 이 보드에서는 센서들을 내장하고 있어서 기존 프로젝트의 소스를 참고해 다양한 운영체제나 플랫폼에서 동작시키기에 유리하다.

Snowball도 리나로에서 얻을 수 있는 우분투와 안드로이드 소스 이외의 프로젝트를 찾아보기 어렵다. ST-Ericsson이 주도로 이글루(www.igloocommunity.org/)라는 커뮤니티 사이트를 운영하고 있다. 제품 스펙에 대한 정보를 얻기에는 적당하지만 아직까지 활성화된 단계는 아니다.

커뮤니티에서 진행 중인 프로젝트로는 OpenBricks 프로젝트가 유일한 것으로 보인다. 이는 안드로이드와 유사하게 로우 레벨(low level) 인터페이스를 추상화시켜서 해당 프레임워크를 사용하면 애플리케이션 개발에 전념할 수 있게 돕는다. 아쉬운 점은 관련 주변장치를 판매하는 곳을 찾기가 어렵다는 것이다. 이 보드의 판매가격은 209달러이며 www.igloocommunity.org/ support/Buy_now에서 한국공식 판매처를 확인할 수 있다.

프리스케일 i.MX53 보드
프리스케일이 제공하는 보드는 i.MX53 Quick Start 보드이다. 프리스케일(Freescale)은 원래 모토로라의 반도체 부서였다가 2004년에 프리스케일이라는 반도체 회사로 창립됐다. 이 회사의 칩은 자동차, 네트워크, 의료 등 특화된 영역에 주로 사용되며 2011년 초 처음 알려져 현재 149달러에 구매할 수 있다. 이 보드는 SATA 연결을 지원하는 것이 특징이며 센서로는 3축 가속도계가 내장되어 있다. 주변장치로는 10.1인치 XGA급 LCD를 499달러에 판매하고 있다.

<화면 4> 프리스케일 i.MX53 보드

<그림 10> 프리스케일 i.MX53 보드 사양표

올해 프리스케일 홈페이지의 일부 게시판이 분리되어 오픈 커뮤니티 사이트(http://imxcommunity.org)가 만들어졌다. 프리스케일 엔지니어들이 주축이 되어 사이트를 관리하고 있으며 회원 등록을 통해 주제별 그룹에 가입해 활동할 수 있다. 현재 총 48개의 그룹이 활동하고 있지만 그 중 i.MX53 보드와 직접 관련된 그룹은 5개 정도로 활동이 활발하지는 않다. 이 제품은 http://kr.element14.com/과 Digi-Key(http://kr.digikey. com)에서 구입할 수 있다.

TI 비글보드
2008년 6월 세상에 나온 ‘최고참’ 보드라 할 수 있다. 비글보드(Beagleboard)는 TI 내에 있는 한 팀에서 대학 교육용으로 사용할 보드를 만들면서 시작되었다. 대학에서 오픈소스 소프트웨어와 오픈소스 하드웨어를 가르치기에 적당한 보드가 없었는데, 무엇보다 교육용으로 사용하기 위해서는 크기가 작고 전원도 적게 먹고 가격도 저렴해야 했다. 이런 요구사항을 바탕으로 비글보드는 디자인됐으며 보드 설계에 관한 정보는 오픈되었다. 교육용인 관계로 TI가 직접 비글보드를 제조하지 않고 Digi-Key가 제조와 판매를 맡았다. 초기 비글보드는 정사각형 형태로 가로세로 길이를 7.5cm 정도로 정해서 그 크기 내에 필요한 기능을 구현했다. 현재 판매되고 있는 비글보드 xM의 경우에는 가로세로가 약 8.3cm인 정사각형 형태다. 전력소모도 2w로 최소화해별다른 파워 어댑터가 없이도 동작이 가능하도록 설계되었다.

<화면 5> TI 비글보드

<그림 11> TI 비글보드 사양표

다른 개발보드들은 Cortex-A9 듀얼코어로 구성되어 있지만 비글보드는 싱글코어를 사용하고 있다. 비글보드의 듀얼코어 보전을 원한다면 판다보드(PandaBoard)를 추천한다. 비글보드와 판다보드는 대부분 동일 소스를 가지며 빌드 옵션에서 타깃을 설정 가능하게 하는 방식으로 프로젝트를 진행하는 경우가 많다. 

비글보드는 출시되고 3년이 지났다. 현재 beagleboard.org 공식 사이트에 등록된 프로젝트만 229개이며 유튜브에서도 ‘beagleboard’로 검색하면 공식사이트에 등록되지 않고 개인이 진행하는 다양한 프로젝트의 결과를 감상할 수 있다. 필자의 경우 총 4개의 운영체제를 멀티 부팅시키는 프로젝트(www.youtube.com/watch?v=yseT4USH8SY)가 가장 인상적이었다. 이 영상 하나로 비글보드가 현재 오픈소스 하드웨어로서 어떤 입지를 가지고 있는지를 짐작할 수 있다. 이미 완성된 다양한 프로젝트들을 직접 실행시켜 보고 싶다면 비글보드를 추천한다. 

현재 비글보드는 149달러에, 판다보드는 174달러에 각각 판매되고 있다. 비글보드는 바로 구매할 수 있지만, 판다보드는 제품 수급에 문제가 있어서 제품 구입 신청 후 약 2달 정도의 대기시간이 필요하다. 제품은 Digi-Key와 Mouser Electornics 사이트에서 구입할 수 있다.

오픈소스 하드웨어의 적용 분야
그럼 지금부터 오픈소스 하드웨어를 어떻게 적용하고 활용할 수 있는지를 살펴보자.

프로토타이핑
최근에 날개 없는 선풍기로 국내에도 잘 알려진 다이슨(Dyson)이라는 회사가 있다. 그 회사는 주력 제품인 진공청소기를 만드는 데 4년 반 동안 무려 5,127개의 프로토타입을 제작했다고 한다. 수많은 프로토타입을 만들면서 얻은 경험과 노하우로 세계 최고 명품의 진공청소기를 만들 수 있었던 것이다. 오픈소스 하드웨어의 경우 저렴한 보드 가격과 공개된 소프트웨어 덕분에 다양한 실험이 가능하다. 오픈소스 하드웨어로 대략적인 보드의 크기나 필요한 센서들을 미리 고려할 수 있고 회로도를 참고하면 적은 노력으로 다양한 장치를 만들어 볼 수 있다. 뿐만 아니라 다양한 운영체제로 포팅되어 있고 여러 프로젝트에 관련된 소스 코드도 제공되므로 원하는 애플리케이션도 효과적으로 개발할 수 있다.

칩 벤더 선택하기
현재 회사에서 ATM 기기 개발을 구상 중이라고 가정해 보자. 이 ATM 기기에는 어떤 칩을 사용해야 할까? 반응속도가 0.5초 이내여야 하고 안면 인식이 가능한 센서와 소프트웨어도 개발해야 하는 상황이다. 이와 같이 회사에서 특정 제품에 들어갈 칩 벤더를 선정할 때도 유용하다. 공개된 개발보드 환경에서 다양한 칩의 기능이나 성능을 미리 확인해 볼 수 있다. 여러 개발보드에 리나로에서 받은 이미지를 사용한다면 개발환경이나 테스트 환경을 짧은 시간 내에 효과적으로 구성할 수 있다.

교육
리눅스 커널을 공부하고 싶다던가 안드로이드의 프레임워크를 공부하고 싶으면 어떻게 해야 할까? 물론 안드로이드 휴대폰을 구입한다면 애플리케이션을 개발해서 직접 실행시켜 볼 수는 있겠지만 커널이나 프레임워크는 적용해 보기가 어렵다. 비글보드가 대학 교육용으로 나온 것처럼 오픈소스 하드웨어는 대학에서 하드웨어와 소프트웨어를 함께 공부하면서 직접 동작시켜 보기에 좋다. 또한 자료들도 잘 정리되어 있고 무엇보다도 비슷한 프로젝트를 진행하는 사람들이 있다면 서로 경험을 공유할 수 있는 것이 큰 장점이다.

다양한 운영체제우분투, 안드로이드, 크롬OS, 윈도우 임베디드 컴팩트 7, ROS 등 여러 운영체제들이 있으므로, 이런 운영체제들을 사용해 보는 것도 좋은 경험이 된다. 해당 하드웨어 커뮤니티를 방문한다면 빌드가 완료된 이미지 파일로 받아서 설치가 가능하다. 뿐만 아니라 원하는 옵션이 있다면 직접 소스를 받아서 빌드해 설치할 수도 있다. 앞에서 언급했듯이 리나로에서는 우분투와 안드로이드를 제공하지만 보드에 따라서 더 다양한 운영체제들을 포팅하는 프로젝트들이 진행되고 있다. 오픈소스 하드웨어를 선택할 때 운영체제는 중요한 판단 요소이므로 프로젝트 완성도나 원하는 만큼의 자료를 얻을 수 있는지를 미리 따져보는 것이 좋다.

성능 비교
오픈소스 하드웨어와 동일한 칩을 사용해 안드로이드 기반으로 비디오를 재생하는 제품을 만들었다고 하자. 오픈소스 하드웨어와 동일한 안드로이드 버전이지만 성능 차이가 날 수 있다. 오픈소스 하드웨어에서는 1초면 처리 완료되는 것이 내가 만든 보드에 올려서 실행시키면 3초에 처리된다면 어떻게 해야 할까? 이처럼 동일한 메인 칩을 이용하는 경우에 회사에서 직접 만든 보드와 비교할 대상이 있으므로 적어도 성능이 떨어진다는 것을 인지하고 여러 가지 시도를 할 수 있게 된다. 아울러 오픈소스 하드웨어에 올라간 소프트웨어 소스 코드를 분석함으로써 문제를 쉽게 해결할지도 모른다.

재미있는 프로젝트들
지금부터는 비글보드로 진행하고 있거나 이미 진행된 프로젝트들을 소개한다. 오픈소스 하드웨어로 진행하고 있는 프로젝트들을 통해 트렌드를 이해하고 직접 프로젝트를 진행한다면 어떻게 해야 하는지도 감을 잡을 수 있으리라 생각한다. 여기서 비글보드 관련 프로젝트를 설명하는 이유는 가장 역사가 길고 자발적인 참여 형태로 프로젝트들이 진행되고 있기 때문이다.

구글의 선택
구글은 2005년부터 매년 ‘Google Summer of Code(GSoC)’라는 행사를 열고 있다. 전 세계 학생들이 대상이며 오픈소스 소프트웨어 프로젝트를 진행하면서 자신과 세상에 도움이 되는 것을 개발한다. 참여 학생들은 전문가의 멘토링을 받으면서 프로젝트를 진행할 수 있다. 구글에서 공식적으로 비글보드에 대한 프로젝트를 인정하고 beagleboard.org를 멘토링 조직으로 인정했다. 아두이노와 같이 구글이 선택한 오픈소스 하드웨어라 할 수 있다.

우주로 쏘아 올린 비글보드
이 프로젝트는 지난 9월 11일 비글보드와 기타 통신장치들을 연결한 후 기상 풍선을 이용해서 비글보드를 하늘로 띄웠다. 하늘로 올라간 비글보드는 실시간으로 지구를 찍어서 보냈다. 이는 네덜란드의 22살 기계공학과 학생의 1인 프로젝트로 시작되었다. 하드웨어를 만드는 과정뿐만 아니라 관련 소스 코드까지 모두 공개되어 있고, 과정 자체가 사진과 동영상으로도 잘 정리되어 있으므로 관심이 있다면 따라해 보길 권한다(http://www. timzaman.nl).

<화면 6> Space Camera Live 프로젝트

<화면 7> <화면 6> 의 프로젝트에 사용한 하드웨어

비글보드 교육 프로젝트
다른 개발 프로젝트에서 좀처럼 보기 어려운 프로젝트로 비글보드 리눅스 교육 프로젝트를 꼽을 수 있다. 비글보드에 리눅스를 올리는 데 필요한 지식들을 효과적으로 전달하는 방법에 대한 프로젝트다. 보통 프로젝트들은 무엇인가를 만드는 것이 대부분이다. 하지만 이 프로젝트의 결과물은 강의 자료다. 필자의 경우 이 프로젝트를 보는 순간 ‘아하’라는 짧은 감탄사가 절로 나왔다. 이처럼 오픈소스 하드웨어에 기여하는 방법은 다양하다. 소프트웨어로서의 결과물이 아니더라도 해당 하드웨어를 사용하는 사람에게 도움이 되는 것이라면 무엇이든 가능하다. 자세한 내용은 http://beagleboard.org/project/linux_education/를 참조하자.

앞으로의 전망 
지금까지 리나로와 관련된 공개 프로젝트들을 살펴봤다. 리나로에 참여하는 칩 벤더들은 자신의 칩을 사용한 개발보드를 공개하고 거기에 최적화된 리눅스 기반 소프트웨어를 적극적으로 제공하기 시작했다. 공개 의도가 어찌됐든 간에 칩 벤더들이 공개하는 회로도나 상세 정보들, 그리고 거기에 최적화된 소프트웨어는 하드웨어 기술뿐 아니라 오픈소스 소프트웨어 발전에도 크게 기여하리라 생각한다. 중소 규모의 기업들도 적은 비용으로 원하는 장치를 개발하고 생산하는 것이 훨씬 쉬워졌고 심지어 개인 개발자들도 충분히 자신이 꿈꿔온 장치를 직접 설계하고 만들 수 있는 세상이 오고 있다. 

게다가 오픈소스 소프트웨어 프로젝트에서 가장 골치 아팠던 라이선스 문제도 미리 해결하기 위한 움직임이 오픈소스 하드웨어에서도 진행되고 있으니 고무적이라 하겠다. 앞으로 개발자들은 너무 많은 오픈소스 하드웨어가 쏟아져서 오히려 어떤 것을 선택해야 할지와 같은 행복한 고민에 빠져들지도 모르겠다.

Posted by linuxism
,