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 dalam build userdebug saat mereka mengembangkan kernel GKI, konfigurasi kernel CONFIG_DEBUG_FS diaktifkan di defconfig GKI. Jangan pernah memasang DebugFS dalam build pengguna untuk perangkat yang diluncurkan di Android 12.

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

  • Mencegah build userdebug agar tidak sengaja bergantung pada DebugFS untuk fungsi baru
  • Memastikan bahwa fungsi yang ada yang rusak karena tidak adanya DebugFS diketahui sejak awal siklus pengembangan

Akses debugfs 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 bugreport: HAL dumpstate membaca file DebugFS saat DumpstateBoard() dipanggil oleh dumpstate. Informasi ini menjadi bagian dari laporan bug.
  3. Pengujian dan validasi khusus perangkat.

Tabel berikut menjelaskan cara setiap kategori ini didukung di Android 12. Perhatikan bahwa hal berikut hanya berlaku untuk build userdebug karena DebugFS tidak dapat dipasang dalam 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 ini selama inisialisasi HAL. Untuk mengaktifkan hal yang sama, init akan memasang DebugFS dalam build userdebug sebelum HAL melakukan inisialisasi. Init memanggil umount() di DebugFS saat perangkat telah selesai melakukan 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 di-mount selama pemanggilan.
Pengujian dan validasi khusus perangkat Root dan shell adb. Pasang DebugFS dari adb shell 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 menerapkan hal berikut berdasarkan perubahan ini di perangkat Android 12:

  • Buat semua inisialisasi waktu booting 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 dipasang terlebih dahulu)

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

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