Używanie DebugFS w Androidzie 12

Urządzenia z Androidem 12 z jądrem systemu muszą być przesłane z jądrem GKI w wersjach wyższych niż 5.4. Dzięki temu partnerzy mogą korzystać z DebugFS w kompilacjach debugowania użytkowników podczas tworzenia interfejsu GKI. jądro, konfiguracja jądra CONFIG_DEBUG_FS jest włączona w konfiguracji GKI defconfig. Nigdy nie podłączaj DebugFS w kompilacjach użytkowników na urządzeniach na Androidzie 12.

Kompilacje Userdebug mają lepszy zasięg testów niż kompilacje użytkowników i często uzyskują i testować je w całym cyklu programowania. Poniższy plan minimalizuje różnica między 2 typami kompilacji w odniesieniu do dostępu do DebugFS oraz zapewnia następujące korzyści:

  • Zapobiega przypadkowemu tworzeniu błędów debugowania użytkownika w zależności od klucza DebugFS pod kątem nowych funkcji
  • Zapewnia, że wszystkie dotychczasowe funkcje, które nie działają z powodu braku DebugFS, jest znany na początku cyklu rozwojowego,

Dostępy Debugfs w kompilacjach userdebug są klasyfikowane jako następujące:

  1. Plik DebugFS został zainicjowany podczas rozruchu urządzenia, np. uprawnienia do zapisu pliku w usłudze DebugFS w celu włączenia zbierania danych debugowania.
  2. Generowanie raportu o błędzie: HAL stanu zrzutu odczytuje pliki DebugFS, gdy Pole DumpstateBoard() jest wywoływane przez funkcję dumpstate. Ten te informacje stają się częścią raportu o błędzie.
  3. Testowanie i weryfikacja pod kątem konkretnych urządzeń.

W tabeli poniżej opisujemy, jak każda z tych kategorii jest która działa na Androidzie 12. Pamiętaj, że parametr poniższe zastosowanie ma zastosowanie tylko do kompilacji debugowania użytkownika, ponieważ funkcji DebugFS nie można w kompilacjach użytkowników.

Przypadek użycia Kompilacja debugowania użytkownika na Androidzie 12
Jednorazowe zainicjowanie plików DebugFS podczas uruchamiania. Dostęp ten jest możliwy tylko raz podczas uruchamiania. HAL Dumpstate wykonuje tę czynność podczas inicjowania HAL. Aby je włączyć, init podłącza interfejs DebugFS w kompilacjach userdebug przed zainicjowaniem listy HAL. Init zadzwoni pod numer umount() w: DebugFS, gdy zakończyło się uruchomienie urządzenia.
Generowanie raportów o błędach: lista HAL odczytuje dane z raportu o błędzie. DebugFS plików, które stały się częścią raportu o błędzie. Wykonane przez listę HAL stanu zrzutu w ciągu DumpstateBoard() w przypadku wywołania przez stan dumpstate (DumpstateDevice.cpp). Narzędzie dumpstate (część platformy Androida) gwarantuje, że DebugFS punkty montowania w trakcie wywoływania.
Testowanie i weryfikacja pod kątem konkretnych urządzeń Główny element systemu Adb i powłoka. Zamontuj DebugFS z powłoki adb za pomocą polecenia dostęp do roota1.

1Aby podłączyć urządzenie DebugFS z poziomu adb shell za pomocą dostęp do roota, wpisz to polecenie:

adb shell mount -t debugfs debugfs /sys/kernel/debug.

Wymagane działania partnera

W oparciu o te zmiany partnerzy muszą wprowadzić następujące Urządzenia z Androidem 12:

  • Zadbaj o to, aby podczas rozruchu były wykonywane wszystkie inicjacje DebugFS węzła podczas inicjowania kodu HAL ze stanem zrzutu. Aby dowiedzieć się, jak to zrobić, zobacz DNM: Przykład inicjowania plików DebugFS podczas rozruchu
  • Nie zezwalaj na dostęp aplikacji DebugFS podczas działania. Wyjątki zastosuj:
    • Generowanie raportu o błędzie (pochodzi z pliku HAL Dumpstate)
    • Testowanie i weryfikacja (dostępne dla użytkowników adb root i shell – upewnij się, że najpierw podłączysz DebugFS).

Deweloperzy mogą ustawić właściwość trwałą debugowania persist.dbg.keep_debugfs_mounted, aby zachować połączenie z DebugFs restartów podczas debugowania użytkownika i kompilacji eng.

Testy zgodności GTS pozwalają sprawdzić, czy system plików DebugFS nie jest w kompilacjach użytkowników. Instrukcje Sepolicy neverallow zapewniają, że w urządzeniach uruchamianych na Androidzie 12 lub nowszym, nieautoryzowane procesy nie są uwzględniane dostęp do usługi DebugFs.