Sử dụng DebugFS trong Android 12

Các thiết bị khởi chạy Android 12 sử dụng phiên bản kernel cao hơn v5.4 phải đi kèm với kernel GKI. Để các đối tác có thể truy cập DebugFS trong các bản dựng userdebug trong khi họ phát triển trên nhân GKI, cấu hình kernel CONFIG_DEBUG_FS được bật trong defconfig GKI. Không bao giờ gắn DebugFS vào bản dựng của người dùng đối với các thiết bị khởi chạy trên Android 12.

Bản dựng Userdebug có phạm vi kiểm tra tốt hơn bản dựng của người dùng và được kiểm tra kỹ lưỡng trong suốt chu kỳ phát triển. Kế hoạch sau đây giảm thiểu sự khác biệt giữa hai loại bản dựng liên quan đến quyền truy cập DebugFS và cung cấp các lợi ích sau:

  • Ngăn chặn việc vô tình xây dựng userdebug tùy thuộc vào DebugFS để có chức năng mới
  • Đảm bảo rằng mọi chức năng hiện có bị hỏng do thiếu DebugFS đều được biết sớm trong chu kỳ phát triển

Quyền truy cập gỡ lỗi trong bản dựng userdebug được phân loại như sau:

  1. Khởi tạo tệp DebugFS trong quá trình khởi động thiết bị, chẳng hạn như quyền ghi vào tệp trong DebugFS để bật thu thập dữ liệu gỡ lỗi.
  2. Tạo báo cáo lỗi: HAL dumpstate đọc các tệp DebugFS khi DumpstateBoard() được gọi bởi dumpstate . Thông tin này trở thành một phần của báo cáo lỗi.
  3. Kiểm tra và xác nhận dành riêng cho thiết bị.

Bảng sau đây mô tả cách hỗ trợ từng danh mục trong số ba danh mục này trong Android 12. Lưu ý rằng nội dung sau chỉ áp dụng cho các bản dựng userdebug vì không thể gắn DebugFS trong các bản dựng người dùng.

Trường hợp sử dụng Bản dựng gỡ lỗi người dùng Android 12
Khởi tạo tệp DebugFS một lần, trong khi khởi động . Quyền truy cập này chỉ xảy ra một lần trong thời gian khởi động. Dumpstate HAL thực hiện điều này trong quá trình khởi tạo HAL. Để kích hoạt tính năng tương tự, init gắn DebugFS vào bản dựng userdebug trước khi HAL khởi chạy. Init gọi umount() trên DebugFS khi thiết bị khởi động xong.
Tạo báo cáo lỗi : HAL dumpstate đọc các tệp DebugFS , tệp này trở thành một phần của báo cáo lỗi. Được thực hiện bởi dumpstate HAL trong DumpstateBoard() khi được dumpstate gọi ( DumpstateDevice.cpp ). Công cụ dumpstate (một phần của khung Android) đảm bảo rằng DebugFS sẽ được gắn kết trong quá trình gọi.
Kiểm tra và xác nhận dành riêng cho thiết bị Adb gốc và vỏ. Gắn DebugFS từ adb shell với quyền truy cập root 1 .

1 Để gắn DebugFS từ adb shell với quyền truy cập root, hãy sử dụng lệnh này:

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

Hành động bắt buộc của đối tác

Đối tác phải ban hành những nội dung sau dựa trên những thay đổi này trên thiết bị Android 12:

  • Thực hiện tất cả quá trình khởi tạo thời gian khởi động của các nút DebugFS trong quá trình khởi tạo HAL trạng thái kết xuất. Để biết ví dụ về cách thực hiện việc này, hãy xem DNM: Ví dụ về khởi tạo thời gian khởi động của tệp DebugFS .
  • Không cho phép truy cập DebugFS trong thời gian chạy. Các trường hợp ngoại lệ sau đây được áp dụng:
    • Tạo báo cáo lỗi (đến từ HAL dumpstate)
    • Kiểm tra và xác thực (có thể truy cập bằng adb rootshell - đảm bảo rằng DebugFS được gắn trước)

Các nhà phát triển có thể đặt thuộc tính liên tục gỡ persist.dbg.keep_debugfs_mounted để giữ cho DebugFs được gắn kết trong các lần khởi động lại trên các bản dựng userdebug và eng.

Kiểm tra tuân thủ GTS đảm bảo rằng hệ thống tệp DebugFS không được gắn vào các bản dựng của người dùng. Câu lệnh neverallow riêng biệt đảm bảo rằng trong các thiết bị khởi chạy trên Android 12 trở lên, các quy trình trái phép sẽ không được cấp quyền truy cập vào DebugFs .