Menggunakan DebugFS di Android 12

Perangkat yang diluncurkan dengan Android 12 menggunakan versi kernel yang lebih tinggi dari v5.4 harus dikirimkan dengan kernel GKI. Agar partner dapat mengakses DebugFS di build userdebug saat mereka mengembangkan di kernel GKI, konfigurasi kernel CONFIG_DEBUG_FS diaktifkan di defconfig GKI. Jangan pernah memasang DebugFS di build pengguna untuk perangkat yang diluncurkan di Android 12.

Build Userdebug memiliki cakupan pengujian yang lebih baik daripada build pengguna dan diuji secara intensif sepanjang siklus pengembangan. Paket berikut meminimalkan perbedaan antara dua tipe build sehubungan dengan akses DebugFS , dan memberikan manfaat berikut:

  • Mencegah build userdebug secara tidak sengaja bergantung pada DebugFS untuk fungsionalitas baru
  • Memastikan bahwa fungsionalitas yang ada yang rusak karena kurangnya DebugFS diketahui di awal siklus pengembangan

Akses debugfs di build userdebug dikategorikan sebagai berikut:

  1. Inisialisasi file DebugFS selama boot perangkat, seperti akses tulis ke file di DebugFS untuk mengaktifkan pengumpulan data debug.
  2. Pembuatan laporan bug: HAL DebugFS membaca file DebugFS saat DumpstateBoard() dipanggil oleh dumpstate . Informasi ini menjadi bagian dari laporan bug.
  3. Pengujian dan validasi khusus perangkat.

Tabel berikut menjelaskan bagaimana masing-masing dari ketiga kategori ini didukung di Android 12. Perhatikan bahwa hal berikut ini hanya berlaku untuk build userdebug karena DebugFS tidak dapat dipasang di build pengguna.

Gunakan kasus Build debug pengguna Android 12
Inisialisasi file DebugFS satu kali, selama startup . Akses ini hanya terjadi sekali selama waktu boot. Dumpstate HAL melakukan ini selama inisialisasi HAL. Untuk mengaktifkannya, init me-mount DebugFS di build userdebug sebelum HAL diinisialisasi. Init memanggil umount() pada DebugFS ketika perangkat telah menyelesaikan booting.
Pembuatan laporan bug : HAL DebugFS , yang menjadi bagian dari laporan bug. Dilakukan oleh dumpstate HAL dalam DumpstateBoard() saat dipanggil oleh dumpstate ( DumpstateDevice.cpp ). Alat dumpstate (bagian dari kerangka kerja Android) memastikan bahwa DebugFS dipasang selama pemanggilan.
Pengujian dan validasi khusus perangkat Akar dan cangkang adb. Pasang DebugFS dari shell adb dengan akses root 1 .

1 Untuk memasang DebugFS dari adb shell dengan akses root, gunakan perintah ini:

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

Tindakan Mitra yang Diperlukan

Mitra harus menerapkan hal berikut berdasarkan perubahan ini di perangkat Android 12:

  • Jadikan semua inisialisasi waktu boot dari node DebugFS terjadi selama inisialisasi HAL dumpstate. Untuk contoh cara melakukannya, lihat DNM: Contoh untuk inisialisasi waktu booting file DebugFS .
  • Jangan izinkan akses DebugFS selama runtime. Pengecualian berikut berlaku:
    • Pembuatan laporan bug (berasal dari HAL dumpstate)
    • Pengujian dan validasi (dapat diakses oleh adb root dan shell - pastikan DebugFS di-mount terlebih dahulu)

Pengembang dapat menyetel properti persisten debug persistent.dbg.keep_debugfs_mounted agar persist.dbg.keep_debugfs_mounted DebugFs terpasang di seluruh reboot pada userdebug dan eng build.

Tes kepatuhan GTS memastikan bahwa sistem file DebugFS tidak dipasang di build pengguna. Pernyataan kebijakan tidak pernah mengizinkan memastikan bahwa di perangkat yang diluncurkan di Android 12 atau lebih tinggi, proses tidak DebugFs neverallow