Android 12'de DebugFS'yi kullanma

Android 12 ile birlikte 5.4 sürümünden sonraki çekirdek sürümlerini kullanan cihazların GKI çekirdeğiyle birlikte gönderilmesi gerekir. İş ortaklarının GKI çekirdeğinde geliştirirken userdebug derlemelerinde DebugFS'e erişebilmesi için GKI defconfig'de çekirdek yapılandırması CONFIG_DEBUG_FS etkinleştirilir. Android 12'de kullanıma sunulan cihazlar için DebugFS'i kullanıcı derlemelerine hiçbir zaman bağlamayın.

Userdebug derlemeleri, kullanıcı derlemelerine kıyasla daha iyi test kapsamına sahiptir ve geliştirme döngüsü boyunca yoğun şekilde test edilir. Aşağıdaki plan, DebugFS erişimi açısından iki derleme türü arasındaki farkı en aza indirir ve aşağıdaki avantajları sağlar:

  • userdebug derlemelerinin yeni işlevler için yanlışlıkla DebugFS'e bağımlı olmasını engeller
  • DebugFS eksikliğinden dolayı bozulan mevcut işlevlerin geliştirme döngüsünün erken aşamalarında bilinmesini sağlar

userdebug derlemelerinde Debugfs erişimleri aşağıdaki gibi sınıflandırılır:

  1. Hata ayıklama veri toplamayı etkinleştirmek için DebugFS'teki bir dosyaya yazma erişimi gibi cihazın önyükleme sırasında DebugFS dosyası başlatma işlemleri.
  2. Hata raporu oluşturma: dumpstate HAL, DumpstateBoard() dumpstate tarafından çağrıldığında DebugFS dosyalarını okur. Bu bilgiler, hata raporunun bir parçası olur.
  3. Cihaza özgü test ve doğrulama.

Aşağıdaki tabloda bu üç kategorinin her birinin Android 12'de nasıl desteklendiği açıklanmaktadır. DebugFS, kullanıcı derlemelerinde monte edilemediğinden aşağıdakilerin yalnızca kullanıcı hata ayıklama derlemeleri için geçerli olduğunu unutmayın.

Kullanım alanı Android 12 userdebug derlemesi
Başlangıç sırasında tek seferlik DebugFS dosyası ilk kullanıma hazırlama. Bu erişim, önyükleme sırasında yalnızca bir kez gerçekleşir. Dumpstate HAL, bunu HAL ilk başlatılırken gerçekleştirir. Aynısını etkinleştirmek için, init, HAL başlatılmadan önce userdebug derlemelerinde DebugFS'ü bağlar. Init, cihazın önyüklemesi tamamlandığında DebugFS üzerinde umount()'i çağırır.
Hata raporu oluşturma: dumpstate HAL, hata raporunun bir parçası olan DebugFS dosyalarını okur. dumpstate (DumpstateDevice.cpp) tarafından çağrıldığında DumpstateBoard() içinde dumpstate HAL tarafından yapılır. dumpstate aracı (Android çerçevesinin bir parçasıdır), DebugFS çağrı sırasında DebugFS monte edilmesini sağlar.
Cihaza özgü test ve doğrulama Adb root ve kabuk. adb kabuğundan DebugFS dosyasını kök erişim1 ile bağlayın.

1adb shell'ten DebugFS'yi kök erişimiyle bağlamak için şu komutu kullanın:

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

Gerekli iş ortağı işlemleri

İş ortakları, Android 12 cihazlardaki bu değişikliklere göre aşağıdakileri uygulamalıdır:

  • DebugFS düğümlerinin tüm önyükleme zamanı ilklendirmelerinin, dumpstate HAL ilklendirmesi sırasında yapılmasını sağlayın. Bunun nasıl yapılacağına dair bir örnek için DNM: DebugFS dosyalarının önyükleme sırasında başlatılması örneği başlıklı makaleyi inceleyin.
  • Çalışma zamanında DebugFS erişimine izin vermeyin. Aşağıdaki istisnalar geçerlidir:
    • Hata raporu oluşturma (dumpstate HAL'den gelir)
    • Test ve doğrulama (adb root ve shell ile erişilebilir. DebugFS'nin önce monte edildiğinden emin olun.)

Geliştiriciler, kullanıcı hata ayıklama ve mühendislik derlemelerinde DebugFs'ın yeniden başlatmalarda bağlı kalmasını sağlamak için persist.dbg.keep_debugfs_mounted hata ayıklama kalıcı mülkünü ayarlayabilir.

GTS uygunluk testleri, DebugFS dosya sisteminin kullanıcı derlemelerinde monte edilmemesini sağlar. Sepolicy neverallow ifadeleri, Android 12 veya sonraki sürümlerde kullanıma sunulan cihazlarda yetkisiz işlemlerin DebugFs'a erişemediğinden emin olur.