Menggunakan DebugFS di Android 12

Perangkat yang diluncurkan dengan Android 12 menggunakan versi kernel yang lebih tinggi dari v5.4 harus dikirimkan bersama kernel GKI. Agar partner dapat mengakses DebugFS di build userdebug saat mereka mengembangkan kernel GKI, konfigurasi kernel CONFIG_DEBUG_FS diaktifkan di defconfig GKI. Jangan pernah memasang DebugFS di build pengguna untuk perangkat yang diluncurkan pada 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 kedua 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 apa pun yang rusak karena kurangnya DebugFS diketahui di awal siklus pengembangan

Akses debugf dalam build userdebug dikategorikan sebagai berikut:

  1. Inisialisasi file DebugFS selama booting perangkat, seperti akses tulis ke file di DebugFS untuk mengaktifkan pengumpulan data debug.
  2. Pembuatan laporan bug: HAL dumpstate membaca file DebugFS ketika 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 tabel berikut hanya berlaku untuk build userdebug karena DebugFS tidak dapat dipasang di build pengguna.

Kasus penggunaan Pembuatan debug pengguna Android 12
Inisialisasi file DebugFS satu kali, saat startup . Akses ini hanya terjadi satu kali selama waktu boot. Dumpstate HAL melakukan ini selama inisialisasi HAL. Untuk mengaktifkan hal yang sama, init memasang DebugFS di build userdebug sebelum HAL diinisialisasi. Init memanggil umount() pada DebugFS ketika perangkat telah menyelesaikan booting.
Pembuatan laporan bug : HAL dumpstate membaca file DebugFS , yang menjadi bagian dari laporan bug. Dilakukan oleh dumpstate HAL dalam DumpstateBoard() saat dipanggil oleh dumpstate ( DumpstateDevice.cpp ). Alat dumpstate (bagian dari framework Android) memastikan bahwa DebugFS dipasang selama pemanggilan.
Pengujian dan validasi khusus perangkat Adb root dan shell. Pasang DebugFS dari adb shell 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 pada perangkat Android 12:

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

Pengembang dapat menyetel properti persisten debug persist.dbg.keep_debugfs_mounted agar DebugFs tetap terpasang saat reboot pada userdebug dan build eng.

Pengujian kepatuhan GTS memastikan bahwa sistem file DebugFS tidak dipasang di build pengguna. Pernyataan sepolicy neverallow memastikan bahwa pada perangkat yang diluncurkan pada Android 12 atau lebih tinggi, proses yang tidak sah tidak diberikan akses ke DebugFs .