Menggunakan DebugFS di Android 12

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

Build userdebug memiliki cakupan pengujian yang lebih baik daripada build pengguna dan mendapatkan banyak diuji sepanjang siklus pengembangan. Rencana berikut meminimalkan perbedaan antara kedua jenis build sehubungan dengan akses DebugFS, dan memberikan manfaat berikut:

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

Akses debugf di build userdebug dikategorikan sebagai berikut ini:

  1. DebugFS inisialisasi file selama booting perangkat, seperti akses tulis ke file di DebugFS untuk mengaktifkan pengumpulan data debug.
  2. Pembuatan laporan bug: HAL dumpstate membaca file DebugFS saat DumpstateBoard() dipanggil oleh dumpstate. Ini informasi tambahan menjadi bagian dari laporan {i>bug<i}.
  3. Pengujian dan validasi khusus perangkat.

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

Kasus penggunaan Build userdebug Android 12
Inisialisasi file DebugFS satu kali, selama startup. Akses ini hanya terjadi sekali selama waktu booting. Dumpstate HAL melakukan hal ini selama inisialisasi HAL. Untuk memperoleh hal yang sama, init memasang DebugFS dalam build userdebug sebelum HAL melakukan inisialisasi. Init menelepon umount() di DebugFS saat perangkat telah menyelesaikan {i>booting<i}.
Pembuatan laporan bug: HAL dumpstate membaca 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 terpasang selama pemanggilan.
Pengujian dan validasi khusus perangkat {i>Root<i} dan {i>shell<i} Adb. Pasang DebugFS dari shell adb dengan akses root1.

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

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

Tindakan partner yang diperlukan

Partner harus memberlakukan hal berikut berdasarkan perubahan tersebut dalam Perangkat Android 12:

  • Membuat semua inisialisasi waktu booting DebugFS node 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 terapkan:
    • Pembuatan laporan bug (berasal dari HAL dumpstate)
    • Pengujian dan validasi (dapat diakses oleh adb root dan shell - pastikan bahwa DebugFS dipasang terlebih dahulu)

Developer dapat menetapkan properti persisten debug persist.dbg.keep_debugfs_mounted agar DebugFs tetap terpasang di memulai ulang pada userdebug dan build ing.

Tes kepatuhan GTS memastikan bahwa sistem file DebugFS tidak yang terpasang di build pengguna. Pernyataan neverallow kebijakan memastikan bahwa di perangkat diluncurkan di Android 12 atau yang lebih tinggi, proses yang tidak sah tidak disediakan akses ke DebugFs.