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
필요한 파트너 작업
파트너는 Android 12 기기의 이러한 변경사항에 따라 다음 내용을 적용해야 합니다.
DebugFS
노드의 모든 부팅 시간 초기화가 dumpstate HAL 초기화 중에 발생하도록 합니다. 실행 방법에 관한 예시는 DNM:DebugFS
파일의 부팅 시간 초기화 예시를 참고하세요.- 런타임 시
DebugFS
액세스를 허용하면 안 됩니다. 다음과 같은 예외가 적용됩니다.- 버그 신고 생성(dumpstate HAL에서 제공됨)
- 테스트 및 검증(
adb root
및shell
에서 액세스 가능하므로 DebugFS가 먼저 마운트되도록 함)
개발자는 userdebug 및 eng 빌드에서 재부팅 시 DebugFs
가 마운트된 상태를 유지하도록 디버그 영구 속성 persist.dbg.keep_debugfs_mounted
를 설정할 수 있습니다.
GTS 규정 준수 테스트는 DebugFS
파일 시스템이 사용자 빌드에 마운트되지 않았는지 확인합니다. Sepolicy neverallow
문을 사용하면 Android 12 이상으로 출시되는 기기에서 승인되지 않은 프로세스에 DebugFs
액세스 권한이 제공되지 않습니다.