v5.4 이상의 커널 버전을 사용하여 Android 12로 출시되는 기기는 GKI 커널과 함께 제공되어야 합니다. 파트너가 GKI 커널에서 개발하는 동안 userdebug 빌드에서 DebugFS에 액세스할 수 있도록 커널 구성 CONFIG_DEBUG_FS는 GKI defconfig에서 사용 설정됩니다.
Android 12로 출시되는 기기의 경우 사용자 빌드에 DebugFS를 마운트하면 안 됩니다.
Userdebug 빌드는 사용자 빌드보다 테스트 범위가 넓으며 개발 주기 내내 테스트를 많이 받습니다. 다음 계획은 DebugFS 액세스와 관련하여 두 빌드 유형 간의 차이를 최소화하고 다음과 같은 이점을 제공합니다.
userdebug 빌드에서 새로운 기능을 추가할 때 실수로 DebugFS에 종속되지 않도록 합니다.
개발 주기 초기에 DebugFS의 부재로 인해 손상된 기존 기능이 발견되도록 합니다.
userdebug 빌드에서 Debugfs 액세스는 다음과 같이 분류됩니다.
기기 부팅 중 DebugFS 파일 초기화. 디버그 데이터 수집을 사용 설정하기 위해 DebugFS의 파일에 대한 쓰기 액세스를 예로 들 수 있습니다.
버그 신고 생성. dumpstate에서 DumpstateBoard()를 호출하면 dumpstate HAL은 DebugFS 파일을 읽습니다. 이 정보는 버그 신고의 일부가 됩니다.
기기별 테스트 및 검증
다음 표에서는 이러한 세 카테고리가 각각 Android 12에서 지원되는 방식을 설명합니다. 다음은 userdebug 빌드에만 적용됩니다. DebugFS는 사용자 빌드에 마운트할 수 없기 때문입니다.
사용 사례
Android 12 userdebug 빌드
시작 시 일회성 DebugFS 파일 초기화.
이 액세스는 부팅 시간에 한 번만 발생합니다.
dumpstate HAL은 HAL 초기화 중에 이를 실행합니다. 동일하게 사용 설정하려면 init는 HAL을 초기화하기 전에 userdebug 빌드에 DebugFS를 마운트합니다.
기기 부팅이 완료되면 Init는 DebugFS에서 umount()를 호출합니다.
버그 신고 생성: dumpstate HAL은 버그 신고의 일부가 되는 DebugFS 파일을 읽습니다.
dumpstate에서 호출할 때 DumpstateBoard() 내의 dumpstate HAL에서 실행합니다(DumpstateDevice.cpp).
Android 프레임워크의 일부인 dumpstate 도구는 호출 중에 DebugFS가 마운트되도록 합니다.
기기별 테스트 및 검증
adb 루트 및 셸. 루트 액세스 권한1으로 adb 셸에서 DebugFS를 마운트합니다.
1루트 액세스 권한으로 adb shell에서 DebugFS를 마운트하려면 다음 명령어를 사용하세요.
adb shell mount -t debugfs debugfs /sys/kernel/debug
테스트 및 검증(adb root 및 shell에서 액세스 가능하므로 DebugFS가 먼저 마운트되도록 함)
개발자는 userdebug 및 eng 빌드에서 재부팅 시 DebugFs가 마운트된 상태를 유지하도록 디버그 영구 속성 persist.dbg.keep_debugfs_mounted를 설정할 수 있습니다.
GTS 규정 준수 테스트는 DebugFS 파일 시스템이 사용자 빌드에 마운트되지 않았는지 확인합니다. Sepolicy neverallow 문을 사용하면 Android 12 이상으로 출시되는 기기에서 승인되지 않은 프로세스에 DebugFs 액세스 권한이 제공되지 않습니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 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,["# Use DebugFS in Android 12\n\nDevices that launch with Android 12 using kernel\nversions higher than v5.4 are required to ship with the GKI kernel. So that\npartners can access `DebugFS` in userdebug builds while they develop on the GKI\nkernel, the kernel config `CONFIG_DEBUG_FS` is enabled in the GKI defconfig.\n**Never mount `DebugFS` in user builds** for devices\nlaunching on Android 12.\n\n\nUserdebug builds have better test coverage than user builds and get heavily\ntested throughout the development cycle. The following plan minimizes the\ndifference between the two build types with respect to `DebugFS` access, and\nprovides these benefits:\n\n- Prevents userdebug builds from accidentally depending on `DebugFS` for new functionality\n- Ensures that any existing functionality that's broken by the lack of DebugFS is known early in the development cycle\n\n\nDebugfs accesses **in userdebug builds** are categorized as\nfollows:\n\n1. `DebugFS` file initializations during device boot, such as a write access to a file in `DebugFS` to turn on debug data collection.\n2. Bugreport generation: The dumpstate HAL reads `DebugFS` files when `DumpstateBoard()` is invoked by `dumpstate`. This information becomes part of the bug report.\n3. Device-specific testing and validation.\n\nThe following table describes how each of these three categories is\nsupported in Android 12. Note that the\nfollowing only applies to userdebug builds since `DebugFS` can't be\nmounted in user builds.\n\n| Use case | Android 12 userdebug build |\n|-------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **One-time `DebugFS` files initialization, during startup** . This access **happens only once** during boot time. | Dumpstate HAL performs this during HAL initialization. To enable the same, init mounts `DebugFS` in userdebug builds before the HAL initializes. `Init` calls `umount()` on `DebugFS` when the device has completed booting. |\n| **Bugreport generation** : The dumpstate HAL reads `DebugFS` files, which become part of the bug report. | Done by dumpstate HAL within `DumpstateBoard()` when invoked by dumpstate ([DumpstateDevice.cpp](https://cs.android.com/android/platform/superproject/+/android-latest-release:device/google/trout/hal/dumpstate/1.1/DumpstateDevice.cpp)). The dumpstate tool (part of the Android framework) ensures that `DebugFS` mounts during the invocation. |\n| **Device-specific testing and validation** | Adb root and shell. Mount `DebugFS` from the adb shell with root access^1^. |\n\n\n^1^To mount `DebugFS` from `adb shell` with\nroot access, use this command:\n\n`adb shell mount -t debugfs debugfs /sys/kernel/debug`.\n| **Note:**\n|\n| - **Android 12: There aren't any new APIs for accessing the\n| dumpstate HAL**.\n| - **Android 12: New clients don't have access** to the dumpstate HAL.\n| - Only the dumpstate HAL process and vendor-modprobe tool can access `DebugFS` for Android 12 launching devices, since the kernel modules it loads might create `DebugFS` files.\n\nRequired partner actions\n------------------------\n\n\nPartners must enact the following based on these changes in\nAndroid 12 devices:\n\n- Make all boot time initializations of `DebugFS` nodes happen during the dumpstate HAL initialization. For an example of how to do this, see [DNM:\n Example for boot time initialization of `DebugFS` files](https://android-review.googlesource.com/c/platform/hardware/interfaces/+/1426054).\n- **Don't allow `DebugFS` access during runtime. The following exceptions\n apply:**\n - Bugreport generation (comes from the dumpstate HAL)\n - Testing and validation (accessible by `adb root` and `shell` - ensure that DebugFS is mounted first)\n\nDevelopers can set the debug persistent property\n`persist.dbg.keep_debugfs_mounted` to keep `DebugFs` mounted across\nreboots on userdebug and eng builds.\n\nGTS compliance tests ensure that the `DebugFS` filesystem isn't\nmounted in user builds. Sepolicy `neverallow` statements ensure that in devices\nlaunching on Android 12 or higher, unauthorized processes aren't provided\naccess to `DebugFs`."]]