อุปกรณ์ที่เปิดตัวด้วย Android 12 ที่ใช้เคอร์เนลเวอร์ชันที่สูงกว่า v5.4 จะต้องจัดส่งพร้อมกับเคอร์เนล GKI เพื่อให้คู่ค้าสามารถเข้าถึง DebugFS
ในรุ่น userdebug ในขณะที่พัฒนาบนเคอร์เนล GKI ได้ การกำหนดค่าเคอร์เนล CONFIG_DEBUG_FS
จะถูกเปิดใช้งานใน GKI defconfig อย่าเมานต์ DebugFS
ในบิลด์ผู้ใช้ สำหรับอุปกรณ์ที่เปิดตัวบน Android 12
บิลด์ Userdebug มีความครอบคลุมการทดสอบดีกว่าบิลด์ที่ผู้ใช้ได้รับการทดสอบอย่างหนักตลอดวงจรการพัฒนา แผนต่อไปนี้จะลดความแตกต่างระหว่างบิลด์ทั้งสองประเภทที่เกี่ยวข้องกับการเข้าถึง DebugFS
และให้ประโยชน์เหล่านี้:
- ป้องกันไม่ให้ build userdebug เกิดขึ้นโดยบังเอิญโดยขึ้นอยู่กับ
DebugFS
สำหรับฟังก์ชันการทำงานใหม่ - ตรวจสอบให้แน่ใจว่าฟังก์ชันการทำงานที่มีอยู่ใดๆ ที่เสียหายเนื่องจากการไม่มี DebugFS เป็นที่รู้จักตั้งแต่ต้นของวงจรการพัฒนา
การเข้าถึง Debugfs ใน build ของ userdebug มีการแบ่งประเภทดังนี้:
- การเริ่มต้นไฟล์
DebugFS
ระหว่างการบู๊ตอุปกรณ์ เช่น การเข้าถึงการเขียนไฟล์ในDebugFS
เพื่อเปิดการรวบรวมข้อมูลการดีบัก - การสร้างรายงานข้อบกพร่อง: dumpstate HAL อ่านไฟล์
DebugFS
เมื่อDumpstateBoard()
ถูกเรียกใช้โดยdumpstate
ข้อมูลนี้จะกลายเป็นส่วนหนึ่งของรายงานข้อผิดพลาด - การทดสอบและการตรวจสอบเฉพาะอุปกรณ์
ตารางต่อไปนี้จะอธิบายวิธีการรองรับแต่ละหมวดหมู่ใน Android 12 ทั้ง 3 ประเภทนี้ โปรดทราบว่าข้อมูลต่อไปนี้ใช้กับบิลด์ userdebug เท่านั้นเนื่องจากไม่สามารถเมานต์ DebugFS
ในบิลด์ผู้ใช้ได้
กรณีการใช้งาน | โครงสร้างการแก้ไขข้อบกพร่องผู้ใช้ Android 12 |
---|---|
การเริ่มต้นไฟล์ DebugFS เพียงครั้งเดียวระหว่างการเริ่มต้นระบบ . การเข้าถึงนี้ เกิดขึ้นเพียงครั้งเดียว ระหว่างเวลาบูต | Dumpstate HAL ดำเนินการนี้ในระหว่างการเตรียมใช้งาน HAL หากต้องการเปิดใช้งานสิ่งเดียวกัน ให้ init ติดตั้ง DebugFS ใน userdebug builds ก่อนที่ HAL จะเริ่มต้น Init เรียก umount() บน DebugFS เมื่ออุปกรณ์บูทเสร็จแล้ว |
การสร้างรายงานข้อบกพร่อง : dumpstate HAL อ่านไฟล์ DebugFS ซึ่งกลายเป็นส่วนหนึ่งของรายงานข้อบกพร่อง | เสร็จสิ้นโดย dumpstate HAL ภายใน DumpstateBoard() เมื่อเรียกใช้โดย dumpstate ( DumpstateDevice.cpp ) เครื่องมือ dumpstate (ส่วนหนึ่งของเฟรมเวิร์ก Android) ช่วยให้แน่ใจว่า DebugFS ติดตั้งระหว่างการเรียกใช้ |
การทดสอบและการตรวจสอบเฉพาะอุปกรณ์ | รูท Adb และเชลล์ เมานต์ DebugFS จากเชลล์ adb ด้วยการเข้าถึงรูท 1 |
1 หากต้องการเมานต์ DebugFS
จาก adb shell
ด้วยการเข้าถึงรูท ให้ใช้คำสั่งนี้:
adb shell mount -t debugfs debugfs /sys/kernel/debug
การดำเนินการของพันธมิตรที่จำเป็น
พาร์ทเนอร์จะต้องดำเนินการต่อไปนี้โดยอิงตามการเปลี่ยนแปลงเหล่านี้ในอุปกรณ์ Android 12
- ทำให้การเริ่มต้นเวลาบูตทั้งหมดของโหนด
DebugFS
เกิดขึ้นในระหว่างการเตรียมใช้งาน dumpstate HAL สำหรับตัวอย่างวิธีดำเนินการนี้ โปรดดู DNM: ตัวอย่างสำหรับการเริ่มต้นเวลาบูตของไฟล์DebugFS
- ไม่อนุญาตให้เข้าถึง
DebugFS
ในระหว่างรันไทม์ มีข้อยกเว้นต่อไปนี้:- การสร้างรายงานข้อบกพร่อง (มาจาก dumpstate HAL)
- การทดสอบและการตรวจสอบ (เข้าถึงได้โดย
adb root
และshell
- ตรวจสอบให้แน่ใจว่าติดตั้ง DebugFS ก่อน)
นักพัฒนาสามารถตั้งค่าคุณสมบัติถาวรของการแก้ไขข้อบกพร่องที่คง persist.dbg.keep_debugfs_mounted
เพื่อให้ DebugFs
ติดตั้งระหว่างการรีบูตบน userdebug และ eng builds
การทดสอบการปฏิบัติตามข้อกำหนด GTS ช่วยให้มั่นใจได้ว่าระบบไฟล์ DebugFS
ไม่ได้ติดตั้งในบิลด์ผู้ใช้ คำสั่ง Sepolicy neverallow
ช่วยให้มั่นใจได้ว่าในอุปกรณ์ที่เปิดตัวบน Android 12 ขึ้นไป กระบวนการที่ไม่ได้รับอนุญาตจะไม่ได้รับสิทธิ์เข้าถึง DebugFs