อุปกรณ์ที่เปิดตัวด้วย Android 12 โดยใช้เคอร์เนลเวอร์ชันที่สูงกว่า v5.4 ต้องมาพร้อมกับเคอร์เนล GKI ระบบจะเปิดใช้การกำหนดค่าเคอร์เนล CONFIG_DEBUG_FS
ใน defconfig ของ GKI เพื่อให้พาร์ทเนอร์เข้าถึง DebugFS
ในบิลด์ userdebug ได้ขณะพัฒนาบนเคอร์เนล GKI
ไม่เคยต่อเชื่อม DebugFS
ในบิลด์สำหรับผู้ใช้สำหรับอุปกรณ์ที่เปิดตัวใน Android 12
บิลด์ Userdebug มีการครอบคลุมการทดสอบดีกว่าบิลด์สำหรับผู้ใช้ และได้รับการทดสอบอย่างหนักตลอดวงจรการพัฒนา แผนต่อไปนี้จะลดความแตกต่างระหว่างบิลด์ 2 ประเภทนี้ในแง่การเข้าถึง DebugFS
และมีประโยชน์ดังต่อไปนี้
- ป้องกันไม่ให้บิลด์ userdebug ขึ้นอยู่กับ
DebugFS
โดยไม่ตั้งใจสําหรับฟังก์ชันการทํางานใหม่ - ตรวจสอบว่าฟังก์ชันการทำงานที่มีอยู่ซึ่งใช้งานไม่ได้เนื่องจากไม่มี DebugFS เป็นที่รู้จักตั้งแต่เนิ่นๆ ในวงจรการพัฒนา
การเข้าถึง Debugfs ในบิลด์ userdebug จะจัดหมวดหมู่ดังนี้
- การเปิดใช้งานไฟล์
DebugFS
ในระหว่างการบูตอุปกรณ์ เช่น สิทธิ์เขียนไฟล์ในDebugFS
เพื่อเปิดการเก็บรวบรวมข้อมูลการแก้ไขข้อบกพร่อง - การสร้างรายงานข้อบกพร่อง: HAL ของสถานะการถ่ายโอนข้อมูลจะอ่านไฟล์
DebugFS
เมื่อdumpstate
เรียกใช้DumpstateBoard()
ข้อมูลนี้จะเป็นส่วนหนึ่งของรายงานข้อบกพร่อง - การทดสอบและการรับรองเฉพาะอุปกรณ์
ตารางต่อไปนี้อธิบายการรองรับแต่ละหมวดหมู่เหล่านี้ใน Android 12 โปรดทราบว่าข้อมูลต่อไปนี้มีผลกับบิลด์ userdebug เท่านั้น เนื่องจากจะไม่สามารถเมานต์ DebugFS
ในบิลด์สำหรับผู้ใช้ได้
กรณีการใช้งาน | บิลด์ userdebug ของ Android 12 |
---|---|
การเริ่มต้นไฟล์ DebugFS แบบครั้งเดียวระหว่างการเริ่มต้น
การเข้าถึงนี้จะเกิดขึ้นเพียงครั้งเดียวในระหว่างการบูต
|
HAL ของ Dumpstate จะดำเนินการนี้ระหว่างการเริ่มต้น HAL หากต้องการเปิดใช้การดำเนินการดังกล่าว ให้ init ทำการต่อเชื่อม DebugFS ในบิลด์ userdebug ก่อน HAL จะเริ่มต้น
Init โทรหา umount() ใน DebugFS เมื่ออุปกรณ์บูตเสร็จแล้ว
|
การสร้างรายงานข้อบกพร่อง: HAL ของสถานะการถ่ายโอนข้อมูลจะอ่านไฟล์ DebugFS ซึ่งจะเป็นส่วนหนึ่งของรายงานข้อบกพร่อง
|
ดำเนินการโดย HAL ของ dumpstate ภายใน 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
ทั้งหมดเกิดขึ้นในระหว่างการเริ่มต้น HAL ของสถานะการถ่ายโอน ดูตัวอย่างวิธีดำเนินการได้ที่ DNM: ตัวอย่างการเริ่มต้นไฟล์DebugFS
ในเวลาบูต - ไม่อนุญาตให้
DebugFS
เข้าถึงระหว่างรันไทม์ จึงมีข้อยกเว้นดังต่อไปนี้- การสร้างรายงานข้อบกพร่อง (มาจาก HAL ของสถานะการถ่ายโอนข้อมูล)
- การทดสอบและการตรวจสอบ (เข้าถึงได้โดยใช้
adb root
และshell
- ตรวจสอบว่าได้เมานต์ DebugFS ก่อน)
นักพัฒนาแอปสามารถตั้งค่าพร็อพเพอร์ตี้การแก้ไขข้อบกพร่องแบบถาวร persist.dbg.keep_debugfs_mounted
เพื่อทำให้ระบบมายังต์ DebugFs
ต่อไปได้แม้จะมีการรีบูตในรุ่น userdebug และ eng
การทดสอบการปฏิบัติตามข้อกำหนด GTS ช่วยให้มั่นใจว่าระบบจะไม่มาสก์ไฟล์ระบบ DebugFS
ในบิลด์ของผู้ใช้ คำสั่ง Sepolicy neverallow
ช่วยให้มั่นใจว่าอุปกรณ์ที่เปิดใช้ Android 12 ขึ้นไปจะไม่ให้สิทธิ์เข้าถึง DebugFs
แก่กระบวนการที่ไม่ได้รับอนุญาต