임베디드 리눅스 커널 커뮤니티

김민세·2022년 10월 23일
1
post-thumbnail

리눅스 커널 커뮤니티

우리가 접하는 대부분의 리눅스 커널 코드는 리눅스 커널 커뮤니티에서 만들어진다.
리눅스 커널 커뮤니티 리눅스 커널 개발의 핵심으로 리눅스 커널 자체의 알고리즘을 비롯해 논리적 오류나 문제점을 개선하는 패치를 논의하고 관리한다.

  • 버그 수정 패치
  • 코드 리팩터링
  • 문서화
  • 신규 알고리즘

리눅스 커널 버전과 코드 내역은 리눅스 커널 아카이브 사이트에서 확인 할 수 있다.

위 그림을 보면 longterm, strable, mainline이 있는 것을 볼 수 있다.
longterm은 안전화된 리눅스 커널 버전을 의미한다.
리눅스 커널 커뮤니티에서 관리하는 안전화된 리눅스 커널 버전을 LTS(Long Term Support)라고 한다. 최신 리눅스 커널 버전에 적용된 버그 수정 패치는 LTS 리눅스 커널 버전에 꾸준히 반영 된다.


CPU 벤더

리눅스 커널과 관련된 다른 주요 단체로 CPU 벤더가 있다. CPU 벤더는 CPU를 설계하는 회사를 뜻한다

대표회사

  • ARM
  • 인텔
  • IBM

CPU 벤더도 리눅스 커널 개발에 참여한다. 리눅스 커널의 핵심 기능은 CPU에 따라 구현 방식이 다르기 때문이다.

리눅스 커널의 핵심 기능

  • 시스템 콜
  • 익솁션
  • 컨텍스트 스위칭


위 그림은 CPU 아키텍처와 리눅스 드라이버 계층도이다. 보다시피 리눅스 커널은 다양한 CPU 아키텍처와 함께 구동된다. 그런데 커널의 핵심 동작은 서로 다른 CPU 어셈블리 코드로 구현돼 있다.
리눅스 커널은 다양한 CPU 아키텍처를 지원하는 소스 트리를 갖추고 있으며 사용하고자 하는 CPU 아키텍처에 맞춰 빌드하면 이에 맞는 커널 이미지를 생성할 수 있다.


SoC 벤더

SoC는 System-on-chip의 약자로 하나의 컴퓨터 또는 다른 전자 시스템들의 모든 구성 요소를 통합한 집적회로를 의미한다. SoC를 개발할 때는 먼저 리눅스 커널 버전을 선택한다. 그리고 CPU 벤더로부터 툴 체인을 받아 자신의 SoC 스펙에 맞게 리눅스 커널 코드를 수정하거나 드라이버를 추가한다.

대표 개발 업체와 제품명

  • 브로드컴: BCM
  • 삼성전자: 엑시노스
  • 퀄컴: 스냅드래곤
  • 인텔: 아톰, 무어필드
  • 미디어텍: 헬리오
  • 엔비디아: 테그라


SoC 벤더에서 개발하는 리눅스의 전체 구조는 위 그림과 같다. 가장 오른쪽 부분에서 볼 수 있듯이 리룩스는 커널을 사용해 SoC 하드웨어를 제어하는 디바이스 드라이버를 작성한다.

자사의 SoC 하드웨어에 맞게 설계돼 있으니 서로 다른 디바이스 드라이버가 있다.


보드 벤더 및 OEM

보드 벤더와 OEM(Original Equipment Manufacturer) 업체는 SoC가 릴리스한 리눅스 커널 코드를 받아 제품 스펙과 시나리오에 맞게 제품을 개발한다

보드 벤더는 라즈베리 파이 재단과 같은 업체이고 OEM은 삼성전자, LG전자와 같이 상용제품을 개발하는 업체를 뜻한다.

보드 벤더를 이해를 위해 라즈베리 파이로 예시로 들자면, 보드 벤더인 라즈베리 파이 재단은 SoC 벤더인 브로드컴이 릴리스한 리눅스 커널 코드를 받아 라즈베리 파이의 스펙과 시나리오에 맞게 범용 보드로 개발하는 것이다.

OEM은 다른 회사의 최종 제품에 사용되는 시스템이나 구성 요소를 생산한다.

예를 들어, 컴퓨터 제조업체는 일반적으로 프로세서 및 소프트웨어와 같은 OEM 부품을 판매 솔루션에 번들로 제공하거나 통합한다.

OEM을 통해 시간과 비용을 절약할 수 있다. 기업은 써드파티 구성 요소를 사용해 각 3차 부품이나 시스템을 개발하는 대신 핵심 비즈니스에 집중할 수 있다.


위 그림은 보드 벤더 및 OEM이 개발하는 리눅스 드라이버 계층도이다.

제품마다 다양한 시나리오와 컨셉이 있을 수 있다. 제품 컨셉이 카메라이면 카메라 센서를 제어하는 드라이버를 제작하고, 자동차 내비게이션이면 그래픽 드라이버를 개발한다.


profile
김민세

2개의 댓글

comment-user-thumbnail
2022년 10월 24일

와 이것을 보고 리눅스에 대한 깨달음을 얻었습니다

1개의 답글