Android 커널 자주 묻는 질문(FAQ)

이 문서에는 일반 커널 이미지(GKI) 커널이라고도 하는 Android 커널에 관해 자주 묻는 질문(FAQ)이 포함되어 있습니다. GKI와 GKI 커널 용어에 익숙하지 않은 경우 커널 개요를 참고하세요.

커널 모듈 인터페이스(KMI) 기호 목록은 안정적인 커널에서 변경할 수 있나요?

기존 KMI에 영향을 미치지 않는 변경사항은 고정된 커널에 추가할 수 있습니다. 이러한 변경사항에는 새로 내보낸 함수와 기호 목록 항목이 포함됩니다. 자세한 내용은 기호 목록 관리를 참고하세요.

안정적인 커널에서 공급업체 모듈이 사용하는 구조를 변경할 수 있나요?

KMI 인터페이스의 일부인 구조는 고정된 KMI가 있는 커널에서 변경할 수 없습니다. KMI 고정 이전에 이러한 구조를 변경할 수 있습니다.

바이너리/소스 호환성을 중단하지 않는 한 커널을 변경할 수 있나요?

KMI에 영향을 미치지 않는 변경사항은 Android 관련 패치에 설명된 대로 적용할 수 있습니다.

GKI는 커널 구성을 어떻게 처리하나요?

커널 구성에 관한 자세한 내용은 gki_defconfig의 변경사항을 참고하세요.

기존 GKI 모듈 덮어쓰기에 관한 업스트림 버그 수정을 처리하려면 어떻게 해야 하나요?

Android 일반 커널(ACK)의 드라이버에 기반하여 공급업체 모듈을 만든다면 업스트림 및 ACK의 버그 수정이 모듈에 전파되도록 하는 작업은 개발자의 몫입니다. 일반적으로 Google에서 이러한 업데이트를 일관되게 제공할 수 있도록 수정 없이 GKI 커널과 GKI 모듈을 사용하는 것이 가장 좋습니다.

GKI 관련 테스트가 있나요?

인증 GKI 빌드가 설치되어 있는지 확인하고 출시별 GKI 요구사항을 적용하는 공급업체 테스트 도구 모음(VTS) 테스트가 있습니다. 예를 들어 부팅 헤더 v3를 위한 Android 12 VTS 테스트가 있으며 5.10 커널을 실행하는 기기에 필요한 파티션이 있는지 확인합니다.

기기 빌드용 프로젝트 defconfig 프래그먼트 파일을 만들려면 어떻게 해야 하나요?

많은 GKI 규정 준수 기기는 구성 프래그먼트를 사용하여 gki_defconfig 외에도 공급업체 모듈을 빌드하는 데 필요한 구성 옵션을 설명합니다. ACK 코드베이스의 일부인 예에는 Cuttlefish, DB845c가 포함됩니다. 프래그먼트를 최적화하기 위해 구성 옵션에 관한 수동 검사를 피할 방법은 없지만 커널 소스의 scripts/diffconfiggki_defconfiggki_defconfig+device.fragment의 결과를 비교하는 데 유용합니다.

modprobe에서 - 및 _을 동일하게 취급하는 문제를 해결할 수 있나요?

modprobe man 페이지에서는 다음과 같이 설명합니다. 'modprobe'가 Linux 커널에서 모듈을 지능적으로 추가하거나 삭제합니다. 편의상 모듈 이름의 _ 및 - 사이에는 차이가 없습니다(자동 밑줄 변환 수행됨).' GKI팀은 표준 업스트림 규칙을 준수하므로 공급업체 도구 또는 모듈 이름 지정 규칙은 이러한 준수를 고려해야 합니다.

내부용으로 debugfs를 사용 설정하려면 어떻게 해야 하나요?

debugfs를 사용 설정하는 방법에 관한 자세한 내용은 방해가 되는 다운스트림 디버그 기능을 참고하세요.

특정 모듈 구성이 사용 설정된 GKI 커널 간의 일치하지 않는 ABI를 해결하려면 어떻게 해야 하나요?

GKI 커널과 모듈 구성 간에 일치하지 않는 ABI는 암시적 모듈 구성 종속 항목을 나타냅니다. 여기서 모듈을 사용 설정하면 바이너리 구성이 결과 커널 이미지에 빌드됩니다. 경로를 확인하려면 Android 커널팀(kernel-team@android.com)에 문의하세요. 기호 목록이 결정되면 Issue Tracker에서 버그를 만들고 기호 목록에 변경사항을 업로드합니다.