Android 커널은 업스트림 Linux 장기적 지원(LTS) 커널에 기반합니다. Google에서 LTS 커널은 Android 관련 패치와 결합하여 Android 일반 커널(ACK)이라고 하는 커널을 형성합니다.
최신 ACK(버전 5.4 이상)는 GKI 커널이라고도 합니다. GKI 커널은 하드웨어 제약이 없는 일반 코어 커널 코드와 GKI 모듈을 하드웨어별 공급업체 모듈로부터 분리하는 것을 지원합니다.
GKI 커널은 단일 칩 시스템(SoC) 및 보드 관련 코드를 포함하는 하드웨어별 공급업체 모듈과 상호작용합니다. GKI 커널과 공급업체 모듈 간의 상호작용은 공급업체 모듈에 필요한 함수 및 전역 데이터를 식별하는 기호 목록으로 구성된 커널 모듈 인터페이스(KMI)를 통해 사용하게 됩니다. 그림 1은 GKI 커널과 공급업체 모듈 아키텍처를 보여줍니다.
커널 용어집
이 섹션에는 커널 문서 전체에서 사용하는 용어가 포함되어 있습니다.
커널 유형
- Android 일반 커널(ACK)
- LTS 커널의 다운스트림이며, Android 커뮤니티에서 관심을 갖고 있으나 아직 Linux 메인라인 또는 LTS 커널로 병합되지 않은 패치를 포함하는 커널입니다. 최신 ACK(버전 5.4 이상)는 하드웨어 제약이 없는 일반 커널 코드와 하드웨어 제약이 없는 GKI 모듈의 분리를 지원하므로 GKI 커널이라고도 합니다.
- Android 오픈소스 프로젝트(AOSP) 커널
- Android 일반 커널을 참고하세요.
- 기능 커널
- 플랫폼 출시 기능의 구현이 보장되는 커널입니다. 예를 들어, Android 12에서는 android12-5.4와 android12-5.10 두 개의 기능 커널이 있었습니다. Android 12 기능은 4.19 커널로 백포팅될 수 없습니다. 기능 세트는 R에서 4.19로 출시되고 S로 업그레이드된 기기와 유사합니다.
- 일반 코어 커널
- 모든 기기에서 공통으로 사용하는 GKI 커널의 일부분입니다.
- 일반 커널 이미지(GKI) 커널
- 최신 ACK 커널(5.4 이상)입니다(현재 aarch64만 해당됨). 이 커널은 두 부분으로 구성됩니다. 모든 기기에 공통으로 적용되는 코드를 사용하는 코어 GKI 커널과 Google에서 개발한 GKI 모듈(관련 기기에 동적으로 로드할 수 있음)입니다.
- 커널 모듈 인터페이스(KMI) 커널
- GKI 커널을 참고하세요.
- 출시 커널
- 지정된 Android 플랫폼 버전에 맞는 기기를 출시하는 데 유효한 커널입니다. 예를 들어, Android 12의 유효한 출시 커널은 4.19, 5.4, 5.10이었습니다.
- 장기적 지원(LTS) 커널
- 2~6년 동안 지원되는 Linux 커널입니다. LTS 커널은 1년에 한 번 출시되며 각 Google ACK의 기초가 됩니다.
브랜치 유형
- ACK KMI 커널 브랜치
- GKI 커널이 빌드되는 브랜치입니다. 예를 들어, android12-5.10과 android13-5.15가 있습니다.
- Android-mainline
- Android 기능의 기본 개발 브랜치입니다. 새 LTS 커널이 업스트림으로 선언되면 상응하는 새 GKI 커널이 android-mainline에서 브랜치됩니다.
- Linux 메인라인
- 업스트림 Linux 커널용 기본 개발 브랜치로 LTS 커널을 포함합니다.
기타 용어
- 인증된 부팅 이미지
- 바이너리 형식(
boot.img
)으로 전달되어 기기에 플래시된 커널입니다. 인증서가 삽입되어 있기 때문에 인증된 이미지라고 하며, Google은 이를 통해 기기와 함께 Google 인증 커널이 제공되었음을 확인할 수 있습니다. - 동적 로드가 가능한 커널 모듈(DLKM)
- 기기 요구사항에 따라 기기 부팅 중에 동적으로 로드될 수 있는 모듈입니다. GKI와 공급업체 모듈은 모두 DLKM 유형입니다. DLKM은
.ko
형식으로 출시되며 드라이버일 수도 있고 다른 커널 기능을 제공할 수도 있습니다. - GKI 프로젝트
- 공급업체별 SoC 및 보드 지원으로부터 공통 코어 커널 기능을 로드가 가능한 모듈로 분리하여 커널 조각화를 해결하는 Google 프로젝트입니다.
- 일반 커널 이미지(GKI)
- Google에서 인증한 부팅 이미지로 ACK 소스 트리에서 빌드한 GKI 커널을 포함하며 Android 기기의 부팅 파티션에 플래시하는 데 적합합니다.
- KMI
- GKI 커널과 공급업체 모듈 사이의 인터페이스로, 이를 사용하면 공급업체 모듈을 GKI 커널과 별개로 업데이트할 수 있습니다. 이 인터페이스는 파트너별 기호 목록을 사용하여 공급업체/OEM 종속 항목으로 식별된 커널 함수와 전역 데이터로 구성됩니다.
- GKI 모듈
- Google에서 개발한 커널 모듈(관련 기기에 동적으로 로드할 수 있음)입니다. 이러한 모듈은 GKI 커널의 아티팩트로 빌드되며 GKI와 함께
system_dlkm_staging_archive.tar.gz
보관 파일로 제공됩니다. GKI 모듈은 커널 빌드 시간 키 쌍을 사용하여 Google에서 서명하며 함께 빌드된 GKI 커널과만 호환됩니다. - 공급업체 모듈
- 파트너가 개발한 하드웨어 관련 모듈로 SoC 및 기기별 기능을 포함합니다. 공급업체 모듈은 동적 로드가 가능한 커널 모듈의 한 유형입니다.
다음 단계
- Android 커널 개발을 처음 사용하는 경우 먼저 다음을 읽어보는 것이 좋습니다.
- 장기적으로 안정된 커널 - ACK에 피드되는 업스트림 LTS 커널의 배경
- Android 일반 커널 - ACK의 배경
- GKI 커널 개발이 처음인 경우 GKI 개발을 먼저 읽어보세요.
- 커널 버전 4.19 이하를 사용 중이고 관련 문서를 찾고 있다면 이전 커널(4.19 이하) 개요 섹션을 참고하세요.