2025년 3월 27일부터 AOSP를 빌드하고 기여하려면 aosp-main
대신 android-latest-release
를 사용하는 것이 좋습니다. 자세한 내용은 AOSP 변경사항을 참고하세요.
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/diffconfig
는 gki_defconfig
및 gki_defconfig+device.fragment
의 결과를 비교하는 데 유용합니다.
modprobe에서 - 및 _을 동일하게 취급하는 문제를 해결할 수 있나요?
modprobe man 페이지에서는 다음과 같이 설명합니다. 'modprobe
'가 Linux 커널에서 모듈을 지능적으로 추가하거나 삭제합니다. 편의상 모듈 이름의 _ 및 - 사이에는 차이가 없습니다(자동 밑줄 변환 수행됨).' GKI팀은 표준 업스트림 규칙을 준수하므로 공급업체 도구 또는 모듈 이름 지정 규칙은 이러한 준수를 고려해야 합니다.
내부용으로 debugfs를 사용 설정하려면 어떻게 해야 하나요?
debugfs를 사용 설정하는 방법에 관한 자세한 내용은 방해가 되는 다운스트림 디버그 기능을 참고하세요.
특정 모듈 구성이 사용 설정된 GKI 커널 간의 일치하지 않는 ABI를 해결하려면 어떻게 해야 하나요?
GKI 커널과 모듈 구성 간에 일치하지 않는 ABI는 암시적 모듈 구성 종속 항목을 나타냅니다. 여기서 모듈을 사용 설정하면 바이너리 구성이 결과 커널 이미지에 빌드됩니다. 경로를 확인하려면 Android 커널팀(kernel-team@android.com)에 문의하세요. 기호 목록이 결정되면 Issue Tracker에서 버그를 만들고 기호 목록에 변경사항을 업로드합니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-07-27(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-27(UTC)"],[],[],null,["# Android kernel frequently asked questions\n\nThis document contains frequently asked questions about the Android kernel,\nknown also as the Generic Kernel Image (GKI) kernel. If you are unfamiliar with\nGKI and GKI kernel terminology, refer to the\n[Kernel overview](/docs/core/architecture/kernel).\n\nCan Kernel Module Interface (KMI) symbol lists be changed in a stable kernel?\n-----------------------------------------------------------------------------\n\nChanges that don't affect the existing KMI can be added to kernels that are\nfrozen. These changes include new exported functions and symbol list entries.\nFor details, see [Manage symbol lists](/docs/core/architecture/kernel/stable-kmi#managing-symbol-lists).\n\nCan I change structures used by vendor modules in a stable kernel?\n------------------------------------------------------------------\n\nStructures that are part of a KMI interface can't be changed in kernels with a\nfrozen KMI. Prior to KMI freeze, these structures can be changed.\n\nCan I change the kernel as long as I don't break binary or source compatibility?\n--------------------------------------------------------------------------------\n\nChanges that don't affect the KMI can be made as described in [Android-specific\npatches](/docs/core/architecture/kernel/kernel-code#android-specific-patches).\n\nHow does GKI handle kernel configuration?\n-----------------------------------------\n\nFor information on kernel configuration, refer to the\n[Changes to gki_defconfig](/docs/core/architecture/kernel/kernel-code#changes-to-gki-defconfig).\n\nHow do I handle upstream bug fixes for overwrites to existing GKI modules?\n--------------------------------------------------------------------------\n\nIf you create a vendor module based on a driver in\n[Android Common Kernel (ACK)](/docs/core/architecture/kernel/android-common),\nit's up to you to ensure that bug fixes from upstream and ACK are propagated\nto your module. Generally, it's in your best interest to use the GKI kernel and\nGKI modules without modification so these updates are provided consistently\nby Google.\n\nAre there GKI specific tests?\n-----------------------------\n\nThere are [Vendor Test Suite (VTS)](/docs/compatibility/vts) tests that verify\nthat a certified GKI build is installed and also to enforce per-release GKI\nrequirements. For example, there are Android 12 VTS tests for boot header v3\nand to verify the existence of required partitions in a device running a 5.10\nkernel.\n\nHow do I create the project defconfig fragment file for device builds?\n----------------------------------------------------------------------\n\nMany GKI-compliant devices use a config fragment to describe the configuration\noptions needed, in addition to `gki_defconfig`, to build the vendor modules.\nExamples that are part of the ACK codebase include Cuttlefish and DB845c.\nThere's no way to avoid some manual examination of configuration options\nto optimize the fragment, but `scripts/diffconfig` from the kernel sources\nis useful for comparing the results of `gki_defconfig` and\n`gki_defconfig+device.fragment`.\n\nIs there a workaround for modprobe treating - and _ as equivalent?\n------------------------------------------------------------------\n\nThe\n[modprobe man page](https://man7.org/linux/man-pages/man8/modprobe.8.html)\ncontains this description: \"`modprobe` intelligently adds\nor removes a module from the Linux kernel: note that for convenience, there is\nno difference between _ and - in module names (automatic underscore conversion\nis performed).\" The GKI team adheres to the standard upstream convention, so\nvendor tools or module naming conventions must take this adherence into account.\n\nHow do I enable debugfs for internal use?\n-----------------------------------------\n\nFor details on enabling debugfs, see [intrusive downstream debug\nfeatures](/docs/core/architecture/kernel/debugging-with-gki#intrusive-downstream-debug-features).\n\nHow can I resolve mismatched ABIs between the GKI kernel with a specific module configuration enabled?\n------------------------------------------------------------------------------------------------------\n\nMismatched ABIs between the GKI kernel and module configuration represents an\nimplicit module config dependency, where enabling a module causes a binary\nconfig to be built into the resulting kernel image. Reach out to the Android\nkernel team\n([kernel-team@android.com](mailto:kernel-team@android.com)) to determine a path\nforward. After the list of symbols is determined, create a bug in the\n[Issue Tracker](https://issuetracker.google.com/components/1124381) and upload\na change to the symbol list."]]