SDV(Software Defined Vehicle), 바퀴 달린 스마트폰 등 테슬라가 자동차 업계에 몰고 온 새로운 변화, 그중에서도 소프트웨어의 중요성은 커지고 있다. 인포테인먼트, 자율주행, 파워트레인, 섀시, 보디 등에 분산돼 있는 ECU(Electric Control Unit)들은 통합돼 가고 있고 원격으로 자동차 소프트웨어를 업데이트하도록 하드웨어 및 소프트웨어 아키텍처 구조도 변하고 있다.
자동차 ECU 및 그 안에서 돌아가는 소프트웨어 구조는 엄청나게 다양하고 서로 다른 구조를 갖고 있어 한두 개의 표준으로 통합하기는 어렵다. 즉 소프트웨어 관리 및 아키텍처 설계의 복잡도가 크다는 이야기다. 하지만 앞으로는 비용적인 측면이나 OTA(Over The Air) 측면에서 대부분의 자동차 회사는 ECU를 통합하려 하고 있고, 이 중심에는 소프트웨어가 있다. 통합 ECU의 성능은 좋아지고 안전을 고려하면서 여러 가지 기능을 대응하려다 보니 소프트웨어 아키텍처의 설계가 점점 더 중요해지고 있는 것이다.
물론 이 책에서 모든 것을 다루지는 못하지만 최소한 기본이 되는 소프트웨어 아키텍처 구조, 상세 설계, 평가 방법, 평가 메트릭(metric)을 제시한다. 그리고 많은 자동차 회사에서 사용하는 표준인 클래식과 어댑티브 오토사(Adaptive AUTOSAR)에 대해서도 간략하게 설명한다. 자동차 소프트웨어 개발을 시작하는 개발자에게는 기본서로, 이미 개발 업무를 하고 있는 개발자들에게는 자동차 내의 다른 분야도 넓게 볼 수 있는 책이 될 것이다. 각 장의 마지막에는 더 관심 있는 독자들을 위해 심화 학습할 수 있는 자료도 제공하고 있어 잘 활용하면 특정 분야를 깊게 학습할 수 있는 기회도 제공한다.
나는 앞으로 자동차 회사들은 메카닉(mechanic)적인 부분보다 소프트웨어에 더 많은 관심과 투자를 할 것이라고 확신하고 있다. 이 책을 통해서 많은 독자가 자동차 소프트웨어에 대한 이해도가 넓어졌으면 하는 바람이 있다.
소비자 가전(CE, Consumer Electronic), 차량용 인포테인먼트 시스템(IVI, In-Vehicle Infotainment), 사물인터넷(IoT, Internet of Things) 등 점차 많은 분야에서 임베디드 리눅스가 사용되고 있다. 욕토 프로젝트는 커스텀 임베디드 리눅스를 만들기 위한 다양한 템플릿, 툴, 방법을 제공하는 오픈소스 협업 프로젝트다. 기존에는 커스텀 임베디드 리눅스를 만들기 위해 맨땅에서 시작해 많은 비용과 시간이 들었지만, 욕토 프로젝트를 사용하면 쉽고 빠르게 저렴한 비용으로 만들어 낼 수 있다.
ENEA, 몬타비스타, 윈드리버 등 상용 임베디드 리눅스를 포함해 IVI 분야에서의 GENIVI, AGL 그리고 IoT 분야까지 임베디드 리눅스를 사용하는 많은 분야에서 욕토 프로젝트를 사용하고 있다. 국내에서는 LG webOS, 차량 전장 업체의 플랫폼, 기타 가전 플랫폼 등에서 사용하고 있으며, 타이젠(TIZEN)도 점차 욕토 프로젝트를 채택하는 범위를 확대해 나가려고 하고 있다.
또한 인텔, 프리스케일, 텍사스 인스트루먼트 등과 같은 업체들도 욕토 기반으로 BSP를 릴리스하고 있을 뿐 아니라, 라즈베리 파이, 비글본 블랙, 미누보드 등과 같은 거의 모든 개발보드에서 욕토 프로젝트 기반으로 임베디드 리눅스를 빌드할 수 있도록 환경을 제공하고 있다.
이렇듯 점차 다양한 분야에서 임베디드 리눅스를 개발하기 위해 욕토 프로젝트를 사용하고, 지원하는 범위가 넓어지고 있다. 앞으로 발전 가능성이 무궁무진한 분야이기 때문에 알아두면 정말 유용하다.
이 책은 욕토 프로젝트를 사용해 비글본 블랙에서 임베디드 리눅스를 개발하는 방법에 대해 소개한다. 욕토 프로젝트의 기본 개념을 간단하게 다룬 후, 예제를 통해 여러 가지 프로젝트를 비글본 블랙 보드에서 개발하는 방법을 설명한다.
이 책을 읽으면, 자신만의 개발 프로젝트를 비글본 보드에 욕토 프로젝트를 사용하여 개발할 수 있는 기본 역량을 쌓을 수 있다. 하지만 욕토 프로젝트에 대한 기본적인 개념과 문법에 대해 익히고 싶다면, 『Yocto 프로젝트를 활용한 임베디드 리눅스 개발』(에이콘출판사, 2014) 책을 보는 것을 추천한다.
가전, 모바일, 차량, IoT 등 산업 전반에 걸쳐 임베디드 리눅스를 채택하는 움직임이 확산되고 있다. 특히 차량용 인포테이먼트와 텔레메틱스 분야에서는 기존 RTOS 등에서 임베디드 리눅스로 옮겨 가려는 움직임이 더욱 거세지고 있다.
욕토 프로젝트는 임베디드 리눅스 프로젝트를 위한 툴 체인, 커널과 BSP, 애플리케이션의 통합된 개발 환경을 지원하는 좋은 솔루션이다. 임베디드 리눅스 프로젝트에 Yocto를 활용하면 최신 버전의 툴 체인과 보안 패치가 적용된 오픈 소스 컴포넌트를 비교적 쉽게 제품 개발에 적용할 수 있다. 또한 검증을 거친 공개된 소프트웨어를 자신의 프로젝트 빌드 환경에 쉽게 포함시킬 수 있다. 이처럼 욕토 프로젝트는 확장성 높은 개발 환경을 제공하지만, 추천의 글에서도 언급했듯이 개발자가 욕토 활용 노하우를 익히기까지의 진입 장벽이 높은 편이다.
이 책은 욕토 레시피의 기본 문법을 자세하게 다루지는 않는다. 하지만 임베디드 리눅스 시스템 개발을 위한 BSP 레이어, 소프트웨어 레이어, 애플리케이션 개발 시나리오에 맞는 다양한 예제(레시피) 작성 사례를 단계별로 보여준다. 저자는 책에 언급된 사례들을 통해 실제 개발에서 부딪히는 문제를 해결하기 위한 노하우를 공유하고, 욕토에서 제공하는 다양한 이미지 특성(feature)을 설명하며, 이를 손쉽게 빌드에 포함시키는 방법을 소개한다. 이 책을 읽고 나면 개발자는 요구 사항에 맞는 이미지를 구성하는 방법을 배울 수 있다.
이 책을 임베디드 리눅스 시스템 개발자뿐만 아니라 임베디드 리눅스 제품 배포판의 커스터마이즈 방법을 고민하고 있는 개발자에게도 권하고 싶다. 이 책을 통해 실전에 적용하기 위한 욕토 활용 방법을 체득할 수 있기를 바란다.
이 책의 1판 『Yocto 프로젝트를 활용한 임베디드 리눅스 개발』를 출간할 때, 과연 국내외에서 Yocto 프로젝트를 사용하는 제품이나 회사가 많이 있을지 의문을 품었다. 4년이 지나는 동안 많은 오픈소스 프로젝트의 기여자로 활동하고 국내외 콘퍼런스에 참여하면서 Yocto 프로젝트를 사용하는 많은 개발자 및 프로젝트를 만나면서 Yocto 프로젝트를 사용하는 곳이 점점 더 많아지고 있다는 것을 알게 됐다.
강연을 하며 Yocto 프로젝트를 왜 사용하고 무엇이 좋은지에 대한 질문이많았다. 그에 대해거의 모든 SoC 업체(intel, Qualcomm, Renesas, NVIDIA 등)가 BSP를 Yocto 프로젝트 기반으로 릴리스하며, Yocto 프로젝트는 유연하고 확장성이 좋기 때문이라고 답해줬다.
Yocto 프로젝트를 사용하는 대표적인 오픈소스 프로젝트는 webOS OSE(Open Source Edition), AGL(Automotive Grade Linux), GENIVI Baseline, RDK 등이 있고, 상용 제품 중 가전에서는 LG webOS TV, 차량에서는 BMW, 벤츠, 현대자동차 등에 들어가는 IVI 및 Telematics 시스템 등에서 Yocto 프로젝트가 다양하게 사용되고 있다.
많은 개발자가 여전히 Yocto 프로젝트를 사용하는 데 많은 어려움을 겪고 있다. 저자뿐만 아니라 Yocto 프로젝트 오픈소스 진영에서도 이런 문제를 해결해 많은 개발자의 진입 장벽을 낮추기 위해 문서화, 개발하기 쉬운 도구를 제공하기 위해 노력 중이다.
기본적으로 임베디드 OS를 만드는 데는 많은 지식이 필요하고, 거기에 Yocto 프로젝트에서 사용하는 문법을 익혀야 하기 때문에 나 또한 6년 이상 사용하면서도 어려움을 겪고 계속 배워나가고 있다. 가장 좋은 시작은 이 책과 같은 기본서로 시작해서 실제 제품에 적용해가며 필요한 것을 배워나가는 것이다.
『Yocto 프로젝트를 활용한 임베디드 리눅스 개발』한국어판의 3판을 출간하게 돼 감회가 새롭습니다. 1판의 번역서가 출간된 이후 Yocto 프로젝트가 국내외에서 얼마나 많은 제품과 회사에 도입될지에 대해 많은 궁금증이 있었습니다. 그러나 이제는 Yocto 프로젝트의 확고한 입지를 직접 확인할 수 있게 됐습니다.
저는 다양한 오픈소스 프로젝트의 컨트리뷰터로 활동하고 국내외 콘퍼런스에 참석하며 Yocto 프로젝트를 활용하는 많은 개발자와 프로젝트를 접했습니다. 이 과정을 통해 Yocto 프로젝트의 사용이 점차 확대되고 있음을 실감했고, 이는 Yocto 프로젝트의 장점과 필요성을 명확히 설명해줬습니다.
Yocto 프로젝트의 큰 장점 중 하나는 거의 모든 SoC(System on Chip)(Intel, Qualcomm, Samsung, Renesas, NVIDIA등) 업체들이 BSP를 Yocto 프로젝트 기반으로 릴리스하고 있다는 점입니다. 이로 인해 Yocto 프로젝트는 유연성과 확장성을 제공하며, 다양한 오픈소스 프로젝트와 상용 제품에서의 채택으로 이어지고 있습니다. 대표적인 오픈소스 프로젝트로는 webOS OSE(Open Source Edition), AGL(Automotive Grade Linux), RDK 등이 있으며, 상용 제품으로는 LG의 webOS TV, BMW, 벤츠, 현대자동차의 IVI 및 Telematics 시스템 등이 있습니다.
그럼에도 여전히 많은 개발자가 Yocto 프로젝트 사용에 어려움을 겪고 있습니다. 이는 임베디드 OS 개발에 대한 깊은 지식과 함께 Yocto 프로젝트에서 사용하는 문법을 익혀야 한다는 복잡한 조건 때문입니다. 이러한 난관을 해결하기 위해 Yocto 프로젝트 커뮤니티는 문서화와 개발 도구의 개선을 통해 개발자들의 진입 장벽을 낮추고자 노력하고 있습니다. 저 역시 10년 이상 이 분야에 몸담고 있지만 여전히 배워야 할 것이 많다고 느낍니다.
Yocto 프로젝트를 시작하는 가장 좋은 방법은 이 책과 같은 기본서를 통해 기초를 다지고 실제 제품에 적용하면서 필요한 지식을 습득하는 것입니다. 어려움이 있을 경우 저에게 문의하거나 Yocto 프로젝트 메일링 리스트, IRC 등을 활용해 도움을 받을 수 있습니다.
3판을 준비하면서 Yocto 프로젝트의 중요성이 더욱 커지고 있음을 느꼈습니다. 이 책이 Yocto 프로젝트를 시작하는 개발자에게 유용한 길잡이가 되기를 바라며, 독자 여러분의 성공적인 프로젝트에 조금이나마 기여할 수 있기를 희망합니다.