Automotive Security/Vehicle OS

AGL (Automotive Grade Linux)

g.s.song 2024. 2. 19. 16:34

1. AGL (Automotive Grade Linux) Overview

AGL(Automotive Grade Linux)는 유럽, 일본, 한국 등 다양한 차량 제조 및 부품회사들이 협력하여 만들고 있는 차량 환경에 적합한 오픈소스 OS 입니다. 일본 차량 제조 기업인 도요타(Toyota)의 막강한 지원으로 Linux Foundation의 지휘를 받으며 빠르게 발전하고 있습니다. 참여하는 멤버 회사는 매우 많지만,  Toyota를 필두로 일본계 회사들이 매우 적극적으로 지원하고 있습니다.

 

[AGL 멤버사]

https://www.automotivelinux.org/about/members/

 

Members - Automotive Grade Linux

 

www.automotivelinux.org

 

최근에는 BMW와 폭스바겐(VolksWagen, VW) 그룹의 리서치센터도 활발하게 참여하는 모습을 보이는데, 아마 테슬라(Tesla)를 견제하기 위한 것이 아닌가 하는 생각이 듭니다. 어쨋든, 자동차 SW 및 유사 직군에 종사하는 사람들은 AGL에 대한 스터디가 어느정도 되어 있을 필요성이 있습니다.

 

AGL은 Tizen OS를 기반으로 합니다. Tizen OS는 삼성과 인텔이 시작한 모바일 OS로, Android와 IOS의 독점을 막기 위해 출시하였습니다. 그러나 당시 구글, 애플의 개발자 친화적 정책(지금은 아니지만 당시에는 Cotlin Swift 밀어주기, 어플리케이션 등록 절차 간소화 등) 과 마케팅 전략에 밀려 사용자 확보에 실패하였고, 결국 2018년을 마지막으로 삼성에서 Tizen OS 휴대폰 개발을 중단하면서, 역사의 뒤안길로 사라졌습니다.

 

그런데 AGL에서 Tizen IVI를 레퍼런스로 기반 프로젝트를 시작하여 이미 죽은 OS를 살려내고 있습니다. C 기반에 C++가 가미된 EPL 네이티브 앱, HTML5 기반에 CSS, 자바스크립트가 가미 된 웹 앱, .NET 기반의 C#, Xamarin UI Framework가 가미 된 .NET 앱으로 구성되어있으며, 전력을 적게 소비하면서도, 음성, 비전 등 고성능을 필요로 하는 하드웨어 제작에 특화되어 있다. 네이티브앱은 빠르고 쾌적한 속도를 보여줍니다. 이는 안드로이드처럼 Java 가상머신에 의존하지 않고, 처음부터 네이티브앱에 집중한 결과인 듯 합니다.


HTML5는 CSS, 자바스크립트와 함께 W3C 표준 웹 기술을 최대한 지원해서 다른 운영 체제나 브라우저 대비 호환성이 높습니다. 웹 앱을 위한 런타임 역시 브라우저와 거의 동일하므로 HTML5 호환성이 높아 기존의 웹 앱을 포팅하는 것도 용이하다는 장점도 존재합니다. 

 

2. AGL emulator 

AGL은 오픈소스로 소스코드를 내려 받아 환경에 맞게 빌드하여 사용할 수 있습니다. AGL Document 에는 에뮬레이션을 위한 여러가지 방법을 제시하고 있으며, 그 방법은 아래와 같습니다.

 

https://docs.automotivelinux.org/en/pike/#01_Getting_Started/01_Quickstart/01_Using_Ready_Made_Images/

 

AGL Documentation

Welcome to the Automotive Grade Linux (AGL) documentation. This page will provide a brief overview of the AGL Distribution and an introduction to selected topics that can help you get a quick start using AGL for development. What is Automotive Grade Linux?

docs.automotivelinux.org

  • QEMU를 이용하여 AGL을 에뮬레이션 하는 방법
  • 가상머신을 사용하여 AGL을 에뮬레이션 하는 방법
  • 라즈베리파이(Raspberry PI)를 사용하여 AGL을 에뮬레이션 하는 방법

그 외 다양한 방법들이 존재하는데, 이번 포스팅에서는 라즈베리파이를 사용하여 AGL을 에뮬레이션 하는 방법에 대해 설명드립니다. 매우 간단하게 업로드가 가능하기 때문에 환경 구축에 용이하며, AGL 관련 연구 혹은 IVI 취약점 분석, 진단 연구 등 다양하게 활용할 수 있습니다.

 

먼저 준비물은 아래와 같습니다.

 

1. 라즈베리파이 (4B+ 이상 모델 사용 권장)

2. Micro SD 카드 (16GB 이상, 64GB 이상 사용 권장)

3. SD 카드리더기

4. MINI HDMI 케이블

 

먼저 AGL 이미지 파일이 필요합니다. 소스코드를 라즈베리파이 환경 및 아키텍처(ARM)에 맞게 빌드하는 방법도 존재하나, AGL 자체적으로 라즈베리파이를 사용하여 AGL을 에뮬레이션 할 수 있도록 미리 빌드된 이미지 파일을 제공합니다. 아래의 링크를 통해 AGL 이미지 파일을 다운로드 받습니다.

 

https://download.automotivelinux.org/AGL/release/lamprey/12.1.17/raspberrypi4/deploy/images/raspberrypi4-64/

 

Index of /AGL/release/lamprey/12.1.17/raspberrypi4/deploy/images/raspberrypi4-64

 

download.automotivelinux.org

 

이제 다운받은 이미지를 라즈베리파이에 올릴 수 있도록 이미지를 복사합니다. 라즈베리파이는 커스텀 OS를 쉽게 업로드 할 수 있도록 imager 툴을 제공하고 있습니다. 하단 링크를 Raspberry Pi Imager를 다운받은 후 설치한 뒤 아래 그림과 같이 이미지를 복사합니다. 이미지는 MicroSD 카드에 복사해야 하며, 이를 위해 별도의 MicroSD 카드 리더기가 필요합니다. 

 

단 노트북에 리더기가 존재하는 경우 카드리더기가 별도로 필요가 없습니다.

 

https://www.raspberrypi.com/software/ 

 

 

쓰기가 완료되면 MicroSD 카드를 라즈베리파이에 장착한 뒤 전원을 인가하여 부팅하면, 아래 그림과 같이 AGL 을 에뮬레이션 할수 있습니다.

 

AGL을 이용하여 다양한 프로젝트를 진행할 수 있을 것 같습니다 :)