Android 12'de DebugFS'yi Kullanma

v5.4'ün üzerindeki çekirdek sürümlerini kullanan Android 12 ile başlatılan cihazların GKI çekirdeğiyle birlikte gönderilmesi gerekir. İş ortaklarının, GKI çekirdeğinde geliştirme yaparken userdebug yapılarında DebugFS erişebilmesi için, GKI defconfig'inde CONFIG_DEBUG_FS çekirdek yapılandırması etkinleştirilir. Android 12'de başlatılan cihazlar için DebugFS asla kullanıcı yapılarına bağlamayın .

Userdebug derlemeleri, kullanıcı derlemelerinden 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 yapı türü arasındaki farkı en aza indirir ve şu avantajları sağlar:

  • Kullanıcı hata ayıklama derlemelerinin yeni işlevsellik için yanlışlıkla DebugFS bağımlı olmasını önler
  • DebugFS eksikliği nedeniyle bozulan mevcut işlevlerin geliştirme döngüsünün başlarında bilinmesini sağlar

Kullanıcı hata ayıklama yapılarındaki hata ayıklama erişimleri aşağıdaki şekilde kategorize edilir:

  1. Hata ayıklama verileri toplamayı açmak için DebugFS bir dosyaya yazma erişimi gibi, aygıt önyüklemesi sırasında DebugFS dosyası başlatmaları.
  2. Hata raporu oluşturma: Dumpstate HAL, DumpstateBoard() dumpstate tarafından çağrıldığında DebugFS dosyalarını okur. Bu bilgi hata raporunun bir parçası haline gelir.
  3. Cihaza özel 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ı derlemelerine eklenememesi nedeniyle aşağıdakilerin yalnızca kullanıcı hata ayıklama derlemeleri için geçerli olduğunu unutmayın.

Kullanım örneği Android 12 kullanıcı hata ayıklama derlemesi
Başlangıç ​​sırasında bir defalık DebugFS dosyalarının başlatılması . Bu erişim, önyükleme sırasında yalnızca bir kez gerçekleşir . Dumpstate HAL bunu HAL başlatma sırasında gerçekleştirir. Aynısını etkinleştirmek için init, HAL başlatılmadan önce kullanıcı hata ayıklama yapılarına DebugFS bağlar. Init aygıt önyüklemeyi tamamladığında DebugFS umount() öğesini çağırır.
Hata raporu oluşturma : Döküm durumu HAL, hata raporunun parçası haline gelen DebugFS dosyalarını okur. Dumpstate ( DumpstateDevice.cpp ) tarafından çağrıldığında DumpstateBoard() içindeki dumpstate HAL tarafından yapılır. Döküm durumu aracı (Android çerçevesinin bir parçası), DebugFS çağrı sırasında bağlanmasını sağlar.
Cihaza özel test ve doğrulama Adb kökü ve kabuğu. DebugFS adb kabuğundan root erişimiyle bağlayın 1 .

1 DebugFS root erişimiyle adb shell bağlamak için şu komutu kullanın:

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

Gerekli İş Ortağı Eylemleri

İş ortakları, Android 12 cihazlarındaki bu değişikliklere göre aşağıdakileri yürürlüğe koymalıdır:

  • DebugFS düğümlerinin tüm önyükleme zamanı başlatma işlemlerinin, döküm durumu HAL başlatma işlemi sırasında gerçekleşmesini sağlayın. Bunun nasıl yapılacağına ilişkin bir örnek için bkz . DNM: DebugFS dosyalarının önyükleme zamanında başlatılması örneği .
  • Çalışma zamanı sırasında DebugFS erişimine izin vermeyin. Aşağıdaki istisnalar geçerlidir:
    • Hata raporu oluşturma (çöp durumu HAL'den gelir)
    • Test etme ve doğrulama ( adb root ve shell tarafından erişilebilir - önce DebugFS'nin bağlandığından emin olun)

Geliştiriciler, DebugFs userdebug ve eng yapılarındaki yeniden başlatmalarda takılı kalmasını sağlamak için kalıcı hata ayıklama özelliğini persist.dbg.keep_debugfs_mounted olarak ayarlayabilir.

GTS uyumluluk testleri, DebugFS dosya sisteminin kullanıcı yapılarına bağlanmamasını sağlar. Sepolicy neverallow ifadeleri, Android 12 veya sonraki sürümlerde başlatılan cihazlarda, yetkisiz işlemlere DebugFs erişim sağlanmamasını sağlar.