Android 커널 자주 묻는 질문

이 문서에는 GKI(Generic Kernel Image) 커널이라고도 하는 Android 커널에 대해 자주 묻는 질문이 포함되어 있습니다. GKI 및 GKI 커널 용어에 익숙하지 않은 경우 커널 개요 를 참조하십시오.

안정적인 커널에서 KMI(Kernel Module Interface) 기호 목록을 변경할 수 있습니까?

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

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

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

바이너리/소스 호환성을 깨뜨리지 않는 한 커널을 변경할 수 있습니까?

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

GKI는 커널 구성을 어떻게 처리합니까?

커널 구성에 대한 정보는 변경 사항 gki_defconfig 를 참조하십시오.

기존 GKI 모듈에 대한 덮어쓰기에 대한 업스트림 버그 수정을 어떻게 처리합니까?

Android ACK(Common Kernel) 의 드라이버를 기반으로 공급업체 모듈을 생성하는 경우 업스트림 및 ACK의 버그 수정이 모듈에 전파되도록 하는 것은 사용자의 책임입니다. 일반적으로 GKI 커널 및 GKI 모듈을 수정하지 않고 사용하여 이러한 업데이트를 Google에서 일관되게 제공하는 것이 가장 좋습니다.

GKI 특정 테스트가 있습니까?

인증된 GKI 빌드가 설치되었는지 확인하고 릴리스별 GKI 요구 사항을 적용하는 VTS(Vendor Test Suite) 테스트가 있습니다. 예를 들어 부팅 헤더 v3에 대한 Android 12 VTS 테스트와 5.10 커널을 실행하는 기기에 필요한 파티션이 있는지 확인하는 테스트가 있습니다.

장치 빌드를 위한 프로젝트 defconfig 조각 파일을 어떻게 생성합니까?

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

modprobe가 - 및 _를 동등하게 취급하는 해결 방법이 있습니까?

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

내부 사용을 위해 debugfs를 활성화하려면 어떻게 해야 합니까?

debugfs 활성화에 대한 자세한 내용은 침입 다운스트림 디버그 기능 을 참조하십시오.

특정 모듈 구성이 활성화된 GKI 커널 간에 일치하지 않는 ABI를 어떻게 해결할 수 있습니까?

GKI 커널과 모듈 구성 간의 일치하지 않는 ABI는 암시적 모듈 구성 종속성을 나타내며, 여기서 모듈을 활성화하면 결과 커널 이미지에 바이너리 구성이 빌드됩니다. Android 커널 팀( kernel-team@android.com )에 연락하여 앞으로의 경로를 결정하세요. 기호 목록이 결정되면 Issue Tracker 에서 버그를 생성하고 기호 목록에 변경 사항을 업로드하십시오.