Urządzenia, które będą uruchamiane z Androidem 12 i używają jądra w wersji 5.4 lub nowszej, muszą być dostarczane z jądrem GKI. Aby partnerzy mogli korzystać z DebugFS
w kompilacji userdebug podczas tworzenia wersji jądra GKI, konfiguracja jądra CONFIG_DEBUG_FS
jest włączona w defconfig GKI.
Nigdy nie montuj DebugFS
w kompilacji użytkownika na urządzeniach z Androidem 12.
Wersje Userdebug mają lepsze pokrycie testów niż wersje dla użytkowników i są intensywnie testowane w trakcie całego cyklu programowania. Ten plan minimalizuje różnice między tymi 2 typami wersji pod względem dostępu DebugFS
i zapewnia te korzyści:
- Zapobieganie przypadkowemu uzależnieniu wersji kompilowanych przez użytkowników od
DebugFS
w przypadku nowych funkcji - zapewnia, że wszelkie istniejące funkcje, które nie działają z powodu braku DebugFS, są znane na wczesnym etapie cyklu rozwojowego;
Dostępy debugfs w kompilacji userdebug są podzielone na następujące kategorie:
- Inicjowania pliku
DebugFS
podczas uruchamiania urządzenia, na przykład dostępu do pliku w kataloguDebugFS
w celu włączenia zbierania danych debugowania. - Generowanie raportu o błędzie: interfejs HAL dumpstate odczytuje pliki
DebugFS
, gdyDumpstateBoard()
zostanie wywołany przezdumpstate
. Te informacje są częścią raportu o błędzie. - testowanie i weryfikacja na konkretnym urządzeniu.
W tabeli poniżej opisano, jak te 3 kategorie są obsługiwane w Androidzie 12. Pamiętaj, że te informacje dotyczą tylko wersji w userdebug, ponieważ DebugFS
nie można zamontować w wersjach dla użytkowników.
Przypadek użycia | kompilacja userdebug Androida 12, |
---|---|
Jednorazowe inicjowanie plików DebugFS podczas uruchamiania.
Ten dostęp następuje tylko raz podczas uruchamiania.
|
Robi to interfejs Dumpstate HAL podczas inicjalizacji. Aby włączyć tę funkcję, przed zainicjowaniem HAL należy użyć init mounts DebugFS w kompilacji userdebug.
Init wywołuje umount() na DebugFS po zakończeniu uruchamiania urządzenia.
|
Generowanie raportu o błędzie: HAL dumpstate odczytuje pliki DebugFS , które staną się częścią raportu o błędzie.
|
Wykonywane przez moduł HAL dumpstate w ramach DumpstateBoard() , gdy zostanie wywołane przez dumpstate (DumpstateDevice.cpp).
Narzędzie dumpstate (element platformy Android) zapewnia, że DebugFS
zostanie zamontowany podczas wywołania.
|
Testowanie i weryfikowanie na konkretnych urządzeniach | Adb root i shell. Zamontuj DebugFS w powłoce adb z dostępem roota1.
|
1 Aby zamontować DebugFS
z adb shell
z dostępem roota, użyj tego polecenia:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Wymagane działania partnera
W związku z tymi zmianami partnerzy muszą wprowadzić na urządzeniach z Androidem 12 następujące zmiany:
- Wszystkie inicjalizacje węzłów
DebugFS
podczas uruchamiania powinny odbywać się podczas inicjalizacji HAL dumpstate. Przykładowy sposób wykonania tej czynności znajdziesz w artykule DNM: Przykład inicjalizacji plikówDebugFS
podczas uruchamiania. - Nie zezwalaj aplikacji
DebugFS
na dostęp podczas działania. Obowiązują te wyjątki:- Generowanie raportu o błędzie (pochodzi z dumpstate HAL)
- Testowanie i weryfikacja (dostęp do nich mają
adb root
ishell
– upewnij się, że najpierw zamontowano DebugFS).
Deweloperzy mogą ustawić trwałą właściwość debugowania persist.dbg.keep_debugfs_mounted
, aby DebugFs
była dostępna po ponownym uruchomieniu w przypadku kompilacji userdebug i eng.
Testy zgodności GTS sprawdzają, czy system plików DebugFS
nie jest zamontowany w kompilacji użytkownika. Instrukcje Sepolicy neverallow
zapewniają, że na urządzeniach z Androidem 12 lub nowszym nieautoryzowane procesy nie mają dostępu do DebugFs
.